一人十郷 - takuminasuno.com 一人十郷
takuminasuno.com
ビジネス
2024/08/17

WPMLを使っているこのWordPressブログで、CentOSをやめてRocky Linuxを採用してサーバー諸々をアップデートした話

こんにちは。那須野です。

世にも珍しいこの多言語ブログなんですが、長らく同じサーバーで運用していた弊害としてCentOSのバージョンなりPHPのバージョンなりWPMLプラグインのバージョンなりで問題が出てきて袋小路に陥っていたので、思い切って力業でサーバー移転した話を備忘録的にまとめておきたいと思います。

 

古いPHP5.6、古いCentOS7の問題と対策

このブログは2018年にさくらのVPSからConoHaにサーバー移転したとき以来、6年ほどサーバー環境を変えていませんでした。たまにマイナーアップデートはしていたかと思うのですが、メジャーバージョンアップはしていないという、あるあるの状態です。

 

PHP5.6は既にサポート対象外

ブログの更新頻度が減ってWordPressのダッシュボードを開くこともだいぶ減っていたのですが、よく見ると危険なアラートマークが出ています。このPHPはもうサポートされていないバージョンなので、可及的速やかに更新するようにとのこと。マジか…。

セキュリティ的に宜しくない状態なのでとりあえずPHP7.4にアップデートしてみたところ、ブラウザからサイトにアクセスできずにタイムアウトするという謎の問題が噴出。

原因はおそらくWPMLプラグイン。このブログは立ち上げてから10年ほどの間ずっと多言語化プラグインであるWPMLのバージョン3.0.2-aに大きく依存してきたのですが、運用している中で小さなバグをいくつか見つけて変な挙動も散見していたので、新しいPHPに対応していない可能性が十分にあると推測しました。なお、市販のこのプラグインのバグ調査を自力でやる体力はないので、最新版を買いなおしてインストールしなおす方針にしました。

 

CentOS Linux7.9も既にサポート対象外

ついでに言うと、OSはCentOS Linux 7.9を使っていたのですが、そういえばCentOSは2024年6月末をもって最後の7系列もサポートを終了していました。おいおいマジか…。

新しいOSについて色々情報を探ったときに真っ先に出てきたのはCentOSでサポートが提供されているCentOS Stream9。ただしこれはRHELに対してダウンストリームではなくアップストリームに当たり、サポート期間も5年と短い(今からだと2027年5月末までで3年と短い)ため、長く安定運用したいこのブログの選択肢としては魅力に欠けていました。

それ以外の選択肢を探っていたところ、Rocky Linuxは使い勝手がほぼ同じで、コミュニティが活発でCentOSに思想が似ており、2022年リリースなので恐らく2032年までサポートが有効そうで、かつConoHa VPSでも対応しているとのことで、無料で取りうる選択肢としてベストだと判断しました。

 

OSもPHPもプラグインも全部をアップデート

ということで、思い切って新しいサーバーを立て直し、新しいOSであるRocky Linux 9.4を入れて、新しいPHPバージョン8.0を入れて、新しいWordPressバージョン6.6.1をインストールして、新しいWPML Multilingual Blogプラグインのバージョン4.612を入れて再始動することにしました。

これだけ更新すれば、もう10年くらいは安定して使えるのではないかと信じたいところです。

 

移行作業の前提

具体的な手順に入る前に、今回の私の作業環境をまとめておきたいと思います。

前回の移行時はmacを使っていましたが、いろいろあってmacはお蔵入りしており、Windowsのみを使うようになっています。

OS:Windows11
ターミナル:Windows PowerShell
エディタ:Visual Studio Code
SSHクライアント:WinSCP

それでは本題に入りましょう。

移行の具体的な作業手順

それでは本題の移行の具体的な作業手順です。

同じ状況に遭遇する人がいるかというと微妙な気はしますが、どちらかというと自分のためということで、全部をアップデートする流れを備忘録的にまとめておきたいと思います。

大きな流れとしては、以下のような10段階を踏みました。

  1. ConoHa VPSサーバー購入
  2. サーバー環境設定
  3. dev環境としてURL設定
  4. WPMLプラグインのインストール
  5. 旧サーバーの特定データのみ流し込み
  6. データベースのデータ補正
  7. WordPressテーマ修正
  8. DNSレコード変更
  9. SSL証明書取得
  10. 本番環境としてURL設定

それでは詳しく見ていきましょう。

 

1.ConoHa VPSサーバー購入

ConoHaのアカウントを持っている方であれば、コントロールパネルから[サーバー追加]でサクッと購入できます。購入時にイメージタイプの設定でOS=Rocky Linux 9.4を選ぶだけで簡単にインストールできます。

 

2.サーバー環境設定

以下の流れで一気に設定する。


 

3.dev環境としてURL設定

