AmazonLinux2にWordPressを構築してみた

先日正式リリースされたAmazonLinux2。今回はこちらでWordPressを動かしてみます。

AmazonLinux2について

軽くの説明ですが、AmazonLinux2はcentOS7ベースで作られており、最終リリースから5年間の長期サポートが保証されています。

詳しい特徴はコチラ

操作感はcentos7とほぼ変わりませんが、Extras Libraryが入っていたり、レポジトリがamzncore2だったりするので、インストールなどは異なります。

今回はできる限りデフォルトで入っているレポジトリだけで(mysqlがないのでそこだけ追加)AmazonLinux2にWordPressを入れて動作させるところまで行いたいと思います。

レッツインストール

さて、まずは構成です。WordPressですので、nginx+PHP7+php-fpm+MySQL5.7で作ってみましょうか。AmazonLinux2を起動して接続するまでは割愛。

まずは必要なもののインストールから。Extrasに入っているものを覗いてみます。

[root@ip-xxxxxxxxxx ~]# amazon-linux-extras list
  0  ansible2                 available  [ =2.4.2 ]
  1  emacs                    available  [ =25.3 ]
  2  memcached1.5             available  [ =1.5.1 ]
  3  nginx1.12                available  [ =1.12.2 ]
  4  postgresql9.6            available  [ =9.6.6  =9.6.8 ]
  5  postgresql10             available  [ =10 ]
  6  python3                  available  [ =3.6.2 ]
  7  redis4.0                 available  [ =4.0.5  =4.0.10 ]
  8  R3.4                     available  [ =3.4.3 ]
  9  rust1                    available  \
        [ =1.22.1  =1.26.0  =1.26.1 ]
 10  vim                      available  [ =8.0 ]
 11  golang1.9                available  [ =1.9.2 ]
 12  ruby2.4                  available  [ =2.4.2  =2.4.4 ]
 13  nano                     available  [ =2.9.1 ]
 14  php7.2                   available  [ =7.2.0  =7.2.4  =7.2.5 ]
 15  lamp-mariadb10.2-php7.2  available  \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5 ]
 16  libreoffice              available  [ =5.0.6.2_15 ]
 17  gimp                     available  [ =2.8.22 ]
 18  docker=latest            enabled    [ =17.12.1  =18.03.1 ]
 19  mate-desktop1.x          available  [ =1.19.0  =1.20.0 ]
 20  GraphicsMagick1.3        available  [ =1.3.29 ]
 21  tomcat8.5                available  [ =8.5.31 ]

nginxとphp7.2がこちらにあったので入れます。

$ amazon-linux-extras install nginx1.12
$ amazon-linux-extras install php7.2

こちらのコマンドでインストールした後にlistを再確認

[root@ip-xxxxxxxxxxxxx ~]# amazon-linux-extras list
  0  ansible2                 available  [ =2.4.2 ]
  1  emacs                    available  [ =25.3 ]
  2  memcached1.5             available  [ =1.5.1 ]
  3  nginx1.12=latest         enabled    [ =1.12.2 ]
  4  postgresql9.6            available  [ =9.6.6  =9.6.8 ]
  5  postgresql10             available  [ =10 ]
  6  python3                  available  [ =3.6.2 ]
  7  redis4.0                 available  [ =4.0.5  =4.0.10 ]
  8  R3.4                     available  [ =3.4.3 ]
  9  rust1                    available  \
        [ =1.22.1  =1.26.0  =1.26.1 ]
 10  vim                      available  [ =8.0 ]
 11  golang1.9                available  [ =1.9.2 ]
 12  ruby2.4                  available  [ =2.4.2  =2.4.4 ]
 13  nano                     available  [ =2.9.1 ]
 14  php7.2=latest            enabled    [ =7.2.0  =7.2.4  =7.2.5 ]
 15  lamp-mariadb10.2-php7.2  available  \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5 ]
 16  libreoffice              available  [ =5.0.6.2_15 ]
 17  gimp                     available  [ =2.8.22 ]
 18  docker=latest            enabled    [ =17.12.1  =18.03.1 ]
 19  mate-desktop1.x          available  [ =1.19.0  =1.20.0 ]
 20  GraphicsMagick1.3        available  [ =1.3.29 ]
 21  tomcat8.5                available  [ =8.5.31 ]

enabledになっていることがわかります。ちなみに、この2つを入れた時点でphp-fpmも入ります。

yumで見てみましょう。

[root@ip-xxxxxxxxxx ~]# yum list installed | grep "php"
php-cli.x86_64                     7.2.5-3.amzn2.0.2          @amzn2extra-php7.2
php-common.x86_64                  7.2.5-3.amzn2.0.2          @amzn2extra-php7.2
php-fpm.x86_64                     7.2.5-3.amzn2.0.2          @amzn2extra-php7.2
php-json.x86_64                    7.2.5-3.amzn2.0.2          @amzn2extra-php7.2
php-mysqlnd.x86_64                 7.2.5-3.amzn2.0.2          @amzn2extra-php7.2
php-pdo.x86_64                     7.2.5-3.amzn2.0.2          @amzn2extra-php7.2

