Blow Up by Black Swan

WordPress-dockerを使って本番環境と同じwordpressをローカルに構築する方法

つい先日、ブログ開設以来初めてデザインの変更を行いました。2017年11月に開設してから、ほとんど変更することなく野暮ったいデザインのまま運営してきましたが、少しはプログラミングの知識がつき、Webページ制作の基本もわかってきたためです。昨年11月くらいからはじめてかなり手間取りました。勉強方法などについては改めて記事にしたいと思いますが、ローカルに本番環境を移す作業が特に手間取りました。そこで今回はローカルに本番環境を移す方法についてまとめます。なお、ローカル環境ではdockerを利用しています。

今となれば非常に簡単なのですが、インターネットでぴったりな情報が見つからず、何回も挫折しました。同じ様に苦労している方もいるのではと思いますので、そういった方々の参考になれば幸いです。

1. はじめに

まずは、実行環境や全体の流れについて整理します。

1-1. 実行環境

今回の実行環境は以下になります。

  • OS: MacOSX
  • docker: 19.03.5
  • docker compose: 1.25.2
  • wordpress: 5.3.2

1-2. 環境構築と移管の流れ

環境構築と移管の流れは次の様になります。

  • 事前準備
    1. docker-composeでwordpressのコンテナを構築する
    2. all in one migrationプラグインで本番環境のデータをエクスポート
    3. dockerコンテナの.htaccessファイルに追記することでアップロードサイズをアップ
  • ローカルに本番環境と同じwordpressを構築する
    1. all in one migrationプラグインでエクスポートした本番環境のデータをローカルのwordpressにインポート
    2. dockerコンテナの.htaccessファイルを本番と同じにする

2. 事前準備

まずは事前準備です。次の3つのことを行なっていきます。

  1. docker-composeでwordpressのコンテナを構築する
  2. all in one migrationプラグインで本番環境のデータをエクスポート
  3. dockerコンテナの.htaccessファイルに追記することでアップロードサイズをアップ

2-1. docker-composeでwordpressのコンテナを構築する

まずは、本番環境を移すdockerコンテナをdocker-composeを使って構築します。wordpressコンテナとMySQLコンテナだけ構築しており、phpadminのコンテナは構築していません。dockerコンテナは次のサイトの通りに構築したので、そちらを参照下さい。非常にわかりやすく、すぐに構築できました。

なお、dockerについては以前記事でまとめたことがありますので、そちらも参考にして頂ければと思います。

dockerコンテナ構築後、ブラウザからローカルホストにアクセスし、wordpressのインストール作業を完了させます。

2-2. all in one migrationプラグインで本番環境のデータをエクスポート

次は本番環境で作業します。本番環境のwordpressでall in one migrationプラグインをインストールし、有効化します。

有効化すると「ツール」の下に「All-in-One WP Migration」と表記が出るので、そのページからファイルをエクスポートします。ローカルにダウンロードするのであればエクスポート先に「ファイル」を選択します。エクスポートする前にセキュリティ関係のプラグインをオフにしておくことをお勧めします。私は最初オフにしていなかったので、ダッシュボード画面にうまくログインできませんでした。

エクスポートすると、ファイル名にドメイン名と日付が含まれた、「.wpress」拡張子のファイルがダウンロードされます。

2-3. dockerコンテナの.htaccessファイルに追記することでアップロードサイズをアップ

再度、dockerコンテナで作業をします。ここではコンテナ内のwordpressではなく、コンテナにある.htaccessファイルを編集します。このファイルにコードを記述することで、dockerコンテナ側のwordpressで、先ほどエクスポートしたwordpressファイルが大容量でもインポートできるようにします。エクスポートファイルの容量が初期値の2MB以下の場合はこの作業を行う必要ありません。wordpressのコンテナに入り、.htaccessファイルを編集します。

❯ docker-compose exec wordpress bash
root@c8190549db22:/var/www/html# echo php_value upload_max_filesize 10G > .htaccess
root@c8190549db22:/var/www/html# echo php_value memory_limit 10G >> .htaccess
root@c8190549db22:/var/www/html# echo php_value post_max_size 10G >> .htaccess

注意点としては以下の点があります。

  • docker-composeコマンドでコンテナに入るには「コンテナ名」ではなく「サービス名」を指定します。
    • dockerコマンド(docker exec ~)を使って「コンテナ名」でコンテナに入ることもできます。
  • echoコマンドでファイルに書き込む場合、>は上書きで>>は追記になります。

なお、アップロードサイズをあげる方法についてはphp.iniへの書き込みが必要と書かれているものもありますが、私の場合は.htaccessファイルに書き込むだけでうまくいきました。これについては次のサイトを参考にしています。

以上で事前準備が完了です。次は本番環境のデータを移していきます。

3. ローカルに本番環境と同じwordpressを構築する

ローカルで本番環境と同じ環境を構築するには次の2つを行います。

  1. all in one migrationプラグインでエクスポートした本番環境のデータをローカルのwordpressにインポート
  2. dockerコンテナの.htaccessファイルを本番と同じにする

3-1. all in one migrationプラグインでエクスポートした本番環境のデータをローカルのwordpressにインポート

事前準備の時にall in one migrationプラグインを使って本番環境のデータを取り出しました。このデータをdockerコンテナのwordpress環境にインポートします。まず、dockerコンテナのwordpressにall in one migrationプラグインをインストールし、有効化します。そして、インポートを選択します。事前準備のところでアップロードサイズを変更したので、今回であれば10GBのデータまでアップロードできるようになっています。

本番環境のデータが入った.wordpress拡張子のファイルをインポートすることでdockerコンテナのwordpressへのデータ移管が完了します。

3-2. dockerコンテナの.htaccessファイルを本番と同じにする

最後にdockerコンテナの.htaccessに本番環境と同じコードを記述します。これは人によっては不要かもしれませんが、私の場合はこれをやることでうまくいきました。.htaccessに記述するコードは人によって違うと思うので、ここでは割愛しています。なお、事前準備で記述した、アップロードサイズをあげるコードについては、アップロードサイズを維持したい場合はそのままで構いません。

これで本番環境データのローカルのwordpressへの移管が完了しました。これで再度ログインし直すと、本番環境と全く同じwordpress環境が構築されていることが確認できます。なお、ログインIDとパスワードも本番環境と同じになっています。もし、ログイン画面にアクセスできない場合などは、本番環境のデータをエクスポートする時にセキュリティ系のプラグインを有効にしたままにしていることが原因だったりしますので、セキュリティ系のプラグインをオフにしてやり直してみてください。

4. 最後に

以上が本番環境のwordpressをローカルで再現する方法です。情報がたくさんありそうなトピックですが、あまりなかったので記事にしました。有効にしているプラグインやサーバ環境によってはこの記事の方法を一部変更したりする必要があるかもしれません。ただ、dockerの利用が増える中で1つ有益な情報が提供できたのではないかと思います。

読んで頂きありがとうございます。この記事が参考になりましたら幸いです。