年始早々下の子がインフルエンザ(A型)にかかって家で看ることになったので、気になっていたサーバ移設作業を行いました。2009年から
hetemlというレンタルサーバでホームページ
http://yasuabe.info/
を公開しています。使い慣れた
sakura internet に乗り換えようかと検討中でしたが、ドメイン設定など諸々めんどくさそうでそのままにしていました。先日、hetemlから「新サーバー環境への移設メンテナンス計画のご案内」というメールが来て、近いうちに新サーバへ移行しないとダメそうなので、せっかくの機会だからと重い腰を上げて新サーバへの移設を行うことにしました。
以前もPHPのバージョンアップに伴い、PHPのスクリプトを修正する必要がありました。その際、動けばいいやということでPHP5.4に設定しましたが、今回は最新のPHP7.3が推奨されているのでかなりの変更が必要になりそうです。また、そもそも新サーバに替えるのでSSHの設定、フルパスの指定なども変更する必要があります。ただ、hetemlでは新サーバでの動作確認を充分に行ってから移設を完了できるようになっているので助かりました。
まず、移設中はcronの設定はできないので現行のcron設定をコピー保存。つぎに新サーバとのSSH接続を確認(パスワード保存)。さらに、新サーバでのPHPをPHP7.3(CGI版)に変更しました。PHP7.3(モジュール版)だとデバグ作業が困難なのでCGI版にしました。現行のスクリプトはPHP5.4対応のため廃止された関数を書き換える必要があります。特にmysql関数が使えなくなったため mysqli 関数に変更する必要がありました。この際、単に mysql_***をmysqli_***とするだけなら楽なのですが、引数の定義が変わっているため、例えば
mysqli_select_db(\$dbname) --> mysqli_select_db(\$conn, \$dbname)
mysqli_query(\$sql, \$conn) --> mysqli_query(\$conn, \$sql)
と変更する必要がありました。ただし、\$conn = mysqli_connect(\$sv, \$user, \$pass)、\$dbname ="使用するDB名" など。また、split関数はPHP7では使えないのでexplodeに変更。(splitなんて10年以上見ていませんでした!)これらのエラーを表示するにはCGI版にしないとダメでした。モジュール版のほうが動作が速いようですが、新サーバをモジュール版に設定してしまうとCGI版には変更できないのでCGI版のままにしました。
すべてのページが問題なければ移設作業を完了させます。一度完了させると現行のサーバは使えなくなるので充分確認してから移設完了を行いましょう。私は不安だったので近くのスーパーまでペットボトルのゴミを捨てに行ってから再考したあとに移設完了ボタンを押しました!