WordPress が稼働しているサブドメインの変更を行った時の作業メモ

スポンサーリンク

 先日、ゲーム関連用に立てている WordPress を用いたブログのサブドメインを変更してみようと思い立ってやってみた。
 自身としても同一ホスト上でサブドメインだけ変更する形の移転は初だったので、大体の作業内容を大雑把に備忘録として残してみることに。

0. 前提

 変更を加えるファイルは全てバックアップを取ってから編集する。

1. DNS へ A レコードを登録する

 新たなサブドメイン名を考えて A レコードを追加する。
 LAN 内からも参照するので内向き/外向き両方へ追加する事に。

2. Nginx の設定ファイル名変更してコピー

 既存の設定ファイルを分かりやすいファイル名に変更。
 新しい FQDN を new.example.com、古い FQDN を old.example.com とする。

cd /etc/nginx/conf.d/
mv old.example.com new.example.com

3. Nginx の新サブドメイン用設定ファイルの編集

 新サブドメイン用設定ファイル new.example.com.conf を開いて server ディレクティブは勿論、ドキュメントルートを変更するなら root その他必要項目を編集する。
 今回は http 接続のみだった物を https 接続に変更したのでその点も追加変更しているが内容は割愛。

4. Nginx の旧サブドメイン用設定ファイルを作成

 旧サブドメイン用設定ファイルとして old.example.com.conf を次の内容で作成する。
 301 を返す事で Permanent Redirect として扱われる。

cat << 'EOF' > old.example.com.conf
server {
    listen 80;
    server_name old.example.com;

    return 301 https://new.example.com$request_uri;
}
EOF

 もし旧サブドメインも https で Listen しているなら server ブロックを追加して 443 も同様にリダイレクトしてやる。

5. DB 変更

 DB の内容には旧 FQDN のまま保持されているので、MariaDB (若しくは MySQL) に接続してテーブルの内容を変更する。
 ここでも新しい FQDN を new.example.com、古い FQDN を old.example.com とする。

mysql -u USERNAME -p
use DB_NAME;
UPDATE wp_options SET option_value = replace(option_value, 'http://old.example.com/', 'https://new.example.com/') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://old.example.com/','https://new.example.com/');
UPDATE wp_posts SET post_content = replace(post_content, 'http://old.example.com/', 'https://new.example.com/');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://old.example.com/','https://new.example.com/');

6. 各サーバー再起動

 Nginx の設定に問題無いか確認をした後に次のコマンドを打ち込んで再起動。

nginx -t
systemctl restart nginx named-chroot

 これで完了。あとは動作確認を行う。

おわりに

 VMware 上に作成した検証環境でテストを行いながら設定を詰めて行ったが、検証を含めて約 1 時間ほどで作業は完了した。
 一部割愛した https 化に関しては Let’s Encrypt で証明書を取得。SSL/TLS 周りの設定はこのぶっちろぐのパラメータを流用。いわゆるコピペでパス周りだけ修正などと手が抜けた。定形化された部分はコピペで回してしまえばミスも減るので案外馬鹿にならないもんで。
 そんなわけで筆者が運用している WordPress 周りはこれで全て https 化が完了したし、サブドメイン名を変更してみるという事も無事に完遂した。
 

スポンサーリンク