AWSでWordPressを始めてハマった話

# はじめに
突然「よーしパパAWSでWordPress頼んじゃうぞー」と思い立つ。

まずは検索。
https://www.google.com/search?q=aws+wordpress

情報いっぱいあるし、**余裕だな**。

# アカウントを作る
[AWS アカウント作成の流れ](https://aws.amazon.com/jp/register-flow/)
**簡単そうだな**。

[スケーラブルなウェブサイトの構築方法：フェーズ 1
サーバー 1 台構成で WordPress 環境を構築](https://aws.amazon.com/jp/getting-started/projects/scalable-wordpress-website/01/)
スケーラブルにはしないのでサブネットの設定などは必要無いのだが、特に考えずにチュートリアルの通り進める。
見本の画面と実際の画面がところどころ違うが、大した問題ではない。
**簡単すぎる**。
# WordPressでハマる
無事にインスタンスが起動した。[フェーズ 1-5](https://aws.amazon.com/jp/getting-started/projects/scalable-wordpress-website/01/05/)でWordPressの操作を始めるのだが、**ログインできない。**
![wp0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563735/00f93360-6f36-b083-d5f9-fe3cebf36de4.jpeg)
データベースのパスワード・・・あったか？そんなの。
説明にはこう書いてある。
>作成した MySQL の DB 設定に基づき、設定します。  
>1.「admin」と入力します。
>2. 指定した DB 接続用パスワード (wordpress) を入力します。
>3.「送信」をクリックします。

空欄とかコンソール・ログインパスワードなど色々試したが通らない。

[WordPress ウェブサイトの起動](https://aws.amazon.com/jp/getting-started/tutorials/launch-a-wordpress-website/)
AWSマネジメントコンソール->EC2->インスタンス->アクション->インスタンスの設定->システムログの取得 でパスワードを探したが見当たらない。
30分ほど調べて**wp-config.phpをイジる方針に変更**。
# SSHでハマる
teratermでログインする。秘密鍵ファイルec2handson.pemがあったのでrootログインできると思っていたがログインできない。
思い当たるユーザ名をいくつか試したが通らない。**ナゼだ・・・？**
何度か試していると何かメッセージが出てる事に気がついた。

```
Please login as the user "ec2-user" rather than the user "root".
```
ん？　ec2-user・・・なんだそれは？
よく見たら[ステップ 4-1](https://aws.amazon.com/jp/getting-started/projects/scalable-wordpress-website/01/05/#%E3%82%B9%E3%83%86%E3%83%83%E3%83%97_4-1:_Windows_%E3%81%8B%E3%82%89%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%B8_SSH_%E3%81%A7%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3)に**書いてあった**。
![ec2shuchu.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563735/9588b2dd-cc6e-cbd8-23fe-6fda27d5a6cd.jpeg)
# ユーザー名: ec2-user
無事にSSHにログインできた。
[EC2 Linux インスタンスの root パスワードを設定または変更するにはどのようにしたらよいですか?](https://aws.amazon.com/jp/premiumsupport/knowledge-center/set-change-root-linux/)
root権限で作業するのは邪道と聞いた事がある。するけど。
Amazon Linuxはよく知らないので手探り。
httpd.confの場所を探す。

```
# find / -name httpd.conf
/etc/httpd/conf/httpd.conf
```
DocumentRootの場所を探す。

```
# grep DocumentRoot /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html"
```
CentOSに近い感じ。WordPressの様子を調べる。

```
# ll /var/www/html
total 220
-rwxrwxrwx  1 apache apache   420 Feb  2 12:13 index.php
-rwxrwxrwx  1 apache apache 19935 Feb  2 13:30 license.txt
-rwxrwxrwx  1 apache apache 10180 Feb  2 13:30 readme.html
-rwxrwxrwx  1 apache apache  6939 Feb  2 13:30 wp-activate.php
drwxrwxrwx  9 apache apache  4096 Feb  2 13:30 wp-admin
(略)
```
あれ。wp-config.phpが無い。つまりインストールが終わってない。
という事はデフォルトのパスワードが**どこかに書いてあるのでは？**
・・・ハッ！
![passwp.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563735/d20494e8-987a-8807-ab02-2b041bb3ac5c.jpeg)
# Apacheでハマる
無事にWordPressにログインできた。更新を掛けるとPHP5.5が古いと指摘された。
リポジトリにphp7.3があるか確認。

```
# yum list | grep php73
php73.x86_64             7.3.11-1.21.amzn1          @amzn-updates
php73-cli.x86_64         7.3.11-1.21.amzn1          @amzn-updates
php73-common.x86_64      7.3.11-1.21.amzn1          @amzn-updates
php73-fpm.x86_64         7.3.11-1.21.amzn1          @amzn-updates
```
ありそう。**まずはApacheを止める。**

```
# service httpd stop
Stopping httpd:                             [FAILED]
```

ん？　止まらない。既に止まってるのか？

```
# service httpd start
Starting httpd: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs                       [FAILED]
```
Apacheは止まってるが何かのプロセスがport80を使ってる。なんだ？
プロセス番号を調べてkillしてみよう。

```
# lsof -i | grep http
nginx   2811   root  6u  IPv4  11918   0t0  TCP *:http (LISTEN)
nginx   2811   root  7u  IPv6  11919   0t0  TCP *:http (LISTEN)
nginx   2814  nginx  6u  IPv4  11918   0t0  TCP *:http (LISTEN)
nginx   2814  nginx  7u  IPv6  11919   0t0  TCP *:http (LISTEN)
```
![nginx.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563735/4f93e824-20d7-cac6-0ad0-ea28c93dead5.jpeg)
**nginxだこれ！**
# 解決
nginxと分かれば**あとは楽だろう。**
[最新のWordPress向けにPHPをバージョンアップする](https://www.saintsouth.net/blog/update-php-to-73-from-56/)
[AWS EC2 + CentOS 7.6 + Apache 2.4 + PHP 7.3 + MySQL 8.0 でWordPress5.1を動かす](https://qiita.com/she_takes/items/cfbe5c046a650fdce12b)

```
# service nginx stop
# service php-fpm stop
# yum remove php*
# yum remove httpd*
# yum clean all
# yum install php73 php73-cli php73-common php73-fpm php73-imap php73-json php73-mbstring php73-mysqlnd php73-opcache php73-pdo php73-process php73-xml
# vi /etc/php-fpm-7.3.d/www.conf
user = apache
group = apache
listen = 127.0.0.1:9000
# service php-fpm start
# service nginx start
```
PHP7.3になったがWordPressの更新でエラーが出た。
[WordPress更新時にFTP情報入力画面が表示される場合の対処方法3つ](https://www.sandalot.com/wordpress%E6%9B%B4%E6%96%B0%E3%81%A7ftp%E5%85%A5%E5%8A%9B%E7%94%BB%E9%9D%A2%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95/)
所有者を変更して解決。

```
# chown -R apache:apache /var/www/html/
```
![resultwp.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563735/e8a20bdf-35a1-83ec-7663-8b0c77a142d6.jpeg)
めでたしめでたし😇
# まとめ
- AWSは誰でも簡単にWordPressが設置できる
- ユーザー名は ec2-user
- デフォルトのパスワードは説明書に書いてある
- httpdはnginx