EC2 Amazon Linux 2へWordPressサーバを引っ越し
どうも、UT(@ut_1029)です。WordPressをAWSへサーバ引っ越しました。その時のサーバ引っ越し作業手順を備忘録としてまとめました。

基本的に引っ越し前のWebサーバでWordPressが動いていた前提の内容となっています。動作環境としては"Nginx" “PHP-fpm" “MySQL"の構成です。
- AWS
- AWSでアカウントを作成
- EC2(Amazon Linux 2)を作成
- RDS(MySQL)を作成
- 旧サーバ
- Nginx,PHP-fpmの設定ファイルをバックアップ
- WordPressのファイルをバックアップ
- MySQLに保存しているデータをバックアップ
- 新サーバ
- サーバ設定
- Nginx,PHP-fpmをインストール
- 旧サーバのNginx,PHP-fpmの設定を反映
- WordPressを設置
- MySQLへデータをリストア
- SSLなど
AWSで作業
AWSにアカウントを作成する。
EC2を作成
Amazon Linux 2でEC2を作成する。
RDSを作成
MySQLでRDSを作成する。
新サーバで作業
サーバ初期設定
yumパッケージ更新
$ sudo yum update
タイムゾーン設定・確認
$ timedatectl status
Local time: Fri 2018-11-23 05:56:04 UTC
Universal time: Fri 2018-11-23 05:56:04 UTC
RTC time: Fri 2018-11-23 05:56:04
Time zone: n/a (UTC, +0000)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
$ sudo timedatectl set-timezone Asia/Tokyo
$ timedatectl status
Local time: Fri 2018-11-23 14:56:43 JST
Universal time: Fri 2018-11-23 05:56:43 UTC
RTC time: Fri 2018-11-23 05:56:43
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
ロケール、キーボードレイアウト設定・確認
$ localectl status
System Locale: LANG=en_US.UTF-8
VC Keymap: n/a
X11 Layout: n/a
$ sudo localectl set-locale LANG=ja_JP.UTF-8
$ sudo localectl set-keymap jp106
$ localectl status
System Locale: LANG=ja_JP.UTF-8
VC Keymap: jp106
X11 Layout: jp
X11 Model: jp106
X11 Options: terminate:ctrl_alt_bksp
viを設定
$ vi ~/.vimrc
set encoding=utf-8
set fenc=utf-8
set title
set tabstop=4
set shiftwidth=4
set ignorecase
set smartcase
Gitをインストール
$ sudo yum install git
Nginxをインストール
Nginxのパッケージを確認
$ amazon-linux-extras list | grep nginx
Nginxをインストール
$ sudo amazon-linux-extras install nginx1
Nginxのバージョンを確認
$ nginx -v
nginx version: nginx/1.20.0
PHP-fpmをインストール
PHPをインストール
$ sudo amazon-linux-extras install php8.0
PHPのバージョンを確認
$ php -v
PHP 8.0.8 (cli) (built: Jul 7 2021 17:35:32) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.8, Copyright (c) Zend Technologies
with Zend OPcache v8.0.8, Copyright (c), by Zend Technologies
PHP-fpmのバージョンを確認
$ php-fpm -v
PHP 8.0.8 (fpm-fcgi) (built: Jul 7 2021 17:37:26)
Copyright (c) The PHP Group
Zend Engine v4.0.8, Copyright (c) Zend Technologies
with Zend OPcache v8.0.8, Copyright (c), by Zend Technologies
もし「with Zend OPcache v7.2.11, Copyright (c) 1999-2018, by Zend Technologies」が出力されていない場合は、Opcacheをインストールする。
$ sudo yum install php-opcache
mbstringをインストール
$ sudo yum install php php-mbstring
PHP関係の環境がインストール出来たか確認
]$ yum list installed | grep php
php-cli.x86_64 7.4.7-1.amzn2 @amzn2extra-php7.4
php-common.x86_64 7.4.7-1.amzn2 @amzn2extra-php7.4
php-fpm.x86_64 7.4.7-1.amzn2 @amzn2extra-php7.4
php-json.x86_64 7.4.7-1.amzn2 @amzn2extra-php7.4
php-mbstring.x86_64 7.4.7-1.amzn2 @amzn2extra-php7.4
php-mysqlnd.x86_64 7.4.7-1.amzn2 @amzn2extra-php7.4
php-pdo.x86_64 7.4.7-1.amzn2 @amzn2extra-php7.4
MySQL(MariaDB)をインストール
MariaDBをインストール
$ sudo yum install mariadb
旧サーバで作業
各種設定ファイルを圧縮ファイル
NginxとPHPの各種設定ファイルを圧縮ファイルへ
$ sudo tar zcf /tmp/etc.files.tar.gz /etc/nginx /etc/php-fpm.d /etc/php.ini /etc/php-fpm.conf
WordPressを圧縮ファイルへ
$ sudo tar zcf /tmp/wordpress.files.tar.gz /var/www/blog
DBをダンプ
WordPressのデータベースのデータと定義をダンプ
$ mysqldump -h RDSのエンドポイント -u ユーザ名 -p データベース名 > /tmp/wordpress.dump.sql
ローカルPCで作業
旧サーバの各種設定ファイルとDBダンプファイルをSCPでダウンロード
ローカルPCへ旧サーバのファイルをSCPでダウンロード
$ scp -i SSHの鍵 ユーザ名@IPアドレスorドメイン:/tmp/etc.files.tar.gz /tmp/
$ scp -i SSHの鍵 ユーザ名@IPアドレスorドメイン:/tmp/wordpress.files.tar.gz /tmp/
$ scp -i SSHの鍵 ユーザ名@IPアドレスorドメイン:/tmp/wordpress.dump.sql /tmp/
新サーバへ転送
ローカルPCから新サーバへファイルをSCPで転送
$ scp /tmp/etc.files.tar.gz -i SSHの鍵 ユーザ名@IPアドレスorドメイン:/tmp/
$ scp /tmp/wordpress.files.tar.gz -i SSHの鍵 ユーザ名@IPアドレスorドメイン:/tmp/
$ scp /tmp/wordpress.dump.sql -i SSHの鍵 ユーザ名@IPアドレスorドメイン:/tmp/
新サーバで作業
旧サーバの各種設定ファイルを配置する
Nginx設定ファイルを配置
ファイルを解凍
$ tar zxvf /tmp/etc.files.tar.gz
元ファイルを退避
$ sudo mv /etc/nginx/ /etc/nginx~
ファイルを配置
$ sudo mv /tmp/nginx /etc/nginx
PHP設定ファイルを設定
元ファイルを退避
$ sudo mv /etc/php-fpm.d /etc/php-fpm.d~
$ sudo mv /etc/php.ini /etc/php.ini~
$ sudo mv /etc/php-fpm.conf /etc/php-fpm.conf~
ファイルを配置
$ sudo mv /tmp/php-fpm.d /etc/php-fpm.d
$ sudo mv /tmp/php.ini /etc/php.ini
$ sudo mv /tmp/php-fpm.conf /etc/php-fpm.conf
WordPressをドキュメントルートへ配置
ファイルを解凍
$ tar zxvf /tmp/wordpress.files.tar.gz
ドキュメントルートを準備
$ sudo mkdir /var/www
ファイルを配置
$ sudo mv /tmp/blog /var/www
ファイルのパーミッションを設定
$ sudo chown -R nginx:ec2-user /var/www
$ sudo chmod -R 775 /var/www
WordPressの設定ファイルを編集
$ vi /var/www/blog/wp-config.php
DBをリストア
データベースを作成(作っていない場合)
CREATE DATABASE wordpress;
DBへダンプしたファイルを流し込んでリストア
$ mysql -h RDSのエンドポイント -u ユーザ名 -p データベース名 < /tmp/wordpress.dump.sql
ドメイン切り替え
ドメインを新サーバへ切り替えを行う。
# MACの場合
$ sudo vi /private/etc/hosts
Let’s Encrypt でSSL設定
Let’s EncryptでhttpsとなるようにSSL設定を行います。
どうやら仕様が変更されたらしくsnapdでcertbotをインストールするようになったみたいです
ただ、AmazonLinux2 で snapd をインストールする方法は書かれていないので、snapd のパッケージを管理しているリポジトリを設定します。
参考記事:AmazonLinux2でLet’s Encryptを使う(snapd編)、AmazonLinux2 に snapd を入れて certbot による証明書自動更新生活を満喫する
$ cd /etc/yum.repos.d/
$ sudo wget https://people.canonical.com/~mvo/snapd/amazon-linux2/snapd-amzn2.repo
$ sudo vi /etc/yum.conf
exclude=snapd-*.el7 snap-*.el7
これで snapd のインストールができます。
$ sudo yum install snapd
$ sudo systemctl enable --now snapd.socket
snapd が最新バージョンか確認します。
$ sudo snap install core
2021-08-29T22:53:56+09:00 INFO Waiting for automatic snapd restart...
core 16-2.51.4 from Canonical✓ installed
$ sudo snap refresh core
$ sudo snap install --classic certbot
certbot 1.18.0 from Certbot Project (certbot-eff✓) installed
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
↓は古いやつ
certbot-autoをcURLでインストール
$ sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
Amazon Linux 2 に対する考慮を行う
$ sudo vi /usr/bin/certbot-auto
elif [ -f /etc/issue ] && grep -iq "Amazon Linux" /etc/issue ; then
Bootstrap() {
ExperimentalBootstrap "Amazon Linux" BootstrapRpmCommon
}
BOOTSTRAP_VERSION="BootstrapRpmCommon $BOOTSTRAP_RPM_COMMON_VERSION"
↓ へ編集
elif grep -i "Amazon Linux" /etc/issue > /dev/null 2>&1 || \
grep 'cpe:.*:amazon_linux:2' /etc/os-release > /dev/null 2>&1; then
Bootstrap() {
ExperimentalBootstrap "Amazon Linux" BootstrapRpmCommon
}
BOOTSTRAP_VERSION="BootstrapRpmCommon $BOOTSTRAP_RPM_COMMON_VERSION"
# --webroot Webサーバを利用して証明書を取得する
# -w ドキュメントルートの値
# -d ドメインの値
# --debug Amazon Linux 2は試験的な運用のためこのオプションを指定
# -v 証明書発行の過程を詳細に表示する
$ sudo certbot-auto certonly --webroot -w <YOUR_DOCUMENT_ROOT> -d <PUBLIC_DNS> --debug -v
作成された証明書を確認
$ sudo ls /etc/letsencrypt/live/<PUBLIC_DNS>/
さいごに
これでサーバの引っ越しはできるかと思います。ただNginxやPHPのバージョンだったりOSの違いなどでうまくいかないこともあると思います。
実は、今回作業している様子を動画にしようと思ったのですが、なかなか面倒だったりして先にブログだけ書きあげちゃいました。なので、動画作るか画面キャプチャを貼るかしようと思います。
ディスカッション
コメント一覧
まだ、コメントがありません