DockerでWordpress環境構築+All-in-One WP Migrationのインポート制限解除（Windows）

# 　目次
+ はじめに
+ DockerでWordpressを使う
+ All-in-One WP Migration（以下AIOWP Migration）のインポート制限解除

# 　はじめに

免罪符ではないですが、Qiita初心者兼エンジニア初心者なので色々と間違っているところがあるかもしれません。

ローカルでWordpressを立てて既存のサイトをAIOWP Migrationでインポートしようとしたところ、割と詰まるところがあったので、社内＆似たような状況の人向けに自分の直面した問題と解決方法をまとめることにしました。

### 目的
+ Dockerを使って簡単にWordpress環境を作る
+ AIOWP Migrationをうまく使って、ローカル環境に実際に公開しているサイトを丸々インポートできるようにする。

# 　DockerでWordpressを使う
普通に``Wordpress　やり方``などでググると、Wordpressをサーバーにインストールする方法や、Wordpressを楽に使えるレンタルサーバーに関する情報が出てきます。これはWordpressが個人ブログで用いられることが多~~く、【初心者向け】記事でクリック数を稼ぎやす~~いためです。

しかし、ローカルで開発環境としてWordpressを使う場合には、Dockerでコンテナを作るのがおすすめです。ほんの数分で作れるためです。

### Dockerをインストールする（要再起動）
[ここから](https://www.docker.com/)（公式サイト）

### Ubuntuをインストールする
Dockerがらみのコマンドを使うにはUbuntuなどのLinuxディストリビューションが必要です。

以下の操作を全て行います。
+ [Windows ターミナル](https://learn.microsoft.com/ja-jp/windows/terminal/)のインストール
+ [WSLの有効化](https://www.aise.ics.saitama-u.ac.jp/~gotoh/HowToEnableWSL.html)（埼玉大学）または [MS公式](https://learn.microsoft.com/ja-jp/windows/wsl/install)
+ Ubuntuのインストール（色々な方法がありますが、[Microsoft Store](https://apps.microsoft.com/store/detail/ubuntu/9PDXGNCFSCZV)のものがやりやすいと思います）

### docker-compose.ymlを使う
適当なフォルダ内にdocker-compose.ymlというファイルを作成し、以下をコピペします（[参照](https://hub.docker.com/_/wordpress)）。

``` docker_compose.yml

version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress:/var/www/html

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql

volumes:
  wordpress:
  db:

```
終わったら**Ubuntu**コンソールでそのフォルダ内に移動した後、``docker-compose up -d``と入力すると、必要なイメージを取ってきてくれてコンテナが起動します。

Webページにアクセスする場合は、``http://localhost:8080``と入れるか、Docker Desktopのコンテナから8080:80と書いてあるところをクリックします。（8080はymlファイル内で指定したwordpressのポートです）

↓の画面が出てきたら成功です。

![WordPress_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302698/95e2f956-7b5c-080b-68c3-49e349f8047e.png)

# 　AIOWP Migrationのインポート制限解除
既存のサイトを丸々移動する場合の一つの方法として、[AIOWP Migration](https://ja.wordpress.org/plugins/all-in-one-wp-migration/)というプラグインでエクスポート、インポートする方法があり、非エンジニアの方でも手軽に行うことが出来ます。

しかしながら最新版だと無料で2MBしかインポート出来ないという~~まともに使わせる気のない~~状態の上に、後述する設定が出来ないので、古いバージョンのものを導入してカスタマイズします。

### 古いバージョンのAIOWP Migrationをインストール
先述の通り最新バージョンでは以降の設定が出来ないため、6.68バージョンのzipをダウンロードします。
[サイト1](https://purikuro.com/2021/02/03/allinonewpmigration_max/) [サイト2](https://www.caliberelectronics.com/all-in-one-wp-migration/)　などお好きな所からDLしてください。

次にDLしたzipファイルを[ここ](https://www.javadrive.jp/wordpress/plugin/index2.html)を参考にインストールして有効化します。

プラグインファイルエディターを開き、AIOWP Migration内の``constants.php``を開きます。
![firefox14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302698/85129311-d4f8-66ce-07ec-6365eed6c901.png)

``AI1WM_MAX_FILE_SIZE``という項目があるので、その値を``536870912 * 20``（後ろに* 20をつける）にでもします。
見当たらない場合は**バージョンが最新版になっている**のでプラグインをアンインストールして、もう一度6.68バージョンをインストールしてください。

**致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました**
と表示された場合は後半の項目参照

AIOWP MigrationのインポートページのMaximum upload file sizeの部分が10GBになっていたら成功です。
![firefox15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302698/ec3efdcb-9697-07f7-e16c-988138495bd8.png)

### 「致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました」が出てきた場合
先述した通りプラグインを変更しようとすると、このようなエラーが出てくることがあります。
この場合、``wp-admin/includes/file.php``の編集が必要となります。開き方は二種類あり、
+ VScodeのリモートエクスプローラーを使い、/var/www/htmlを開く。
+ DockerのTerminalから「Open in external terminal」を開いて接続する。この場合以下のコマンドでvimをインストールする必要がある。
```Linux
apt-get update
apt-get install vim
```
後は[この記事](https://qiita.com/ayies128/items/3e3dbe3b51ba4dd8adf6)のコメントアウトの方法を用いればOKです。

## 結論
これで既存のWordpress環境をローカル環境にコピーすることが出来るようになりました。後は色々と改修してみるなり固定ページを作ってローカルでテストしてからそれだけエクスポートして本番サーバーにインポートするなりしましょう。