MIGRATION ROADMAP — 全17工程
- ① SSH、ユーザー追加
- ② IPv4/IPv6追加、netplan、ufw
- ③ Apache2
- ④ Let's Encrypt
- ⑤ PHP
- ⑥ MariaDB
- ⑦ WordPress
- ⑧ Dovecot、Postfix
- ⑨ Vsftpd
- ⑩ Python
- ⑪ llama.cpp、ChromaDB
- ⑫ Anaconda、Keras、TensorFlow
- ⑬ Node.js
- ⑭ MongoDB
- ⑮ Mosquitto
- ⑯ RabbitMQ
- ⑰ Supervisor
01本体は再ダウンロード不要
WordPress本体・プラグイン・テーマは、ja.wordpress.orgから改めて取得し直す必要はなく、旧サーバーのファイル一式をそのままコピーすれば済む。
④までの移設専用鍵によるscpで、既にコピー済みだった。
02wp-config.phpは書き換え不要だった
⑥でデータベースを復元する際、あえて旧サーバーと同じデータベース名・ユーザー名で作成しておいたため、
コピーしてきたwp-config.phpの接続情報をそのまま使えた。書き換え漏れによる接続エラーの心配がない。
03WP-CLIのインストール
login-user@新サーバー
$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
$ php wp-cli.phar --info
$ chmod +x wp-cli.phar
$ sudo mv wp-cli.phar /usr/local/bin/wp
04crontabの移行と整理
旧サーバーのsudo crontab -u login-user -lの中身を確認したところ、いくつか整理すべき点があった。
- 死んでいるコメント行:ログ出力先を
/dev/nullから/tmp/wp-cli-*.logへ変更した際の旧行が残っていた(まさに「予約投稿 失敗時の対処」を調査していた過程の痕跡)。削除
- gwaw.jpのマルチサイト構成:
wp site list --field=url | xargs wp cron event runはWordPressマルチサイト専用のコマンド。⑥でgwaw.jpに3つのデータベース(gwaw_01_db〜03_db)があると分かっていたが、実際に使用中なのはgwaw_03_dbのみで、残り2つはサイトリニューアル前の旧データの可能性が高いとのこと(現在使用中か引き続き確認中)
- タイムゾーン:
wp core update等の毎日実行ジョブは深夜3時・4時指定のため、システムのタイムゾーンが実際の意図と合っているか確認。Asia/Tokyoになっていることを確認済み
login-user crontab(最終版)
*/10 * * * * cd /home/login-user/www/iseeit.jp && /usr/bin/php wp-cron.php >/dev/null 2>&1
*/10 * * * * cd /home/login-user/www/gwaw.jp && /usr/local/bin/wp site list --field=url | /usr/bin/xargs -I \% /usr/local/bin/wp cron event run --due-now --url=\% >/tmp/wp-cli-gwaw.log 2>&1
0 4 * * * cd /home/login-user/www/gwaw.jp && /usr/local/bin/wp core update 2>&1
0 3 * * * cd /home/login-user/www/gwaw.jp && /usr/local/bin/wp plugin update --all 2>&1
0 3 * * * cd /home/login-user/www/gwaw.jp && /usr/local/bin/wp theme update --all 2>&1
*/10 * * * * cd /home/login-user/www/appw.jp && /usr/local/bin/wp site list --field=url | /usr/bin/xargs -I \% /usr/local/bin/wp cron event run --due-now --url=\% >/tmp/wp-cli-appw.log 2>&1
0 4 * * * cd /home/login-user/www/appw.jp && /usr/local/bin/wp core update 2>&1
0 3 * * * cd /home/login-user/www/appw.jp && /usr/local/bin/wp plugin update --all 2>&1
0 3 * * * cd /home/login-user/www/appw.jp && /usr/local/bin/wp theme update --all 2>&1
*/10 * * * * cd /home/login-user/www/ibe.tokyo && /usr/bin/php wp-cron.php >/dev/null 2>&1
login-user@新サーバー
$ sudo crontab -u login-user -e
# 上記内容を貼り付け
$ sudo crontab -u login-user -l
05動作確認
ログの中身を実際に確認し、エラーなく実行されていることを見た。
/tmp/wp-cli-gwaw.log 他
Success: Executed a total of 0 cron events.
Executed the cron event 'wp_privacy_delete_old_export_files' in 0.009s.
Executed the cron event 'wpp_maybe_performance_nag' in 0.01s.
Success: Executed a total of 2 cron events.
Executed the cron event 'wordfence_daily_cron' in 0.009s.
Success: Executed a total of 2 cron events.
Wordfenceのcronイベントまで正常に実行されており、データベース接続・WP-CLI・crontabの一連が機能していることを確認した。
最後にDNSがまだ新サーバーを向いていないため、curl --resolveでサイト表示そのものも確認。
login-user@新サーバー
$ curl -I --resolve gwaw.jp:443:160.251.145.xx https://gwaw.jp/
$ curl -I --resolve appw.jp:443:160.251.145.xx https://appw.jp/
HTTP/2 200
確認完了
ファイルコピー・データベース復元・crontab/WP-Cronの3点がすべて揃い、gwaw.jp・appw.jpともHTTP/2 200を確認。
06ここまでの状態
- WordPress本体・プラグイン・テーマは旧サーバーからファイルコピーのみで移行(再ダウンロード不要)
- wp-config.phpは書き換えなしでそのまま接続成功(⑥でDB名・ユーザー名を旧サーバーと揃えておいた効果)
- WP-CLIを導入し、crontabを整理(死んだ行の削除、タイムゾーン確認)した上で移行
- gwaw.jpの旧データベース2つ(gwaw_01_db、gwaw_02_db)の要否は引き続き調査中