あとはmysqlを入れればインストール系は終わり。・・・なんですけど、AmazonLinux2でmysqlを入れようとするとmariadbが入ってくるので、こちらだけレポジトリを追加します。

$ yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y
$ yum-config-manager --disable mysql80-community
$ yum-config-manager --enable mysql57-community

これでmysql57のレポジトリが追加完了。yumで入れられそうか見てみます。

[root@ip-xxxxxxxxxxxx ~]# yum list available | grep "mysql"
apr-util-mysql.x86_64                   1.6.1-5.amzn2                 amzn2-core
dovecot-mysql.x86_64                    1:2.2.10-8.amzn2              amzn2-core
freeradius-mysql.x86_64                 3.0.13-8.amzn2                amzn2-core
libdbi-dbd-mysql.x86_64                 0.8.3-16.amzn2                amzn2-core
mysql-community-client.i686             5.7.23-1.el7                  mysql57-community
mysql-community-client.x86_64           5.7.23-1.el7                  mysql57-community
mysql-community-common.i686             5.7.23-1.el7                  mysql57-community
mysql-community-common.x86_64           5.7.23-1.el7                  mysql57-community
mysql-community-devel.i686              5.7.23-1.el7                  mysql57-community
mysql-community-devel.x86_64            5.7.23-1.el7                  mysql57-community
mysql-community-embedded.i686           5.7.23-1.el7                  mysql57-community
mysql-community-embedded.x86_64         5.7.23-1.el7                  mysql57-community
mysql-community-embedded-compat.i686    5.7.23-1.el7                  mysql57-community
mysql-community-embedded-compat.x86_64  5.7.23-1.el7                  mysql57-community
mysql-community-embedded-devel.i686     5.7.23-1.el7                  mysql57-community
mysql-community-embedded-devel.x86_64   5.7.23-1.el7                  mysql57-community
mysql-community-libs.i686               5.7.23-1.el7                  mysql57-community
mysql-community-libs.x86_64             5.7.23-1.el7                  mysql57-community
mysql-community-libs-compat.i686        5.7.23-1.el7                  mysql57-community
mysql-community-libs-compat.x86_64      5.7.23-1.el7                  mysql57-community
mysql-community-release.noarch          el7-7                         mysql57-community
mysql-community-server.x86_64           5.7.23-1.el7                  mysql57-community
mysql-community-test.x86_64             5.7.23-1.el7                  mysql57-community

~~~~~~~~~~~~~~

大丈夫そうなのでインストール

$ yum install mysql-community-server php7.2 nginx

これで揃ったので、WordPressをダウンロードします。配置するのはどこでもいいですが、/var/www/public_htmlでも作ってそこに置くことにします。

$ mkdir -p /var/www/public_html
$ cd /var/www/public_html
$ wget https://ja.wordpress.org/latest-ja.tar.gz
$ tar -xzvf latest-ja.tar.gz
$ rm latest-ja.tar.gz

WordPressディレクトリができたので、nginxのコンフィグを設定します。 細かい設定は今度やるので、今回は繋ぐだけひとまず設定を入れるため、rootディレクトリの変更だけします。

$ vim /etc/nginx/nginx.conf
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /var/www/public_html/wordpress;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

さて、これでOK。nginxを起動し、ブラウザよりアクセスします。

$ systemctl start nginx

WordPressの初期セットアップ画面が無事表示されました。

次にmysqlをWordPressから使えるようにします。まずは起動

$ systemctl start mysqld

起動するとmysqlの初期化が走り、rootユーザーの初期パスがログに出ます。

$ cat /var/log/mysqld.log
~~~~~~~~~~~~~~~~~~~~~~~~~~~
2018-08-02T05:35:02.908264Z 1 [Note] A temporary password is generated for root@localhost:hogehogepwd
~~~~~~~~~~~~~~~~~~~~~~~~~~~

こちらでrootログインし、rootのパスワード変更をしたあと(初期パスだと操作できない)WordPress用のユーザーとDBを作成してあげます。

$ mysql -uroot -p
hogehogepwd
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Defaultp@ssw0rd';
mysql> create database wpa001;
mysql> create user wpa001@localhost identified by 'Hogehoge@1234';
mysql> grant all on wpa001.* to wpa001@localhost identified by 'Hogehoge@1234';
mysql> flush privileges;

wpa001の部分はなんでもいいです。パスワードを「Hogehoge@1234」にしていますが、こちらもなんでもいいです。 が、デフォルトで入れたmysqlだと、パスワードの強度の設定がMEDIUMのため、要件をみたないとエラーになります。 怒られる場合にはこんな表示

mysql> create user wpa001@localhost identified by 'Hogehoge@';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

ブラウザより、WordPressの初期設定に先程作ったDBなどを記入します。

あとはそのままブラウザの指示に従えば完成。

アクセスが出来ました。