【EC2】WordPressインストール

#　前提
- RDS（MySQL）作成済み
- EC2（今回はAmazon Linux 2）作成済み
- EC2からRDSへログインできる
- Wordpressの要件
    - PHP バージョン 7.3 以上。
    - MySQL バージョン 5.6 以上、または MariaDB バージョン 10.1 以上。
    - HTTPS 対応
    https://ja.wordpress.org/about/requirements/

# 手順
## 1)EC2にPHPインストール
- yum -y installだとPHP 5系がインストールされる

```
$ sudo su -
$ sudo yum -y update
$ sudo yum -y install php
$ php -v
PHP 5.4.16 (cli) (built: Sep  1 2018 05:47:37)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
```

- PHP 7.3以上をインストールしたいので、amazon-linux-extrasを使ってインストールする
- Extras でインストール可能なソフトウェア一覧確認

```
$ sudo amazon-linux-extras list | grep php 
15  php7.2                   available    \
16  php7.1                   available    \
17  lamp-mariadb10.2-php7.2  available    \
31  php7.3                   available    \
```

- PHP 7.3インストール

```
$ sudo amazon-linux-extras install php7.3
$ sudo amazon-linux-extras list | grep php 
  _  php7.2                   available    \
  _  php7.1                   available    \
  _  lamp-mariadb10.2-php7.2  available    \
 31  php7.3=latest            enabled      \
```

- PHPのバージョン確認

```
$ php -v
PHP 7.3.6 (cli) (built: Jun 12 2019 20:40:46) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.6, Copyright (c) 1998-2018 Zend Technologies
```

## ２）Apacheをインストール
- インストール

```
$ sudo yum -y install httpd
```

- Apacheを起動

```
$ sudo systemctl status httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd
　→「Active: active (running)」になればいい
```
- Apacheの自動起動設定

```
$ sudo systemctl is-enabled httpd
disabled
$ sudo systemctl enable httpd
$ sudo systemctl is-enabled httpd
enabled
```

## ３）EC2にWordPressをインストール
- wgetコマンドをつかってwordpressのサイトからインストール

```
$ sudo su -
# cd /var/www/html
# wget http://ja.wordpress.org/latest-ja.zip
# ll
total 12508
-rw-r--r-- 1 root root 12806154 Jul 24 14:00 latest-ja.zip

# unzip -q latest-ja.zip
# ll
total 12508
-rw-r--r-- 1 root root 12806154 Jul 24 14:00 latest-ja.zip
drwxr-xr-x 5 root root     4096 Jul 24 14:00 wordpress
```
- wordpressディレクトリの中のファイルを/var/www/htmlディレクトリに移動

```
# cd /var/www/html/wordpress
# mv * ..
# cd ..
# pwd
/var/www/html
# ll
total 12708
-rw-r--r--  1 root root      420 Nov 30  2017 index.php
-rw-r--r--  1 root root 12806154 Jul 24 14:00 latest-ja.zip
-rw-r--r--  1 root root    19935 Jan  1  2019 license.txt
-rw-r--r--  1 root root    10319 Jul 24 14:00 readme.html
drwxr-xr-x  2 root root        6 Aug 20 08:45 wordpress
-rw-r--r--  1 root root     6919 Jan 12  2019 wp-activate.php
drwxr-xr-x  9 root root     4096 Jul 24 14:00 wp-admin
-rw-r--r--  1 root root      369 Nov 30  2017 wp-blog-header.php
-rw-r--r--  1 root root     2283 Jan 21  2019 wp-comments-post.php
-rw-r--r--  1 root root     3900 Jul 24 14:00 wp-config-sample.php
drwxr-xr-x  5 root root       69 Jul 24 14:00 wp-content
-rw-r--r--  1 root root     3847 Jan  9  2019 wp-cron.php
drwxr-xr-x 20 root root     8192 Jul 24 14:00 wp-includes
-rw-r--r--  1 root root     2502 Jan 16  2019 wp-links-opml.php
-rw-r--r--  1 root root     3306 Nov 30  2017 wp-load.php
-rw-r--r--  1 root root    39551 Jun 10 13:34 wp-login.php
-rw-r--r--  1 root root     8403 Nov 30  2017 wp-mail.php
-rw-r--r--  1 root root    18962 Mar 28 19:04 wp-settings.php
-rw-r--r--  1 root root    31085 Jan 16  2019 wp-signup.php
-rw-r--r--  1 root root     4764 Nov 30  2017 wp-trackback.php
-rw-r--r--  1 root root     3068 Aug 17  2018 xmlrpc.php
```

- htmlディレクトリのユーザとグループををapacheに変更

```
# ll /var/www/ | grep html
drwxr-xr-x 6 root root 4096 Aug 20 08:45 html
# chown -R apache:apache /var/www/html
# ll /var/www/ | grep html
drwxr-xr-x 6 apache apache 4096 Aug 20 08:45 html
```

- wordpressの設定ファイルを編集（wp-config.phpを編集）
    - 設定を間違えると、サイト接続時に「データベース接続確立エラー」が出る

```
# ll /var/www/html | grep wp-config
-rw-r--r--  1 apache apache     3900 Jul 24 14:00 wp-config-sample.php
# cp -p /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
# ll /var/www/html | grep wp-config
-rw-r--r--  1 apache apache     3900 Jul 24 14:00 wp-config.php
-rw-r--r--  1 apache apache     3900 Jul 24 14:00 wp-config-sample.php
# vi /var/www/html/wp-config.php
（略） # MySQLで設定したDBの名前、ユーザ名、パスワードを記載

/** WordPress のためのデータベース名 */
define('DB_NAME', 'mysqltest1');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'admin');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'xxxx');

/** MySQL のホスト名 */
define('DB_HOST', 'mysqltest.xxxx.us-west-2.rds.amazonaws.com');

/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

（略） ↓ ユニークキーを記載
    　ユニークキー生成サイト（https://api.wordpress.org/secret-key/1.1/salt/）をコピーし貼り付け

define('AUTH_KEY',         'xxxxx');
define('SECURE_AUTH_KEY',  'xxxxx');
define('LOGGED_IN_KEY',    'xxxxx');
define('NONCE_KEY',        'xxxxx');
define('AUTH_SALT',        'xxxxx');
define('SECURE_AUTH_SALT', 'xxxxx');
define('LOGGED_IN_SALT',   'xxxxx');
define('NONCE_SALT',       'xxxxx');

（略）
```

## ４）接続確認
- WordPressの管理画面にアクセス
    - ブラウザから「http://<EC2のパブリックIP or パブリックDNS>/wp-admin/」 にアクセス

- 以下のような画面がでればOK
<img width="1573" alt="WordPress_›_インストール.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/6351d022-0805-4c37-b381-6ed15da26bb6.png">