lightsail上に自前でWordpressを構築する(Amazon Linux編)


環境

Amazon Linux AMI 2018.03 (lightsail)


※2020年2月追記
lightsailのAmazon Linuxでcretbotの挙動があやしくなってきたので
CentOS版も作りました。
記事はこちら

lightsailではWordpressを載せたインスタンスを生成できますが、
全部載せbitnami環境があまり好きではなかったので
空のインスタンスに自分でWordpress環境を構築しました。

構築する環境は
nginx + php-fpm(PHP7.2)
とします。

インスタンス作成

lightsailのインスタンスを作成します。

プラットフォーム:Linux/Unix
設計図の選択:OSのみ Amazon Linux

インスタンス設定

作成したインスタンスの設定をします。

対象インスタンスのネットワーキングを開き、静的IPをアタッチしておきます。
また、HTTPSで公開する場合はファイアウォールにてTCPの443ポートを開けておきます。

各種インストール&設定

インスタンスにSSHにて接続し、以下コマンドを実行していきます。

まずrootになります。

sudo -i

いろいろインストールします。

yum install -y git nginx php72-fpm php72-bcmath php72-cli php72-common php72-devel php72-gd php72-json php72-mbstring php72-mysqlnd php72-pdo php72-xml mysql-server

nginxの設定

nginxの設定ファイルを追加します。
ファイル名の.confより前は任意です。

vim /etc/nginx/conf.d/wordpress.conf

以下のように記載します。
(Wordpressおきまりのやつです)

server {
    listen 80;
    listen [::]:80;
    server_name  your-domain.jp;

    root   /usr/share/nginx/html;
    index  index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~\.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            include fastcgi_params;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_pass unix:/var/run/php-fpm/www.sock;
    }
}

phpの設定

設定ファイルを開きます。

vim /etc/php.ini

画像アップロードが難なくできるよう、以下の箇所を修正します。

upload_max_filesize = 16M
post_max_size = 16M

php-fpmの設定

設定ファイルを開きます。

vim /etc/php-fpm.d/www.conf

nginxで動くように以下の箇所を修正します。

user = nginx
group = nginx

貧弱インスタンスを作成した場合はpm.max_〜をインスタンスのパワーに合わせて変更してください。

pm.max_children = 15
pm.max_spare_servers = 10

nginx & php-fpmの起動

起動

service nginx start
service php-fpm start

自動起動有効化

chkconfig nginx on
chkconfig php-fpm on

mysqlの設定

起動&自動起動設定有効

service mysqld start
chkconfig mysqld on

rootのパスワード設定をします。
以下のnew-password部分に設定したいパスワードを入力してください。

/usr/libexec/mysql55/mysqladmin -u root password 'new-password'

let’s encrypt設定

let’s encryptで無料SSL証明書を取得します。
your-domain.jp部分にはWordpressで使うドメインを入力してください。

cd /opt
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --webroot -w /usr/share/nginx/html -d your-domain.jp --debug

SSL証明書が取得できたらnginxの設定ファイルを再度開きます。

vim /etc/nginx/conf.d/wordpress.conf

SSLについて追記します。

server {
    〜省略〜
    listen  443 ssl http2;
    listen  [::]:443 ssl http2;

    ssl_certificate /etc/letsencrypt/live/your-domain.jp/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.jp/privkey.pem;
    〜省略〜
}

これで基盤はできあがりました。
後はWordpressの公式サイトなどを見ながらWordpressをDownload&設定するだけです。


付録:mysqlコマンド

ユーザー作成

CREATE USER 'wp-user'@'localhost' IDENTIFIED BY 'new-password';

データベース作成

CREATE DATABASE wp-database character set utf8mb4;

指定ユーザーのパスワードを変更

UPDATE mysql.user SET password=password('new-new-password') where user = 'wp-user';