サーバーを移行した話

このブログのサーバーを移行した話。備忘録というかやはりメモ

7/4までこのブログのサーバーはDTIさんのServersMan@VPSを借りて運営していたわけですが7/5をもって、GMOさんのConoHa VPSへサーバーを移しました。画像などみれなくなってるものもあるかもしれませんがドメインは変わってないのであまり問題はないはず
ただ、移行作業で手間取った箇所があったのでそれを残しておこうと思う

作業

nginxのインストールと設定

当初は適当に設定ファイルを移してそのままビルドまでして起動すればいいやみたいな事考えてたんですけど、よく考えたらこのブログ、全ページSSL対応してるんですよね…
ということでCAファイルなどの設定に四苦八苦して思うように行かなかったので今後手間取らないように手順を書いていく

ひとまずUbuntuしかつかわないからaptでnginx入れたらdpkgでholdしておく。そしてアップデートする時同様にいつも通りのconfigure optionを並べて

make -j10
sudo make install

最後にsudo service nginx restart;で起動
それが出来たらnginxの設定ファイルを移してきてssl関連を全部コメントアウト。listenを80に
(Ubuntu 16.04のnginxでは、起動失敗の時のエラーが表示されなくなったみたいだから設定変える度に sudo nginx -t が必須かな…)

それが出来たらサイトに訪れた人にサーバー移行中だと伝えたいなら古いサーバーの方をメンテナンスモードにしておく。プラグインを用いると楽。今回の移行で用いたのはComming Soon Page & Maintenance Pageというプラグイン
メンテナンスモードにしたらmysqlの内容を.sqlでdump(export)する

ここまできたらひとまずmysqlいじれるAdminerを使うドメインを新しいサーバーに向けるかlocalhostの設定ファイルを書いておく。phpMyAdminなんかもいいけど個人的にAdminerの方が軽くてつかいやすい

PHPをインストールする

ついでにphpもインストールしておく。必要に応じてphp関連の設定もそれにあわせる
すっかり忘れてた。phpも現時点で最新の7.1.6にアプデしてました
aptでphp7を入れて特に追加で何か入れるわけでもなくそのままアプデしました。コンパイルオプションで色々好きにできるし問題ないですね
これがちょっと厄介だったのがdynamic libraryの読み込みなんですよね…今回はopcacheとreadline以外は静的に読み込むようになってるので古い設定ファイルがエラー吐きまくって起動できなかった…これはその設定ファイルごと消すのが早かった。読み込まないようにするのに試行錯誤してたけど無駄だった。いっそ該当のモジュールを全部dynamic libraryにするってのもよかったかもしれない(動作が遅くならないのであればの話)

SSLのCA証明書の取得と設定

私の環境だとadminerでエラーが出て、httpsじゃないとログインできなかった。なのでcertbotで取得する。ほかの証明書使ってる方はおそらく気にする必要なくnginxの設定で指定すればいいだけ
コマンドは

./certbot-auto certonly --webroot -w /path/to/root -d example.com -d www.example.com

うまくいかないようなら --staging オプションをつけた後

./certbot-auto renew --force-renew

でうまくいくはず

取得できたらnginxの設定ファイルのssl関連のコメントアウトしたものを有効にして再起動

ここまできたらdumpしておいたsqlファイルをadminerと同じディレクトリへ置いてimportすればデータが移る

ブログのipアドレスを変更

あとはブログのドメインを新しいサーバーに向けて再度certbotで同じようにCAファイルを取得し、sslのコメントアウトを有効にする

あとはメンテナンスモードを解除する。私の環境では古いサーバーの時にログインしたままだとダッシュボードへアクセスできた。ダメなようなら、プラグインを用いたのならデータベースの${prefix}optionsテーブルに設定があるはずなので直接無効にする。私が用いたプラグインであれば option_name が seed_csp4_settings_content の option_value のstatusの部分を s:6:"status";s:1:"0"; のようにする。 s:6:"status"; でひとかたまりなのでその次の”0″の部分がメンテナンスモードだと2になっているはず

ここまでくれば新しいサーバーへwordpressを移すことに成功

おしまい

正直メンテナンスモードにする必要性は私のようなブログじゃ必要なかったけれど仮に多くのpvがあり常に人がくるようなサイトであればこのような方法がそれなりにいいのではと感じた

もし今後wordpressなど含めてwebサーバーを変える作業をするときのために役立つといいなぁ…
あと今のサーバーのphp、近いうちにアップデートするかもしれない。あとTLSv1.3に対応させるためにopenssl 1.1.1を導入してnginxもリコンパイルするかもしれない
その時もメモ書きを残すだろうけどブログが一時的に見れなくなるかもなぁ…

Leave a Reply

Your email address will not be published. Required fields are marked *