ここのサイトを稼働させている自宅WEBサーバー(構成は過去記事参照)のOSを、Debian 9 Stretchに変更しました。元がDebian 8 Jessieなので、アップグレードインストールでも良いかもしれませんが、何かトラブルが発生して長時間稼働が止まるリスクを考えると、ぶっつけ本番でアップグレードを実行する勇気はないです。
ということで、Debian 9 Stretchを新規インストールし直して、WordPressのデータを移行することにしました。その間、サイトをとめるわけにもいかないので、代替えPCサーバーを用意してつなぎ変えておく作戦です。家には余っているPCがゴロゴロしているので、自宅サーバーならではの泥臭い方法です。この機会にメモリー倍増とSSD交換もできました。
今回の記事は、先月からいくつかStretchの記事を書いてきたまとめ的な内容となります。
このページの目次
Stretch新規インストールをテスト
サーバーを外して作業している間に、代わりとなる代替サーバーの準備に一番時間をかけました。まずは勉強のため、すべて新規で構築する方法を何度もテストしました。
Stretchを新規インストールして、WEBサーバーはApacheからNginxに変更することにして、PHPは5から7へ、MySQLはMariaDBへ、Letsencrypt証明書はDebian標準Certbotで発行して、HTTP/2に対応したりと、今回のバージョンアップでWEBサーバー周りは大幅に変更となりました。
おかげで、下記の新規インストール時の記事がたくさん書けました。
メールサーバー用の記事も2つできました。
クローン代替えPCを用意する
実際の代替えPCサーバーでは、上記の新規インストールとは違い、WordPressは新規インストールせず丸ごと移行させます。
WordPress用のデータベースですが、今回のMariaDBではデータベース名に – (ハイフン)が使えなかったので、ハイフン無しのデータベース名に変更してDBを移行する必要がありました。
例えば、WordPress用データベース名 def-4 、ユーザー名 db-user 、パスワード password のデータベースを、mysqldumpコマンドで mysqldump.sql というファイルに書き出し、ハイフン無しのデータベース名 def4 に変更して移行する コマンドがこちらです。
旧サーバーから書き出します。
# mysqldump -u db-user -p"password" def-4 > mysqldump.sql
新サーバーに移行します。
# mysql -u root MariaDB [(none)]> use mysql MariaDB [mysql]> CREATE DATABASE def4; MariaDB [mysql]> GRANT ALL PRIVILEGES ON def4.* TO "db-user"@"localhost" IDENTIFIED BY "password"; MariaDB [mysql]> FLUSH PRIVILEGES; MariaDB [mysql]> exit # mysql -u db-user -p"password" def4 < mysqldump.sql
WordPressのディレクトリーは丸ごとコピーして、wp-config.phpのサーバー名だけハイフン無しのモノに書き換えました。Nginxでは.htaccessが使えないので、.htaccessを利用するキャッシュ系プラグインなどはプラグインフォルダーごと削除しておきます。
Letsencryptの証明書は実稼働後でないと新たに発行できないので、SSL証明書は、旧サーバーの証明書ファイルを一時的にどこかにコピーして持ってきて、そこを指定しておきました。
すべての準備ができたら、深夜のアクセスの少ない時間にサッとLANケーブルを付け替えました。上手くいけばダウンタイムは2秒くらいですが、実際に入れ替えると設定間違いなどの単純ミスでサイトがダウンしたままだったので、再度元に戻して設定見直しをして、深夜に何度かダウンさせてしまいました。
本番サーバーのOS入れ直し
代替PCでWEBサーバーが動いていれば、ゆっくり時間をかけて本番サーバーのOSの入れ直しをすれば良いです。といっても代替えサーバーと全く同じ作業になるため、慣れもあって3時間で準備できました。
メモリーを元の8GBから16GBに倍増、SSDは128GBのモノから256GBに交換しました。空き容量は128GBでも十分空いていますが、SSDは空きが多いほど寿命も延びるので交換しました。
メモリーもSSDもサーバー用のものではなく、一般的なPC用のものをAmazonで買いました。前もPC用パーツで2年以上常時稼働でも一度も壊れなかったのでまた汎用品パーツで購入です。
Komputerbay 16GB 1600MHz ノートPC用メモリ 1.35V (低電圧) - 1.5V 両対応 204Pin DDR3L 1600 PC3L-12800 8GB×2枚
¥6,780Crucial [Micron製] 内蔵SSD 2.5インチ MX300 275GB (3D TLC NAND/SATA 6Gbps /3年保証)国内正規品 CT275MX300SSD1/JP
¥3,980本番サーバーが完成したら、代替えサーバーとLANケーブルを付け替えて元の通りです。また2秒のダウンタイムです。
WEBサイトの動作確認ができたら、letsenctypt証明書をCertbotコマンドで新たに発行して、証明書ファイルの指定先を変更したら移行完了でした。
だいぶレスポンスが早くなる
ApacheからNginxに変更、PHP7.0に変更、メモリー16GBに倍増、まっさらなSSDに新規インストールなど、どれが効いたか判断できませんが、だいぶWEBサーバーのレスポンスが良くなりました。WordPress管理画面の動きがあきらかに早くなったのが一番良かった点です。
実は、代替サーバーで用意したPCのほうが高スペック(CPUがCore i7 4710MQ)だったため、その時の爆速状態と比べると本番サーバーはレスポンスがガクッと落ちてしまうのが気になるようになりました。ただし、本番サーバーは超省電力スペック(60W以下で稼働)の方が重要なので、今回の速度アップで十分満足というところです。