WordPressの引っ越し（CentOS7→Amazon Linux 2）

# 概要
<font color='red'>個人の備忘録メインのため、不備が多いかと思います。よろしければご指摘ください。</font>
これまで自宅サーバー（CentOS7）でWordPressのブログを運営してきましたが、EC2に引っ越ししてみます。
ついでにWebサーバーをApacheからNginxに変更してみます（ただの興味）。

# EC2
インスタンスの起動、Elastic IPの割り当て、セキュリティグループ設定は割愛します。

## 初期設定
基本、ルート権限で作業します。

```
$ sudo -s
```

### 1. ホスト名の変更

```
# vi /etc/hostname
```
### 2. タイムゾーンの設定

```
# rm -f /etc/localtime; ln -sf /usr/share/zoneinfo/Japan /etc/localtime
# vi /etc/sysconfig/clock
ZONE="UTC"のUTCをAsia/Tokyoに変更
```

### 3. 日本語対応

```
# vi /etc/sysconfig/i18n
LANG=en_US.UTF-8のen_US.UTF-8をja_JP.UTF-8に変更
# source /etc/sysconfig/i18n
```

### 4. 再起動

```
# reboot
```

参考URL
https://qiita.com/2no553/items/e166c00790c3397acf2d
http://mktktmr.hatenablog.jp/entry/2016/12/07/154736

## Nginx、PHPインストール

```
# amazon-linux-extras
…
 38  nginx1                   available    [ =stable ]
…
 42  php7.4                   available    [ =stable ]
…
# amazon-linux-extras install nginx1 php7.4
…
# systemctl start nginx
# systemctl enable nginx
…
# yum install php-mbstring
```

## MariaDBインストール
### 1. yumでインストール

```
# yum install mariadb-server
```

### 2. 文字コード設定
```
# vi /etc/my.cnf.d/server.cnf
…
[mysqld]
character-set-server = utf8 ← 追記
…
```

### 3. 起動
```
# systemctl start mariadb
# systemctl enable mariadb
```

### 4. 初期設定
```
# mysql_secure_installation
…
Enter current password for root (enter for none): ← 空Enter
…
Set root password? [Y/n] ← 空Enter
New password: ← rootパスワード
Re-enter new password: ← rootパスワード
…
Remove anonymous users? [Y/n] ← 空Enter
…
Disallow root login remotely? [Y/n] ← 空Enter
…
Remove test database and access to it? [Y/n] ← 空Enter
…
Reload privilege tables now? [Y/n] ← 空Enter
…
```

参考URL
https://centossrv.com/mariadb.shtml

# WordPress用の設定
## MariaDB
以下の設定とする。
データベース名：wordpress
ユーザー名：wordpress

```
# mysql -u root -p
> create database wordpress;
> grant all privileges on wordpress.* to wordpress@localhost identified by '(任意のパスワード)';
```

## PHP-FPM
```
# vi /etc/php-fpm.d/www.conf
…
user = nginx ← apacheから変更
group = nginx ← 〃
…
# systemctl restart php-fpm
# systemctl enable php-fpm
```

# 旧サーバーからのデータ移動
## 1. 旧サーバー処理
旧サーバーのディレクトリは以下にある。
/var/www/wordpress

```
### WordPress ###
# cd /var/www
# tar zcvf wordpress.tar.gz wordpress
# mv wordpress.tar.gz （ユーザーのホームディレクトリ）

### MariaDB ###
# mysqldump wordpress -u wordpress -p > dump.sql
```

## 2. 新サーバー処理
新サーバーのディレクトリは以下にする。
/usr/share/nginx/html/blog

```
### データコピー ###
# sftp （ユーザー名）@（旧サーバーのアドレス）
> get wordpress.tar.gz
> get dump.sql
> quit

### WordPress ###
# tar zxvf wordpress.tar.gz
# mv wordpress /usr/share/nginx/html/blog
# chown -R nginx. /usr/share/nginx/html/blog

### MariaDB ###
# mysql -u wordpress -p -D wordpress < dump.sql
```

# HTTPS対応
## Let's Encrypt導入
```
# amazon-linux-extras install epel
# yum install certbot-nginx
# certbot --nginx
…
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): ← メールアドレスを入力してEnter
…
(Y)es/(N)o: ← 1回目ライセンス関連：Yを入力してEnter
…
(Y)es/(N)o: ← 2回目メールアドレスの共有：YかNを入力してEnter
…
name(s) (comma and/or space separated)  (Enter 'c' to cancel): fugiters.net ← ホスト名を入力してEnter
…
```

参考URL
https://qiita.com/ntm718/items/37d1d0a7de2d1edb4e7c

## Nginx設定
設定ファイル（/etc/nginx/nginx.conf）の「Settings for a TLS enabled server.」の下の設定をコメントを外し、

```
# vi /etc/nginx/nginx.conf
…
    server {
        listen       443 ssl http2;
        listen       [::]:443 ssl http2;
        server_name  fugiters.net; ← ホスト名
        root         /usr/share/nginx/html;

        ssl_certificate "/etc/letsencrypt/live/fugiters.net/cert.pem"; ← 証明書
        ssl_certificate_key "/etc/letsencrypt/live/fugiters.net/privkey.pem"; ← 秘密鍵
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
#        ssl_ciphers PROFILE=SYSTEM; ← 不明
        ssl_prefer_server_ciphers on;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf; ← これが無いとPHP動かず（ここでハマった）

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
…
# systemctl restart nginx
```

# 参考URL
https://ja.wordpress.org/support/article/nginx/
https://note.com/hiroki_hachisuka/n/nc1d5342c3a9b