引っ越しました(WordPress + Docker)

引っ越しました(WordPress + Docker)

2020年7月12日
日記
スポンサードリンク
スポンサードリンク

引っ越しました

お久しぶりです。(半年ぶりの投稿)
就職に伴い、リアルでも引っ越したながてちです。
とりあえずの目標は、会社名を出しても怒られないエンジニアになることです。

就職してお金に余裕ができたので、ブログを運用してる鯖のスペックをあげようと思ったのですが、使ってるConoHaでは最安値のプランではプランの変更ができないという制約がありました。

ならいっそのことDockerにのせていい感じにしようと移行作業をしたら、結構時間がかかったので生存報告もかねてやったことを書こうと思います。

ちなみにもう移行作業は終わってて、このブログは新サーバで動いています。
ついでに使ってるテーマの更新もしたので見た目がいい感じになっています。

やったこと

もともと記事を書かないつもりだったのでスクショが少ないです。ごめんなさい。

1. DockerでWordPressを建てる

いろんな記事見ながらdocker-compose.ymlとその他必要なファイルを書きました。

永続化のために、DBのデータとWordPress本体のファイルはvolumeに指定しています。

php.iniは書かないとWordPress側のアップロードサイズ制限がデフォの2MBに設定されてしまい、以降の作業で詰みます。値は適当です。

立ち上がったらサイトのURLを適当なサブドメインにして初期設定を完了させます。(あとで元のURLに戻します)
そのURLでブログにアクセスできるようにします。以降の作業はWordPress上で行います。

2. 旧WordPressで記事をエクスポートし、新WordPressにインポートする

ググったら出てくるプラグイン等は使わず、WordPressにデフォルトで備わってるインポート/エクスポートの機能を使いました。

画像が無くて申し訳ないのですが、ここまででWordPressのデフォルトのテーマで記事だけが存在している状態になります。

3. 画像を旧サーバから新サーバに移す

使っているプラグイン(もしくはデフォルトのエクスポートツール)が悪かったのかもしれませんが、リサイズされた画像が一切コピーされずにhoge.pngは表示されてhoge-150x150.pngは表示されない(404が返ってくる)みたいな状態になってしまいました。

なので、scpコマンドを使い、画像が入っているフォルダ(wp-content/uploads以下)を全部新サーバにコピーしました。
画像の所有者・パーミッションを新サーバのものにするのを忘れずに。

4. テーマをインストールする

このテーマを使いたいためだけに静的サイトジェネレータを使わずにWordPressを使っていると言っても過言ではないくらい気に入っているyStandardをインストールしました。
(つい最近v4がリリースされて、結構破壊的変更も加えられてv3からのアップグレードも大変そうだったのですが、最初からインストールしちゃえば関係ないですね!)

インストール後はカスタムCSSやテーマの設定を旧WordPressの設定を見ながら必要な部分はそのままコピーし、必要でない部分はそのまま適用しないといったことをやりました。
これのおかげで今の構成を見直すいいきっかけになりました。

5. ドメインを元のドメインに戻す

旧WordPressと似た新WordPressが出来上がったらいよいよドメインを元に戻して旧WordPressへのアクセスを新WordPressにします。

やることとしては、

  1. WordPressのアドレスを元のドメインにする(設定の一般から変更できます)
  2. 記事内部の画像のurlを元ドメインに書き換える(インポートする際に仮ドメインに書き換わってしまうので元のドメインに戻します。一括置換のプラグインはSearch Regexを使いました)
  3. Webサーバ(nginx)の設定を元ドメインの設定に書き換える
  4. DNSレコードの設定を旧サーバから新サーバへ設定し直す

といった感じで移行をすすめました。
うまく行けば(パーマリンクの設定を元のままにすれば)元のURLで新WordPressにアクセスできます。

ハマったこと

ハマったことを書いておきます。
上のやったことに対策をそのまま含めているので、上の手順ではハマらないようになってるはずです。(たぶん)

「アップロードしたファイルは php.ini で定義された upload_max_filesize を超過しています」というエラーが出る

テーマのインストール時にテーマのファイルが2MBを超えていたときに発生したWordPress側のエラー。

そんなの定義した覚えがないがって思って色々調べたら、そんなの定義されてないので新しく自分でphp.iniを作って配置しないといけないらしいです。

場所はWordPressのdocker imageだと/usr/local/etc/php/conf.d/以下に配置した状態で再起動したら解決。

元のドメインに書き換え時にMixed contentでjsファイルやcssファイルがブロックされる

新サーバでの作業時にhttpで作業してたのが原因。

元のドメインはhttpsで動作してたため、httpで開こうとしている全コンテンツがChromeによりブロックされて、ブログが崩壊します。

崩壊したWordPress(画像はイメージです)

こうなったら慌てず落ち着いてそのままの状態でログインし、設定の一般をクリックし、WordPress アドレス、サイトアドレスを旧ドメイン(httpsの状態)に書き換えます。
変更を保存ボタンを押すと、馴染みのあるページに戻ってくると思います。
(最初コレになったときめちゃくちゃ焦りました)

おしまい

鯖の引っ越しに伴ってWordPressをDockerで建てて移行を頑張った話でした。

画像のリンク切れ等あったらこっそり教えてください。