Google Compute Engine(GCE)で動かしているWordPressを別のGCEサーバに引っ越した。
そもそも、先日レンタルサーバからGCEに引っ越したばかりなんだけど、なぜかgoogle-fluentdがバージョンアップの度にコケる不具合が起きたりしたので、この際サーバごと変えてしまおうと思ったのがきっかけ。
新サーバの起動
今まではMarketplaceから素の(Google Click to Deployの)WordPressを使って、ApacheをNginxに変えたりしてたけど、今回は初めからNginx化されている「WordPress with NGINX and SSL Certified by Bitnami」を使う。
GCP無料枠を利用する場合、作成時に気をつけることは次の3つくらい。
- 移行元のサーバと同じリージョンを選択
- マシンタイプはmicro
- ディスクサイズは30GB
SSHの設定
ここで紹介されているようにSSHのポートをデフォルトの22から変更する。既にファイアウォールを作っていればサーバの/etc/ssh/sshd_configを変えるだけで済む。
外部IPアドレスの変更
移行元に割り振っている外部IPアドレスを移行先に変更する。GCPのVCPネットワーク設定から簡単に変更できる。このとき、同じリージョンでないと同一IPを使用できない。
移行元WordPressでデータのエクスポート
移行するデータをエクスポートする。前回レンタルサーバから移行したときに使った「All-in-One WP Migration」を今回も使う。エクスポート先としてオンラインストレージなども選べたけど無難にローカル(ファイル)を選択。
移行先WordPressでデータのインポート
移行先のWordPressにログインし、先程エクスポートしたデータをインポートする。Bitnami版だったら最初から「All-in-One WP Migration」がインストールされている。ただデータサイズが30MBを超える場合エクステンションを追加する必要がある。エクステンションによって512MBまでインポートできるようになる。
CloudFlareから証明書のダウンロード
Crypto設定の「Origin Certificates」から証明書を発行する。それぞれ「cloudflare.pem」「cloudflare.key」という名前にして、サーバの「/opt/bitnami/nginx/conf/bitnami/」直下に保存する。
ちなみにその他のCrypto設定は以下の記事参照。
Nginx設定変更
サーバにログインしてNginxの設定を変更する。
/opt/bitnami/nginx/conf/bitnami/bitnami.conf
ssl関連やserver_nameを変更する。デフォルトの設定は便宜上割愛。なおHTTP/2(dhparam.pemの生成)についてはこの記事を参照のこと。
server { listen 80; server_name yusukesakai.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name yusukesakai.com; ssl_certificate cloudflare.pem; ssl_certificate_key cloudflare.key; ssl_dhparam dhparam.pem; }
/opt/bitnami/nginx/conf/nginx.conf
Nginxのバージョンを見えなくする。セキュリティ対策。
http { server_tokens off; }
/opt/bitnami/apps/wordpress/conf/nginx-app.conf
アップロードファイルサイズの上限を2MBから8MBに。
client_max_body_size 8m;
Bitnamiロゴの削除
デフォルトのままだとサイトの左下に「Bitnami」のロゴが表示されてダサい&邪魔なので以下のコマンドで消す。
$ sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1
Nginx再起動
もろもろ終わったらNginxを再起動して設定を反映する。
$ sudo /opt/bitnami/ctlscript.sh restart nginx
あとは適当に
ここまで来ればほぼ完成で、あとはプリインストールされた不要なプラグインを削除したり、SSH公開鍵認証でログインできるようにしたり、念のため「apt update / upgrade」したり、Adsense用のads.txtを配置したりするだけ。ちなみにads.txtを置くルートディレクトリは以下にある。
/opt/bitnami/apps/wordpress/htdocs/
初めてGCE間を引っ越したけど、新しいサーバも問題なさそうだし、案外苦労することもなく実働1時間くらいでできた。ここ数日でGCP/GCEの扱いにも少し慣れてきた気がする。