スマートフォン・タブレットからインターネットサーバーオペレーション

APPW.jp
 
ConoHa VPS移設記/2GB・3コア → 4GB・4コア/Ubuntu 26.04 LTS

⑦ WordPress

本体を改めてダウンロードし直す必要はなく、旧サーバーのファイルをそのままコピーすれば済む。 今回の主眼はむしろcrontab/WP-Cronの移行だった。以前書いた「予約投稿 失敗時の対処手順」の教訓を踏まえながら、 死んでいるcron行の整理、マルチサイト構成の再確認、タイムゾーンの確認まで一通り済ませた記録。

作業端末: iPad mini(Termius)

MIGRATION ROADMAP — 全17工程
  1. ① SSH、ユーザー追加
  2. ② IPv4/IPv6追加、netplan、ufw
  3. ③ Apache2
  4. ④ Let's Encrypt
  5. ⑤ PHP
  6. ⑥ MariaDB
  7. ⑦ WordPress
  8. ⑧ Dovecot、Postfix
  9. ⑨ Vsftpd
  10. ⑩ Python
  11. ⑪ llama.cpp、ChromaDB
  12. ⑫ Anaconda、Keras、TensorFlow
  13. ⑬ Node.js
  14. ⑭ MongoDB
  15. ⑮ Mosquitto
  16. ⑯ RabbitMQ
  17. ⑰ 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)の要否は引き続き調査中
← 前回: ⑥ MariaDB 次回: ⑧ Dovecot、Postfix →

『ConoHa VPS移設記 ⑦ WordPress』を公開しました。