8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS EC2 + CentOS 7.6 + Apache 2.4 + PHP 7.3 + MySQL 8.0 でWordPress5.1を動かす

Last updated at Posted at 2019-03-21

きっかけ

久しぶりに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
/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
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
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 でインストール&設定メモ

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?