目次
その作業の内容を簡単にまとめておきます。
環境確認
構成図を簡単に書いてみると、こんな感じでしょうか。冗長構成はとっておらず、すべてシングル構成のシンプルな環境になっています。
お金があれば、ロードバランサを使って冗長構成にしたいのですが。。。
現環境
現在の環境は以下のようになっています。項目 | 環境 |
---|---|
CMS | WordPress 5.1.1 |
インフラ | AWS EC2 |
OS | CentOS |
Web | httpd 2.2 |
Database | MySQL on AWS RDS |
Domain | hosted a Zone on Route53 |
新環境
新環境は以下のようなイメージです。変更するのは OS と Webサーバ の2つで、それ以外は現状の環境をそのまま引き継ぐことにします。
項目 | 環境 |
---|---|
CMS | WordPress 5.1.1 |
インフラ | AWS EC2 |
OS | Amazon Linux 2 |
Web | httpd 2.4 |
Database | MySQL on AWS RDS |
Domain | hosted a Zone on Route53 |
環境構築
EC2インスタンスの作成
AWSマネジメントコンソールから、EC2インスタンスを作成します。使用したAMIは「Amazon Linux 2 AMI (HVM), SSD Volume Type – ami-061392db613a6357b (64 ビット x86)」です。 こちらは特別な設定は行わずに、素直に作成しました。
OSの初期設定
作成したEC2インスタンスで動作している Amazon Linux 2 へログインして、諸々の環境を整えていきます。 まずは、OSのバージョンなどを確認してみました。
$ uname -a
Linux ip-10-0-20-108.us-west-2.compute.internal 4.14.104-95.84.amzn2.x86_64 #1 SMP Sat Mar 2 00:40:20 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/system-release
Amazon Linux release 2 (Karoo)
$ sudo su -
# timedatectl set-timezone Asia/Tokyo
# yum -y update
# yum -y install gcc
# yum -y install gcc-c++
PHPのインストール
ここを見ると、Wordpressは PHP 7.3以上を推奨しているようです。インストールできるPHPのバージョンを見てみると、以下のような感じでした。
PHP 7.2系までしかないみたいですね。。。
# amazon-linux-extras list
0 ansible2 available [ =2.4.2 =2.4.6 ]
2 httpd_modules available [ =1.0 ]
3 memcached1.5 available [ =1.5.1 ]
4 nginx1.12 available [ =1.12.2 ]
5 postgresql9.6 available [ =9.6.6 =9.6.8 ]
6 postgresql10 available [ =10 ]
8 redis4.0 available [ =4.0.5 =4.0.10 ]
9 R3.4 available [ =3.4.3 ]
10 rust1 available \
[ =1.22.1 =1.26.0 =1.26.1 =1.27.2 =1.31.0 ]
11 vim available [ =8.0 ]
13 ruby2.4 available [ =2.4.2 =2.4.4 ]
15 php7.2 available \
[ =7.2.0 =7.2.4 =7.2.5 =7.2.8 =7.2.11 =7.2.13 =7.2.14 ]
16 php7.1 available [ =7.1.22 =7.1.25 ]
17 lamp-mariadb10.2-php7.2 available \
[ =10.2.10_7.2.0 =10.2.10_7.2.4 =10.2.10_7.2.5
=10.2.10_7.2.8 =10.2.10_7.2.11 =10.2.10_7.2.13
=10.2.10_7.2.14 ]
18 libreoffice available [ =5.0.6.2_15 =5.3.6.1 ]
19 gimp available [ =2.8.22 ]
20 docker=latest enabled \
[ =17.12.1 =18.03.1 =18.06.1 ]
21 mate-desktop1.x available [ =1.19.0 =1.20.0 ]
22 GraphicsMagick1.3 available [ =1.3.29 ]
23 tomcat8.5 available \
[ =8.5.31 =8.5.32 =8.5.38 ]
24 epel available [ =7.11 ]
25 testing available [ =1.0 ]
26 ecs available [ =stable ]
27 corretto8 available [ =1.8.0_192 =1.8.0_202 ]
28 firecracker available [ =0.11 ]
29 golang1.11 available [ =1.11.3 ]
30 squid4 available [ =4 ]
31 php7.3 available [ =7.3.2 ]
32 lustre2.10 available [ =2.10.5 ]
# amazon-linux-extras info php7.2
php7.2 recommends php-cli # yum install php-cli
php7.2 recommends php-pdo # yum install php-pdo
php7.2 recommends php-fpm # yum install php-fpm
php7.2 recommends php-json # yum install php-json
php7.2 recommends php-mysqlnd # yum install php-mysqlnd
# amazon-linux-extras install php7.2
# yum -y install php-mbstring
# yum -y install php-gd
# yum -y install php-xml
# yum -y install httpd
WordPressの移行
現環境で動作しているWordpressを新環境へ移行します。 現環境のWordpressは、/data/wordpress というディレクトリに配置しているので、ディレクトリをアーカイブして新環境へ転送します。
# cd /data
# tar zxvf wordpress.tar.gz
# tar zcvf wordpress.tar.gz ./wordpress
httpdの設定
新環境のhttpd.confを、現環境と同じ内容で設定します。今回は、httpd2.2系からhttpd2.4系とバージョンを上げているので、httpd.confの書き方も少し変わっていました。
この辺りを参考に、httpd.confを修正しました。
# systemctl start httpd
# systemctl enable httpd
切り替え
最後に、現環境のEC2に関連づけているElastic IPを、新環境のEC2に付け替えます。これで、Wordpressにアクセスした際に、新環境へリクエストが流れるようになります。 ただ、DNSのキャッシュが残っている場合がありますので、切り替わるまでには少し時間がかかる場合もあります。
ディフォルトだと、Aレコードのキャッシュ時間は300秒です。
まとめ
かなりざっくりとしたメモレベルの内容になりますが、データベースを別ホストで動かしている場合は、Wordpressを新しいEC2インスタンスに切り替えるのは思いのほか簡単にできました。 httpdなども、パッケージでインストールしたので非常に簡単でした。これほど移行が簡単にできるのであれば、特に理由がなければソースからインストールする必要性はあまりなさそうですね。