新サーバー

新サーバー導入です。畑が始まると休みの日もこんなことしていられないので、冬の間にやってしまうつもりでしたが、もう春ですね。前のサーバーを投入してからもう9年ですが、その後電源を交換したり、実質新たに組み直したりしたので、組み直しからは1年程で新規投入です。3月22日に新サーバー投入で、本日までに懸案であったメール、WEB の SSL 化を果たし、その他の調整もほぼ完了しました。なんかデカい…

今まではメールはオレオレ証明書対応で、WEB はサーバーのバージョンの問題もあり SSL 未対応でした。今回サーバーのバージョンもあがって、SSL 化実現です。証明書は Let’s Encrypt から頂きました。
今どきどんな情報でも大概ググれば見つかるのですが、まとまった情報が見つからなかったのが今回の WEB の SSL 化です。当ブログはありふれたWordPress ですが、当サイトのように multisite になると、情報が見つからないというものか、要領の良い方法がないのですね。いつか誰かの(多分自分)役に経つかもしれないので備忘録しておきます。
結論を言いますと、データベースの関連テーブル中の http://www.example.com を全て https://www.example.com に書き換える作業となります(example.com は、自分の環境に置き換えてね)。眩暈がしますね。
テーブルは WordPress 開始時に作成したディレクトリにあるprefix_*.ibd ファイルです(prefix はwp など開始時に定義した文字列)。grep http://www.example.com * してみると、対象となるファイルが一発でわかります。

# mysql -u username -p
> use database;
> desc prefix_options;
> select * from prefix_options where option_value like '%http://www.example.com%';

のようにデータベースに入って確かめれば確実ですね。

当サイトの場合、下記のファイルが対象となりました。

File (Table)Field
prefix_optionsoption_value
prefix_postmetameta_value
prefix_postspost_content
prefix_sitemetameta_value
prefix_id_ commentscomment_content
prefix_id_optionsoption_value
prefix_id_postmetameta_value
prefix_id_postspost_content

id はマルチサイトの識別番号、2, 3 など。siteurl, home といった大事そうな option_name はテーブルprefix_options, prefix_id_options に入っていました。本当は prefix_comments も要チェックと思われます。

あとは filed の文字列の置き換えです。sed なんかでやっつけたらダメです。テーブルが壊れます。置換前後で文字数が同じなら壊れないかもしれないけど。やっぱり mysql の RPLACE コマンドで。

> UPDATE prefix_options SET option_value=REPLACE(option_value, "http://www.example.com", "https://www.example.com");

全部のテーブルで、これをやります。ふう、お疲れさまでした。データベースファイルには古い文字列のゴミが残っているので、作業後も grep でひっかかってきても泣かなくて良いです。

ところでサーバーの稼働も軌道に乗ったので、古い方のハードをバックアップサーバーとすべく分解掃除の上光学ドライブを繋いで電源をいれてみたら… きゃー LEDが点滅してハンダの溶ける匂いがぁ! 4TB HDD 2台御臨終。マザボとメモリーが無事であることを祈る。

コメント

タイトルとURLをコピーしました