きっかけ
久しぶりにWordPressを触ってみたい衝動にかられて、"AWS WordPress"などで検索すると、
AWS謹製のチュートリアルを見つけたので何も考えずにインストールしてみた。
WordPress ウェブサイトを構築する
https://aws.amazon.com/jp/getting-started/projects/build-wordpress-website/
インストールできたはいいものの、「PHPのバージョンが古いよ」みたいなエラーが出たので
いっその事、一からインストールし直して最新バージョンにしてみようと試み、
Amazon Linuxにも慣れないのでCentOS7にして
ついでにMySQLも8.0系にしてみたら、いろいろハマったのでまとめてみる
AWS EC2でインスタンスを作る
普通にEC2でインスタンスを作る
- EC2ダッシュボードから「インスタンスの作成」をクリック
- AWS Marketplaceから"CentOS 7 (x86_64) - with Updates HVM"を選択する
- 詳細が表示されたら、"Continue"をクリック
- インスタンスタイプはお好みで
- インターネットからアクセス可能なサブネットを選択
- 自動割り当てパブリック IPを有効にするか、インスタンス生成後Elastic IPを割り当てる
- セキュリティグループでSSHとHTTPを許可する
OS周りの設定
インスタンスが立ち上がったらSSHでログインし、ひとまずアップデート
途中にGPGキーのインポートが行われるので、yを押してEnter
$ sudo yum update
必須ではないが、日本語環境にしておく
$ sudo yum install ibus-kkc vlgothic-*
$ sudo localectl set-locale LANG=ja_JP.UTF-8
$ source /etc/locale.conf
$ echo $LANG
ja_JP.UTF-8
試しにdateコマンドを打ってみると、UTC(協定世界時)が表示される
$ date
2019年 3月 21日 木曜日 17:50:02 UTC
これも必須ではないが、タイムゾーンを変更しておく
Time zoneが"Asia/Tokyo (JST, +0900)"になっているのを確認
$ sudo timedatectl set-timezone Asia/Tokyo
$ timedatectl
Local time: 金 2019-03-22 02:52:31 JST
Universal time: 木 2019-03-21 17:52:31 UTC
RTC time: 木 2019-03-21 17:52:30
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
あとでwgetとunzipを使うのでここでインストールしておく
vim派の人はvim等、必要なものを入れておく
$ sudo yum install wget unzip vim
SELinuxを無効化する
(これをうっかり忘れると、WordPressのDB設定時のwp-config.phpが生成できない)
$ getenforce
Enforcing
$ sudo vim /etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled
configファイルの編集が終わったら一度再起動する
$ sudo reboot
再起動後、SELinuxが無効化されていることを確認
$ getenforce
Disabled
WordPress 5.1 をダウンロードする
先にWordPressをダウンロードしておく
以下のURLから、必要なバージョンを確認しURLをコピーしておく
(2019年3月22日時点での最新バージョンは5.1.1)
$ wget https://ja.wordpress.org/wordpress-5.1.1-ja.zip
$ unzip wordpress-5.1.1-ja.zip
$ ls -l
合計 11892
drwxr-xr-x. 5 centos centos 4096 3月 13 15:03 wordpress
-rw-rw-r--. 1 centos centos 12171656 3月 13 15:04 wordpress-5.1.1-ja.zip
Apache 2.4 を入れる
次にWebサーバのApacheをインストール
$ sudo yum install httpd
何も考えずにインストールすれば、2.4系がインストールされる。
$ httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 5 2018 01:47:09
先程ダウンロードしたWordPressを/var/www/下に移動し、所有者等を変更する
$ sudo cp -r wordpress /var/www/
$ sudo chown -R apache:apache /var/www/wordpress
$ ls -l /var/www/
合計 4
drwxr-xr-x. 2 root root 6 11月 5 10:47 cgi-bin
drwxr-xr-x. 2 root root 6 11月 5 10:47 html
drwxr-xr-x. 5 apache apache 4096 3月 22 02:59 wordpress
Apacheの設定を変更する
先程/var/www/下に移動したWordPressディレクトリをドキュメントルートにし、
.htaccessによるディレクティブの上書きを許可する
$ cd /etc/httpd/conf
$ sudo cp -pi httpd.conf httpd.conf.org
$ sudo vim httpd.conf
# 119行目付近を修正
#DocumentRoot "/var/www/html"
DocumentRoot "/var/www/wordpress"
# 以下を追記
<Directory "/var/www/wordpress">
AllowOverride All
</Directory>
インストール後は停止しているので起動し、ついでに自動起動の設定をしておく
$ sudo systemctl start httpd
$ sudo systemctl enable httpd
起動していること(active)と、自動起動になっていること(httpd.service; enabled;)を確認
$ systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since 金 2019-03-22 03:12:38 JST; 12s ago
PHP 7.3 を入れる
何も考えずにインストールすると5.4系がインストールされてしまうので
EPELのレポジトリと、Remiのレポジトリを追加する
$ sudo yum install epel-release
$ sudo yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
PHP本体とwordpressに必要なPHP拡張をインストールする
GPGキーのインポート確認にはyを押してEnter
$ sudo yum install php php-mysql php-mbstring --enablerepo=remi-php73
インストールが完了したら念の為、バージョン確認
$ php --version
PHP 7.3.3 (cli) (built: Mar 5 2019 13:50:38) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.3, Copyright (c) 1998-2018 Zend Technologies
$ rpm -qa | grep php
php-json-7.3.3-1.el7.remi.x86_64
php-pdo-7.3.3-1.el7.remi.x86_64
php-7.3.3-1.el7.remi.x86_64
php-cli-7.3.3-1.el7.remi.x86_64
php-mbstring-7.3.3-1.el7.remi.x86_64
php-common-7.3.3-1.el7.remi.x86_64
php-mysqlnd-7.3.3-1.el7.remi.x86_64
Apacheを再起動しておく
$ sudo systemctl restart httpd
ここまで完了すると、ブラウザでサーバへアクセスしたときにWordPressの設定画面が表示される。
外部のDBに接続する場合はこれで大丈夫なはずだが、今回はlocalhostにDBを用意する
MySQL 8.0 を入れる
MySQLの公式サイトから、使用するMySQLのレポジトリのURLを確認する
https://dev.mysql.com/downloads/repo/yum/
"Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package"のDownloadボタンをクリックし、
表示されるログイン画面下部の、"No thanks, just start my download."のリンク先URLをコピーしておく
コピーしたURLを使って、rpmコマンドでレポジトリをインストール
$ sudo rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
MySQLをインストールする
GPGキーのインポートがでたら、yを押してEnter
$ sudo yum install mysql-community-devel
$ sudo yum install mysql-community-server
念の為バージョン確認
$ mysql --version
mysql Ver 8.0.15 for Linux on x86_64 (MySQL Community Server - GPL)
$ rpm -qa | grep mysql
mysql-community-libs-8.0.15-1.el7.x86_64
mysql-community-client-8.0.15-1.el7.x86_64
mysql80-community-release-el7-2.noarch
mysql-community-common-8.0.15-1.el7.x86_64
mysql-community-devel-8.0.15-1.el7.x86_64
php-mysqlnd-7.3.3-1.el7.remi.x86_64
mysql-community-libs-compat-8.0.15-1.el7.x86_64
mysql-community-server-8.0.15-1.el7.x86_64
起動する前に、my.cnfを修正する
ここでハマったのが、"default_authentication_plugin"という設定
MySQLの8系からパスワードが自動的に暗号化されたそうで、
この設定がないとWordPressからDBへ接続する際の認証で弾かれる
MySQL 8系で PHPから接続できない場合
http://bashalog.c-brains.jp/18/12/17-191903.php
$ sudo vim /etc/my.cnf
[mysqld]
# 最下部に以下を追記
log_timestamps=SYSTEM
skip-character-set-client-handshake
default_authentication_plugin= mysql_native_password
設定を書き換えたら、MySQLを起動します
$ sudo systemctl start mysqld
$ sudo systemctl enable mysqld
$ systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 金 2019-03-22 03:33:59 JST; 16s ago
MySQLのrootユーザの初期パスワードを確認します
$ grep password /var/log/mysqld.log
2019-03-22T03:33:55.697759+09:00 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: (ここに初期パスワード)
MySQLのrootユーザのパスワードを変更します。
$ mysql_secure_installation --use-default
Securing the MySQL server deployment.
Enter password for user root:(ここに上で確認した初期パスワードを入力する)
The existing password for the user account root has expired. Please set a new password.
New password:(新しいパスワード)
Re-enter new password:(新しいパスワード)
(中略)
All done!
パスワードの変更が完了したら、rootユーザでログインしてデータベースを作成します
$ mysql -u root -p
Enter password:(先程変更したパスワードを入力する)
(中略)
mysql> create database wordpress;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wordpress |
+--------------------+
5 rows in set (0.00 sec)
mysql> quit
WordPressのインストール
必要なものを一通り入れ終わったので、ブラウザからサーバにアクセスしてWordPressのセットアップ画面が表示されることを確認
http://(AWS EC2インスタンスに割り当てられているGlobal IP)
設定 | 値 | 備考 |
---|---|---|
データベース名 | wordpress | |
ユーザ名 | root | |
パスワード | (MySQLのrootユーザのパスワード) | |
データベースのホスト名 | localhost | |
テーブル接頭辞 | wp_ | 必要に応じて変更 |
問題なく接続できれば、/var/www/wordpress/にwp-config.phpが生成され
必要情報を記入するページに誘導されるので、WordPressライフを始めることができます!
さいごに
細かいところでハマりまくったので、トラブルシューティングのいい練習になりました
参考サイト
日本語環境にする
CentOSにWordPressをインストール
PHP 7.3 の最新版を CentOS 7.5 に yum インストールする
MySQL 8.0 を yum でインストール&設定メモ