はじめに
突然「よーしパパAWSでWordPress頼んじゃうぞー」と思い立つ。
まずは検索。
https://www.google.com/search?q=aws+wordpress
情報いっぱいあるし、余裕だな。
アカウントを作る
AWS アカウント作成の流れ
簡単そうだな。
スケーラブルなウェブサイトの構築方法:フェーズ 1
サーバー 1 台構成で WordPress 環境を構築
スケーラブルにはしないのでサブネットの設定などは必要無いのだが、特に考えずにチュートリアルの通り進める。
見本の画面と実際の画面がところどころ違うが、大した問題ではない。
簡単すぎる。
WordPressでハマる
無事にインスタンスが起動した。フェーズ 1-5でWordPressの操作を始めるのだが、ログインできない。
データベースのパスワード・・・あったか?そんなの。
説明にはこう書いてある。
作成した MySQL の DB 設定に基づき、設定します。
1.「admin」と入力します。
2. 指定した DB 接続用パスワード (wordpress) を入力します。
3.「送信」をクリックします。
空欄とかコンソール・ログインパスワードなど色々試したが通らない。
WordPress ウェブサイトの起動
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に書いてあった。
ユーザー名: ec2-user
無事にSSHにログインできた。
EC2 Linux インスタンスの root パスワードを設定または変更するにはどのようにしたらよいですか?
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が無い。つまりインストールが終わってない。
という事はデフォルトのパスワードがどこかに書いてあるのでは?
・・・ハッ!
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と分かればあとは楽だろう。
最新のWordPress向けにPHPをバージョンアップする
AWS EC2 + CentOS 7.6 + Apache 2.4 + PHP 7.3 + MySQL 8.0 でWordPress5.1を動かす
# 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つ
所有者を変更して解決。
# chown -R apache:apache /var/www/html/
まとめ
- AWSは誰でも簡単にWordPressが設置できる
- ユーザー名は ec2-user
- デフォルトのパスワードは説明書に書いてある
- httpdはnginx