WordPressのGUI上で作業したり確認できるよう、URLを設定します。具体的にはhttps://takuminasunoの本番環境と並行する形でhttp://dev.takuminasuno.comというURLを宛がうことにします。具体的には、3つの設定を行います。

①hostsファイルの設定

DNSレコードの伝播を待つのは面倒なので、hostsファイルを設定して作業用PCから強制的にアクセスできるようにします。ローカルの「C:\Windows\System32\drivers\etc」にあるhostsファイルを管理者権限で開き、「{IP_ADDRESS} http://dev.takuminasuno.com」を追記します。

②wp-configの設定

wp-config.phpファイルを開き、siteurlとhomeのURLを設定します。


③バーチャルホストの設定

バーチャルホストでの並行運用を前提にするので、以下のように追記しておきます。取り急ぎはhttp接続のみなので80番ポートのみです。


これらの設定をすると、dev環境のURL(http://dev.takuminasuno.com)でアクセスしてWordPressの画面から作業や確認ができるようになります。

 

4.WPMLプラグインのインストール

WPML.orgでアカウントを作成して、プラグインを購入します。今回は単一のブログなのでWPML Multilingual Blogを購入。お値段にして39ユーロ、日本円にして約6,000円ちょっとでした。

購入したら[Downloads]メニューから[Download WPML manually]が選べるので、そこからzipファイルをダウンロードできます。

zipファイルをダウンロードしたら、WinSCPなどで/tmpフォルダに格納したうえで、WordPressフォルダのwp_content/pluginsに移動させ、適切に権限設定しましょう。


あとはWordPressのPluginsメニューからWPML Multilingual CMSプラグインを有効化しましょう。これで準備完了です。

 

5.旧サーバーの特定データのみ流し込み

旧サーバーから、特定のディレクトリ、特定のデータテーブルから必要なデータを流し込みます。バージョンが結構変わっているので、すべてをそのまま持ってくると何が起こるか分からないので、必要な分だけ持ってくるようにします。

  • 対象ディレクトリ
    • wp-content/uploads
    • wp-content/themes/{THEME_NAME}
  • 対象データテーブル
    • wp_postmeta
    • wp_posts
    • wp_term_relationships
    • wp_term_taxonomy
    • wp_termmeta
    • wp_terms
    • wp_icl_translations(※これのみWPML由来)

なお、ディレクトリ移行についてよく話に挙がるwp-content/pluginsに関しては、新環境に対して適切なバージョンがあると考えたので、必要なものを新規でインストールしなおすことにしました。

また、対象データテーブルのdumpファイル生成は以下のようなコマンドで行いました。テーブル構成を壊すリスクを減らすためにinsertのみに縛りましたが、結局これらテーブル構成は完全一致していたため、問題はありませんでした。


どちらかというと、なぜこれらテーブルだけでよいかというところがポイントです。詳しい話は割愛しますが、旧サーバーでのデータテーブルのレコードの入り方を見たところ、私のブログの運用方法ではこれらテーブルしか有効活用されていないことが分かったので、こういう絞り方をしました。

そのうえで新サーバーのMySQL(MariaDB)にて以下のコマンドで既存レコードを削除しつつデータを流し込みました。


 

6.データベースのデータ補正

ただ、データは流し込めばいいだけではなく、その後のデータ補正がつきものです。ここでは大きく分けて2つのデータ補正が必要でした。

①URLの書き換え

本番切り替え前に、http://dev.takuminasuno.comでちゃんと稼働するか確認したく、URLを一斉置換しました。Better Search Replaceというプラグインを使い、「https://takuminasuon.com」を「http://dev.takuminasuon.com」にまとめて置換しました。この際、GUIDも含めて全て置換しました。

②WPMLプラグイン関連テーブルのデータ補正

これが厄介だったのですが、WPMLプラグインのバージョンが3.0.2-aから4.612に大きく変わったことでデータの入り方が変わっており、そのままデータを流し込むだけではメディアライブラリが機能しない不具合が起きました。せっかくuploadsディレクトリを流し込んだのに画像が一覧に表示されないという悲しい事案です…。(なおファイルはあるのでブログ記事では画像表示される)

調査の結果、メディアファイルはファイルごとにwp_postsに1レコード、wp_postmetaに2レコード生成されていたのですが、以下の3テーブルについてレコードを追加する必要がありました。

  1. wp_postsにて、post_nameの末尾に「-2」を付けたレコードを複製する。
  2. wp_postmetaでも1で複製したレコードに対応する2レコードを複製しつつ、meta_key="wpml_media_processed", meta_value="1"のレコードを追加してWPML専用の翻訳データであるフラグを残す。
  3. wp_postsの両レコードに対して、wp_icl_translationsにてelement_type=’post_attachment’のレコードを生成する。複製元のレコードはlanguage_code="ja", source_language_code=NULL、複製先のレコードはlanguage_code="en", source_language_code="ja"として、翻訳関係を明確に定義する。

つまるところ、WPMLではバージョンアップに伴って、メディアファイルについて言語ごとにデータ管理するようになったようです。ややこしい。。。

でもレコードを追加したらメディアライブラリで表示されるようになったので一件落着。

 

7.WordPressテーマ修正

最新のWordPress環境で今までのテーマにて表示したら、デザイン崩れが若干数発生したのでテーマを修正しました。

一番のデザイン崩れは、WPMLの言語切り替えスイッチのCSSが完全に崩れていたことでした。原因は、WPMLがバージョン3.6.0以降になったことで

  1. #lang_sel_listのIDを使わなくなったこと
  2. do_action('icl_language_selector’)メソッドを非推奨とし、do_action('wpml_add_language_selector')を推奨するようになったこと

の2点がありました。これは現行の仕様に合わせてPHPとCSSを書き直すだけで解消しました。

 

8.DNSレコード変更

dev環境で一通りの確認が取れたので、DNSレコードのAレコードを旧サーバーのIPアドレスから新サーバーのIPアドレスに更新します。DNSレコードが早く伝播するよう、TTLは300ほどで設定しておきます。

しばらくしたらPowerShellにてnslookupを実行してDNSレコードが伝播しているか確認しましょう。8.8.8.8(Google)と1.1.1.1(Cloudflare)で新しいIPアドレスを確認出来たら、まあ大丈夫でしょう。


 

9.SSL証明書取得

DNSレコードが伝播していることを確認したら、SSL証明書を急ぎ取得します。以下の流れで一気にやりましょう。


 

10.本番環境としてURL設定

最後に、3番でhttp://dev.takuminasuno.comを前提に設定していたURLを本番環境であるhttps://takuninasuno.comに向けます。

①hostsファイルの設定

もうDNSレコードが設定されているので、hostsファイルに追記していたレコードは削除します。

②wp-configの設定

wp-config.phpファイルを開き、siteurlとhomeのURLを設定します。


③バーチャルホストの設定

http接続ではhttpsへのリダイレクトを設定しつつ、https接続ではSSL接続を強制します。


④URLの書き換え

改めてBetter Search Replaceというプラグインを使い、「http://dev.takuminasuon.com」を「https://takuminasuon.com」に置換しなおしました。この際、GUIDも含めて全て置換しました。

 

ということで、これら10段階を踏むことで、無事、新サーバーでブログを運用できるようになりなした。

  1. ConoHa VPSサーバー購入
  2. サーバー環境設定
  3. dev環境としてURL設定
  4. WPMLプラグインのインストール
  5. 旧サーバーの特定データのみ流し込み
  6. データベースのデータ補正
  7. WordPressテーマ修正
  8. DNSレコード変更
  9. SSL証明書取得
  10. 本番環境としてURL設定

 

最後に

最後に後片付けということで

  • ConoHa VPSの旧サーバーを解約
  • DNSレコードのTTLを3600に戻しておく

を行いました。今回は旧サーバーも新サーバーもConoHa VPSを利用しているのですが、同じレンジのプランでもSSDが50GBから100GBに増えており、単価も心なしか安くなったようで6年の歳月を感じてちょっとビックリしました。

引き続きConoHaのサーバーは高速にブログを表示してくれるので、いい感じです。

めでたしめでたし。

同じカテゴリーの投稿もどうぞ!
Dataformを使ってBigQueryにあるGA4データを加工してLooker Studioで可視化してみた話
ビジネス
2024/10/20
Dataformを使ってBigQueryにあるGA4データを加工してLooker Studioで可視化してみた話
ConoHa VPSのWordPressサイトを複製してステージング環境を作った手順をまとめてみた
ビジネス
2024/10/05
ConoHa VPSのWordPressサイトを複製してステージング環境を作った手順をまとめてみた
ConoHa VPSにMetabaseをインストールして独自ドメインを宛がってみた話
ビジネス
2024/10/02
ConoHa VPSにMetabaseをインストールして独自ドメインを宛がってみた話
WordPressでたった1つの投稿だけなぜか表示されない不具合を解消した件【PHPメモリエラー】
ビジネス
2024/07/28
WordPressでたった1つの投稿だけなぜか表示されない不具合を解消した件【PHPメモリエラー】
Looker Studioで新しいグラフ種別を作る【Community Visualizations】
ビジネス
2024/07/14
Looker Studioで新しいグラフ種別を作る【Community Visualizations】
ブログ著者について
那須野 拓実(なすの たくみ)。たなぐら応援大使(福島県棚倉町)。トリプレッソを勝手に応援していた人。元語学屋。時々写真垢とか手芸垢。山とか滝とか紅葉とかが好き。本業はナレッジマネジメントとかデータ分析とかの何でも屋。コロナワクチン接種済み。