はじめに。
- ドメインはそのままで、サーバを引っ越す。1つのVPSに Nginx も PHP も MariaDB も全部入っている。データベースが MySQL から MariaDB へ変更する以外、引越し元と引越し先でサーバ内容は全く同じ。
- WordPress のファイル、DB はプラグイン BackWPup で作成したものを使用して復元する。
- 引越し先のサーバは構築済みで、後は現在の引越し元の WordPress ファイルと DB を引越し先サーバへ持っていくだけ。
- 構築時にサンプルの WordPress を作成している。
- 構築時に引っ越し元と同じ内容で DB を作成している。
今回、上記のことを行った記録を取りたいと思います。
はじめに。BackWPup の設定とバックアップファイル
- DB は全テーブルバックアップ
- ファイルは基本的に除外無しですべてバックアップ
- 保存先は DropBox
これを、DropBox から手元の Mac にダウンロードしました。
189.7 MB 程の Zip ファイルとなりました。
引っ越し作業1. バックアップファイルのアップロード
Mac から引越し先 VPS へアップロードします。
scp コマンドを使います。
# ファイルをアップロード # -p: ファイルの更新時間、アクセス時間、モードを保持 # -P: 転送先ポート # -i identity_file scp -p -i identity_file -P port local/path/to/file user@host:remote/path/to/directory/
参考
- 【SCP】Mac から Linux にディレクトリ指定でファイルをアップロードするコマンド – oki2a24
- 【 scp 】コマンド――リモートマシンとの間でファイルをコピーする:Linux基本コマンドTips(81) – @IT
実際
$ scp -p -i ~/.ssh/conoha -P 22 /Users/oki2a24/Downloads/backwpup_K5RV57SX01_1_2018-06-15_05-10-02.zip username@192.0.2.0:/tmp/ Enter passphrase for key '/Users/oki2a24/.ssh/conoha': backwpup_K5RV57SX01_1_2018-06-15_05-10-02.zip 100% 181MB 6.4MB/s 00:28 $
以降、引越し先サーバでの作業となります。
アップロードした Zip ファイルを展開します。
$ mkdir wp $ mv backwpup_K5RV57SX01_1_2018-06-15_05-10-02.zip wp/backwpup_K5RV57SX01_1_2018-06-15_05-10-02.zip $ cd wp $ unzip -q backwpup_K5RV57SX01_1_2018-06-15_05-10-02.zip
引っ越し作業2. DB の復元
状況確認等に使用するコマンド
# ログイン mysql -u wp_db_user -p wp_db # テーブル一覧表示 show tables; # DB をファイルからインポート mysql -u db_user -p db_name < db_file.sql
実際の風景が次となります。
ファイルから DB へインポートし、できたことを確認しています。
$ mysql -u wp_db_user -p wp_db < wp_db.sql Enter password: $ $ mysql -u wp_db_user -p wp_db Enter password: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 65 Server version: 10.3.7-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [wp_db]> show tables; +-------------------------------+ | Tables_in_wp_db | +-------------------------------+ | wp_commentmeta | | wp_comments | | wp_links | | wp_nginxchampuru | | wp_options | | wp_postmeta | | wp_posts | | wp_term_relationships | | wp_term_taxonomy | | wp_termmeta | | wp_terms | | wp_usermeta | | wp_users | | wpoki2a24_commentmeta | | wpoki2a24_comments | | wpoki2a24_links | | wpoki2a24_nginxchampuru | | wpoki2a24_options | | wpoki2a24_postmeta | | wpoki2a24_posts | | wpoki2a24_term_relationships | | wpoki2a24_term_taxonomy | | wpoki2a24_termmeta | | wpoki2a24_terms | | wpoki2a24_usermeta | | wpoki2a24_users | | wpoki2a24_yarpp_related_cache | +-------------------------------+ 27 rows in set (0.001 sec) MariaDB [wp_db]>
引っ越し作業3. ファイルの復元
引越し先サーバ構築時に作成したテストの WordPress のファイルをディレクトリから退避し、バックアップファイルを展開します。
作業にあたり、パーミッションで問題が発生するため、root ユーザで作業しました。
# mv /srv/wordpress/ /srv/wordpress_old/ # mkdir /srv/wordpress # mv /tmp/wp/backwpup_K5RV57SX01_1_2018-06-15_05-10-02.zip /srv/wordpress/backwpup_K5RV57SX01_1_2018-06-15_05-10-02.zip # cd /srv/wordpress/ # unzip -q backwpup_K5RV57SX01_1_2018-06-15_05-10-02.zip #
あとで直しました (後述) が、ミスをしています。ディレクトリ、ファイル所有者を変更し忘れる、というミスを><。。。
引っ越し作業4. ドメインの DNS レコード設定変更
お名前.com でドメインを管理しております。
次のように、設定変更画面まで大変煩雑な手順でたどり着きます。すなおに進もうとして、うっかりドメイン契約を更新するよう誘導されましたので注意です!
- お名前.com Navi へログイン
- 上部メニューのドメインをクリック
- 上部メニューの DNS > ドメインのDNS関連機能設定 > 次へ >
- DNS関連機能設定-ドメイン一覧画面。内部ドメイン一覧から選択し、次へ進む
- DNSレコード設定を利用する、の、設定する
DNSレコード設定
以下以外、すべて無効としました。
ホスト名 | TYPE | TTL | VALUE | 優先 | 状態 | 削除 |
---|---|---|---|---|---|---|
oki2a24.com | A | 300 | 192.0.2.0 | 有効 | ||
www.oki2a24.com | A | 300 | 192.0.2.0 | 有効 |
引っ越し作業5. 引っ越し完了の確認
tail -f /var/log/nginx/access.log
でアクセスがあることを確認しました。- WordPress 管理画面 > BackWPup > 設定 > 情報タブ、から、サーバ内容が引越し先となっていることを確認しました。
サーバ内容を確認していて、次の内容が気になりました。
サーバーの自己接続
期待された HTTP レスポンスではありません:ステータスコード: 405
Server: nginx/1.14.0
Date: Fri, 15 Jun 2018 05:45:18 GMT
Content-type: text/html
Content-length: 173
Content: < html> < head>< title>405 Not Allowed< /title>< /head> < body bgcolor=”white”> < center>< h1>405 Not Allowed< /h1>< /center> < hr>< center>nginx/1.14.0< /center> < /body> < /html>
※ そのまま引用すると HTML が展開されてしまいますのであえて開始タグに半角スペースを入れています。
気になって、メディアのアップロードをしてみましたところ、エラー><。
ああ、そういえば、SELinux を有効にしていたのでした。
引っ越し作業 extra 1. SELinux 設定
2018年6月20日追記: 追記した時点において、Conoha ではインスタンス作成時から SELinux はオフになっており、オンにして再起動するとログインできなくなりました><。
root ユーザで次のコマンドを実行しました。
semanage fcontext -a -t httpd_sys_content_t "/srv/wordpress(/.*)?" semanage fcontext -a -t httpd_sys_script_exec_t "/srv/wordpress/wp-config\.php" semanage fcontext -a -t httpd_sys_rw_content_t "/srv/wordpress/wp-content(/.*)?" semanage fcontext -a -t httpd_sys_script_exec_t "/srv/wordpress/.*\.php" semanage fcontext -a -t httpd_sys_rw_content_t "/srv/wordpress/wp-content/plugins(/.*)?" semanage fcontext -a -t httpd_sys_rw_content_t "/srv/wordpress/wp-content/themes(/.*)?" semanage fcontext -a -t httpd_sys_rw_content_t "/srv/wordpress/wp-content/upgrade(/.*)?" semanage fcontext -a -t httpd_sys_rw_content_t "/srv/wordpress/wp-content/uploads(/.*)?" semanage fcontext -a -t httpd_sys_script_exec_t "/srv/wordpress/wp-includes/.*\.php" restorecon -Rv /srv/wordpress systemctl restart php-fpm
私は SELinux 素人ですけれども、Ansible の playbook で command モジュールを使用して設定しておりますので、そのままコピペで設定し直しができました。ラッキー♪
と思って再度確認しましたが、ダメ><。。。あれれ?
引っ越し作業 extra 2. ディレクトリ、ファイル所有者の変更
ああ、ファイルの復元をしたときに、ディレクトリとファイルの所有者を変更し忘れておりました><。
cd /srv/ chown nginx:nginx -R wordpress/
これで、メディアのアップロードに成功いたしました!
ただし、引っ越し作業5. 引っ越し完了の確認で行ったサーバの自己接続は未だにレスポンスコード 405 です><。
これは置いておいて、進みます。
引っ越し作業 6. 引越し先サーバ構築時に作成したファイルを削除
削除はなんとなく避けたい気持ちになりますので、/tmp ディレクトリへ移し、時が過ぎれば自然消滅するようにしました。
mv /srv/wordpress_old/ /tmp/wordpress_old/
引っ越し作業 7. 引越し先サーバ構築時に作成したテスト WordPress のテーブルを削除
これはバッサリ削除いたします。
テストのテーブルは prefix が wp_、本物のテーブルは wpoki2a24_、当然テストのテーブルを削除します。
# ログイン mysql -u wp_db_user -p wp_db # テーブル削除 drop table wp_commentmeta; drop table wp_comments; drop table wp_links; drop table wp_nginxchampuru; drop table wp_options; drop table wp_postmeta; drop table wp_posts; drop table wp_term_relationships; drop table wp_term_taxonomy; drop table wp_termmeta; drop table wp_terms; drop table wp_usermeta; drop table wp_users; # 確認 show tables;
引っ越し作業 8. 引越し元サーバをシャットダウン
- VPS を停止した。
- それでも引越し先で WordPress が元気に動いていることを確認した。
おわりに。引越し元と引越し先
- 引越し元: ServersMan@VPS Entryプラン
- OS: CentOS 5 (32 bit)
- ディスク: HDD 50 GB
- メモリ: 1 GB
- 引越し先: Conoha
- OS: CentOS 7 (64 bit)
- ディスク: SSD 20 GB
- メモリ: 512 MB
体感では、とても早くなりました。おそらく SSD のおかげでしょうね♪
おわりに。次回への宿題
# ll -Z /srv/ drwxr-xr-x nginx nginx ? wordpress drwxr-xr-x nginx nginx ? wordpress_old # sestatus SELinux status: disabled #
驚愕の事実が判明しました。SELinux が無効です!!!サーバ構築時には SELinux 設定はへんこうしてませんので、最初から無効、ということでしょうか。。。有効にできるのでしょうか、少し不安です。。。
2018年6月20日追記: 追記した時点において、Conoha ではインスタンス作成時から SELinux はオフになっており、オンにして再起動するとログインできなくなりました><。
つまり、引っ越し作業extra. SELinux 設定は全くの無意味でした><。これと、サーバの自己接続のレスポンス 405 を解消する予定です。
とりあえずではありますが、サーバの引っ越しが終わってほっといたしました。
この文章を書きながら、3 時間かからない位で終えることができました。
以上です。