
Docker-compose上のWordpress環境移行手順のメモ
前回の記事
こんにちは。しょうです。
今回は以下の記事の続き、Wordpressの移行手順について記載をして
いこうと思います。
前回の記事では
・Wordpressと他のCMSの違いとメリットデメリット
・Docker-composeを使用してWordpressを構築すると
構築するための障壁がグッと下がり簡単に構築出来る
ということを書かせて頂きました。
今回の環境想定
まずAWS EC2上にRHEL8上にdocker及びdocker-compose環境を構築。
さらにその上にWordpress、MySQL、phpMyAdminコンテナをデプロイ。
デプロイが完了したらWordpressにログインして適当に記事データを
作成したり画像データを格納してみます。
上記で運用していたが、パブリッククラウド環境からオンプレに
移行しないといけなくなったと考えます。移行先はCentOS7のサーバで
あると仮定します。稼働イメージとしては以下です。
docker環境を使ってWordpress、MySQL、phpMyAdminコンテナを稼働するのは同じになります。
コンテナ的に同じ環境を作っても、
データも移動しないと全く同じ環境を作ることは出来ません。
今回はphpMyAdminの機能を使ってWordpressのデータが格納されているMySQLデータベースのデータを全部backup取得。
そのデータを新しい環境にrestoreすることで環境を整える。
(最もドメインなどの問題も本番だと絡んでくると思いますが、
今回は一旦無視。)
手順
AWSのEC2でRHEL8を作成し、セキュリティグループを以下にしました。
ポートはWordpressとphpMyAdminのDockerコンテナに合わせます。
今回は8080と8888に合わせています。
以下コマンドを実行してRHEL8上にdockerとdocker-compose環境を構築
[ec2-user@ip-10-0-1-13 ~]$ sudo su -
[root@ip-10-0-1-13 ~]# dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
[root@ip-10-0-1-13 ~]# dnf repolist -v
[root@ip-10-0-1-13 ~]# dnf install docker-ce
[root@ip-10-0-1-13 ~]# systemctl enable --now docker
[root@ip-10-0-1-13 ~]# systemctl is-active docker
[root@ip-10-0-1-13 ~]# systemctl is-enabled docker
[root@ip-10-0-1-13 ~]# curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[root@ip-10-0-1-13 ~]# chmod 755 /usr/local/bin/docker-compose
[root@ip-10-0-1-13 ~]# docker-compose --version
wordpress用のディレクトリを用意します。
今回は/ディレクトリ直下に作成してみることにしました。
[root@ip-10-0-1-13 ~]# cd /
[root@ip-10-0-1-13 /]# ls
bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@ip-10-0-1-13 /]# mkdir wordpress
[root@ip-10-0-1-13 /]# cd wordpress/
docker-compose.ymlをwordpressディレクトリに作成します。
YAMLファイルの中身は以下の通りにしています。
[root@ip-10-0-1-13 wordpress]# vi docker-compose.yml
[root@ip-10-0-1-13 wordpress]# cat docker-compose.yml
version: "3"
services:
db:
image: mysql:5.7
#container_name: "mysql57"
volumes:
- db-store:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_pass_fB3uWvTS
MYSQL_DATABASE: wordpress_db
MYSQL_USER: user
MYSQL_PASSWORD: user_pass_Ck6uTvrQ
wordpress:
image: wordpress:latest
#container_name: "wordpress"
restart: always
depends_on:
- db
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress_db
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: user_pass_Ck6uTvrQ
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
#container_name: "phpmyadmin"
restart: always
depends_on:
- db
ports:
- 8888:80
volumes:
db-store:
docker-compose upを実行してコンテナを稼働させる
[root@ip-10-0-1-13 wordpress]# docker-compose up
稼働出来たらdocker psでコンテナを確認
wordpressサーバは8080ポートで受け付け、phpmyadminは8888ポートで受けていることが分かりますね。
[root@ip-10-0-1-13 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26c56b54fb88 wordpress:latest "docker-entrypoint.s…" 50 seconds ago Up 47 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp wordpress_wordpress_1
a6b0bbfc0e53 phpmyadmin/phpmyadmin:latest "/docker-entrypoint.…" 50 seconds ago Up 47 seconds 0.0.0.0:8888->80/tcp, :::8888->80/tcp wordpress_phpmyadmin_1
29f5ad8300ba mysql:5.7 "docker-entrypoint.s…" 52 seconds ago Up 49 seconds 3306/tcp, 33060/tcp wordpress_db_1
WebブラウザでWordpressコンテナにアクセスします。
今回のRHEL8サーバはIPアドレス18.179.84.16で稼働していたので、
http://18.179.84.16:8080
でwordpressコンテナにアクセス出来ます。
設定画面に入れることが確認出来ました。
適当に編集して超うるさいサイトを作ってみました(笑)
このサーバを移行していきましょう。
データベースのデータバックアップを取得していきます。
phpMyAdminにWebブラウザでアクセスしていきます。
アクセスする為には今回は以下のURLにアクセスします。
http://18.179.84.16:8888/
IDとPASSは以下になります。(YAMLファイルに書いている通りです。)
ID:user PASS:user_pass_Ck6uTvrQ
ログイン出来たら画面上部に存在するエクスポートを選択します。
デフォルトの設定のまま、実行を押下します。
バックアップデータをダウンロードできます。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Wordpress移行先のCentOS7サーバの環境を整えていきます。
以下のコマンドを実行してDockerとdocker-compose環境を
作っていきます。
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[root@localhost ~]# yum install -y docker-ce docker-ce-cli containerd.io
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
[root@localhost ~]# curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[root@localhost ~]# chmod 755 /usr/local/bin/docker-compose
/ディレクトリ直下にwordpressディレクトリを作成します。
[root@localhost ~]# cd /
[root@localhost /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@localhost /]# mkdir wordpress
[root@localhost /]# cd wordpress/
docker-compose.ymlファイルを作成します。内容はRHEL8と同じです。
[root@localhost wordpress]# vi docker-compose.yml
[root@localhost wordpress]# cat docker-compose.yml
version: "3"
services:
db:
image: mysql:5.7
#container_name: "mysql57"
volumes:
- db-store:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_pass_fB3uWvTS
MYSQL_DATABASE: wordpress_db
MYSQL_USER: user
MYSQL_PASSWORD: user_pass_Ck6uTvrQ
wordpress:
image: wordpress:latest
#container_name: "wordpress"
restart: always
depends_on:
- db
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress_db
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: user_pass_Ck6uTvrQ
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
#container_name: "phpmyadmin"
restart: always
depends_on:
- db
ports:
- 8888:80
volumes:
db-store:
docker-compose upを行いコンテナを立ち上げます。
また稼働していることを確認します。
[root@localhost wordpress]# docker-compose up
[root@localhost wordpress]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0caa74a6d87c wordpress:latest "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp wordpress_wordpress_1
aa7bf8296347 phpmyadmin/phpmyadmin:latest "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:8888->80/tcp, :::8888->80/tcp wordpress_phpmyadmin_1
ec87b15bdbcd mysql:5.7 "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 3306/tcp, 33060/tcp wordpress_db_1
8080と8888のポートを開放します。
[root@localhost wordpress]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@localhost wordpress]# firewall-cmd --zone=public --add-port=8888/tcp --permanent
success
[root@localhost wordpress]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
success
[root@localhost wordpress]# firewall-cmd --reload
success
[root@localhost wordpress]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: dhcpv6-client ssh
ports: 8888/tcp 8080/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
WebブラウザでphpMyAdminにアクセスします。
サーバのIPアドレスは192.168.3.38であったので、今回は
http://192.168.3.38:8888
でアクセス出来ます。
ログイン後、画面上部のインポートを選択します。
バックアップしたファイルを選択して実行を押します。
うまくいきました
wordpressにアクセスしていきます。
wordpressにアクセスするには、今回は
http://192.168.3.38:8080
となります。
アクセスした結果は以下です。同じ画面となっているので
うまく移行できたことが分かりますね!