見出し画像

Docker-compose上のWordpress環境移行手順のメモ

前回の記事

こんにちは。しょうです。
今回は以下の記事の続き、Wordpressの移行手順について記載をして
いこうと思います。
前回の記事では
・Wordpressと他のCMSの違いとメリットデメリット
・Docker-composeを使用してWordpressを構築すると
 構築するための障壁がグッと下がり簡単に構築出来る
ということを書かせて頂きました。


今回の環境想定

まずAWS EC2上にRHEL8上にdocker及びdocker-compose環境を構築。
さらにその上にWordpress、MySQL、phpMyAdminコンテナをデプロイ。
デプロイが完了したらWordpressにログインして適当に記事データを
作成したり画像データを格納してみます。

画像1


上記で運用していたが、パブリッククラウド環境からオンプレに
移行しないといけなくなったと考えます。移行先はCentOS7のサーバで
あると仮定します。稼働イメージとしては以下です。
docker環境を使ってWordpress、MySQL、phpMyAdminコンテナを稼働するのは同じになります。

画像2


コンテナ的に同じ環境を作っても、
データも移動しないと全く同じ環境を作ることは出来ません。
今回はphpMyAdminの機能を使ってWordpressのデータが格納されているMySQLデータベースのデータを全部backup取得。
そのデータを新しい環境にrestoreすることで環境を整える。
(最もドメインなどの問題も本番だと絡んでくると思いますが、
今回は一旦無視。)

画像3


手順

AWSのEC2でRHEL8を作成し、セキュリティグループを以下にしました。
ポートはWordpressとphpMyAdminのDockerコンテナに合わせます。
今回は8080と8888に合わせています。

画像4


以下コマンドを実行して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コンテナにアクセス出来ます。

画像5


設定画面に入れることが確認出来ました。

画像6


適当に編集して超うるさいサイトを作ってみました(笑)
このサーバを移行していきましょう。

画像7


データベースのデータバックアップを取得していきます。
phpMyAdminにWebブラウザでアクセスしていきます。
アクセスする為には今回は以下のURLにアクセスします。
http://18.179.84.16:8888/

IDとPASSは以下になります。(YAMLファイルに書いている通りです。)
ID:user  PASS:user_pass_Ck6uTvrQ

画像8


ログイン出来たら画面上部に存在するエクスポートを選択します。

画像9


デフォルトの設定のまま、実行を押下します。

画像10


バックアップデータをダウンロードできます。

画像11


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

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
でアクセス出来ます。

画像12


ログイン後、画面上部のインポートを選択します。

画像13


バックアップしたファイルを選択して実行を押します。

画像14


うまくいきました

画像15


wordpressにアクセスしていきます。
wordpressにアクセスするには、今回は
http://192.168.3.38:8080
となります。
アクセスした結果は以下です。同じ画面となっているので
うまく移行できたことが分かりますね!

画像16


この記事が参加している募集

#最近の学び

181,465件

この記事が気に入ったらサポートをしてみませんか?