Xserverに公開しているwordpressサイトを同じXserverへ移転することになりました。
元サーバーからバックアップをとって、新サーバーへインポートするだけ!簡単!
と思っていたのですがパーミッション周りでトラブル見舞われました。その備忘録です。
一番最後に「権限を一括で変更する魔法のコマンド」を紹介していますので、お急ぎの方はスクロールダウン!
移転手順は簡単!
同じレンタルサーバー内での移転には一時的にサイトが見られなくなります。可能なら他のレンタルサーバーなどへ移転するか、一度他のサーバーを経由して2度移転作業をするとダウンタイムを作らずに移転できます。
他のサーバーを経由しての移転も考えたのですが、依頼者から一時的にサイトダウンしても良いと了承いただいたこと、同じレンタルサーバーで完結するほうがサーバーの環境が同じなのでトラブルが少ないだろうと考えての作業です。
手順は簡単で
- 元のサーバーからウェブサイトの公開ディレクトリごとバックアップを取る。
- 元のMySQLをエクスポートして必要箇所を書き換え。
- 移転先のサーバーへFTPでアップロード、MySQLのデータをインポート。
- サーバー管理ページから、元サーバーからドメインを削除、移転先サーバーへドメインを設定。
作業後1時間ほどで反映されるだろうと、放置して待ちます。
ところが数時間たっても403のエラー表示。一部のページは表示できたのですが、CSSが適用されてなかったり、画像が表示されていなかったり…
原因はパーミッション!
すぐにファイルのパーミッションだと気づきFTPクライアントソフトで確認。するとインポートしたディレクトリとファイルの権限が全て「711!」に。適切にアップロードできていれば、ディレクトリは755などでファイルは644。
やばい予感がしてきました。
xserverのディレクトリは/home/[ユーザーID]/○○○○○○.com/public_html/はデフォルトで711です。
今回/home/[user-id]/ 以下全てをアップロードしたことで、全ファイル・ディレクトリが711になってしまったのか…と想像します。が、今はそんな原因のことよりもこの状況をすぐにでも解決しなければなりません。
使っているFTPクライアントはPanicのTransmit。使いやすくて便利な愛用アプリなのですが、今回ばかりはPanicというブランド名が憎く見えてきます。(注:Panicにはなんの責任もありません)
最初に思いついたのは、FTPクライアントの機能で特定ディレクトリ下のパーミッションを一括で変更する方法。
ただこれでは、ディレクトリもファイルも全て同じ権限になってしまいます。「ディレクトリは755」「ファイルは644」と条件をつけての変更がしたいのです。
全て手作業で権限変更しなければならないのか….?ファイル総数は16,000超え…。泣きそうです。
サイズ: 1,922,628,179 バイト(1.96 GB)、16,289項目の合計
今回のサイトは、自分のサイトではなく友人企業のサイト。長時間表示できない状態で放置はできません。冷や汗が出てきました。
SSHで接続して黒い画面で戦うこと!
心を落ち着けて方法を考えます。
「XSERVERってSSH接続できたな…」
そうです、あの黒い画面でコードを1、2行書いてエンターキーを小指で気持ちよく叩けば一瞬で解決です!
ということで、おまたせしました!対処の方法です。
XSERVERへSSHで接続する
XSERVERはデフォルトではSSH接続できません。管理ページからSSH接続を許可する必要があります。
方法はこちら「SSH設定」
設定が済んだら、秘密の鍵をダウンロードして設置します。
#.sshディレクトリの作成(.sshディレクトリがなければ)
$ mkdir ~/.ssh
#ファイルの移動
$ mv ~/Downloads/xxxx.key ~/.ssh/
移動した秘密の鍵のファイル名を他の鍵と被らないように変更します。今回は「id_xserver.rsa」にしました。
#.sshに移動
$cd ~/.ssh/
#名前の変更
$mv xxxx.key id_xserver.rsa
つづいて.sshディレクトリと秘密の鍵のパーミッションを変更します。
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_xserver.rsa
XSERVERへSSHで接続します。
$ ssh -l サーバーID -i id_xserver.rsa サーバーID.xsrv.jp -p 10022
パスフレーズを聞かれるので、SSH設定時に設定したパスフレーズを入力します。
Enter passphrase for key 'id_sample.rsa':
これで接続できます。
権限を一括で変更する魔法のコマンド
さて、ここからが本題。ディレクトリとファイルのパーミッションを一括で変更します。
今回はディレクトリは755、ファイルは644にしたいと思います。
サイトを公開しているディレクトリへ移動します。xxxx.comの部分をご自身のドメインに変更してください。
$ cd ~/xxxx.com/public_html/
public_html以下のディレクトリを755に、ファイルを644に変更します。
// 現在のディレクトリ配下のディレクトリの権限を一括変更する
find . -type d -exec chmod 755 {} +
// 現在のディレクトリ配下のファイルの権限を一括変更する
find . -type f -exec chmod 644 {} +
これで完了です!
無事にwordpressで作られたサイトの移転が完了しました。
今回のようなケースは稀かもしれませんが、トラブルに見舞われた方の助けになればと嬉しく思います。