Amazon Linux 2上にnginx + php-fpm + MariaDBのWordPress環境を作る 2020/10版 その1

前回書いた通りblogをLightsailに移行したわけですが、移行するに当たってとりあえずはWordpressが動く環境を用意しなければなりません。
以前はVPS側がWordpressの環境を用意してくれていたわけですが、Lightsail(だけじゃなくEC2だったとしてもですが)では自分で環境を作らなければなりません。
もちろんLightsailであればBitnamiでWordpressをインストールすることができますが、用意されているのはApache + mysqlだったり、自分がやりたかったnginx + php-fpm + MariaDBという構成の物はありませんでした。

というわけで、自分で一から環境構築するため世の中のサイトを検索してみるわけですが、この手のインストール方法が書いてあるサイトは色々ありますけど、割と情報が古くなっていたりして困ったので、インストール時のメモを残しておくことにしました。

書いているのは移行してしばらく立ってからですが、実際に作業をしていたのは2020/10の後半ぐらいだったので、各ソフトウェアのバージョンは基本そのときのリポジトリにある最新バージョンです。
これを読んでいる時点ではもっと新しいバージョンが出ているかもしれませんが、そのときは適宜読み替えてください。

1.初期設定

インスタンスを起動してログインしたらまずは各種更新を適用しておきましょう。
あ、いちいちsudoするの面倒なので以下特別な記述がない限り基本 sudo su - とかでrootユーザになって作業している前提で読んでください。

yum update
reboot

※多分大量に更新適用されているので、終わったら再起動しておくのが無難。

Lightsailのインスタンス(EC2もでしょうが)のデフォルトではタイムゾーンやロケールは日本になってないので変更。

#タイムゾーン変更
timedatectl status
timedatectl set-timezone Asia/Tokyo
#日本語ロケール追加
localectl status
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106

次にここは好みの分かれるところでしょうが、私はデフォルトで作成されているユーザ ec2-user をそのまま使うのは好きではありません。なので、自分用のユーザを作成します。
下記の例は hoge ユーザを作成してますが、これはサンプルなのでもちろん適宜好きなユーザ名に置き換えてください。当然私も別のユーザ名で運用しています。

# ユーザ追加
adduser hoge

# 公開鍵の保存場所作成
su - hoge
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys

# 追加したユーザにパスワードを設定
passwd hoge

# 追加したユーザにsudo権限を与える
usermod -aG wheel hoge

※後で /home/hoge/.ssh/authorized_keys には自分の公開鍵を上書きしておきましょう。

ここで hoge ユーザでログインしてみてログインできること、さらに sudo su - でrootユーザにもなれることを確認したら、さすがに ec2-user を消すと後で何か問題になりそうなのでSSHでのログインをできなくしておきます。

vi /etc/ssh/sshd_config

※viでファイルを開いて、ファイルの末尾に次の1文を追加して保存。
DenyUsers ec2-user

# ファイルを保存したらSSHサーバの設定をリロード
service sshd reload

2.nginxとphp-fpmのインストール

Amazon Linux 2はCentOS 7ベースでyumのリポジトリはCentOSのものそのままではなく、Amazon Linux 2用のリポジトリが用意されていますが、そのリポジトリにはCentOSであれば標準であれば含まれているようなパッケージが含まれていません。
どうも独自のポリシーでAmazonが安全と認定したパッケージだけが含まれているようですが、残念ながらnginxは含まれていませんしphpもちょっと古いバージョンです。

ではどうするかというと、基本のリポジトリの他にExtras Libraryなるものが存在していて、nginxやphp7.4はこちらに入っています。MariaDBも一応はExtras Libraryに入っているのですが、バージョンが古いのでこれは後でなんとかします。

Extras Libraryの操作は amazon-linux-extras というコマンドを使用します。このコマンドで直接インストールすることも可能ですが、パッケージを有効化することで移行は通常通りyumでの操作が可能になるのでこちらの方法を使っていきます。

# nginxのパッケージを有効化
amazon-linux-extras enable nginx1
# php7.4のパッケージを有効化
amazon-linux-extras enable php7.4

これでyumを使ってnginxとphpがインストールできるようになったので、パッケージのインストールが始められます。
WordPressで必要となるphpのモジュールは下記で確認できます。

これを踏まえ、必要な物を一通りインストールします。

yum install nginx php php-cli php-common php-fpm php-gd php-json php-mbstring php-mysqlnd php-opcache php-pdo php-xml

※本来ならImageMagickモジュールが推奨されますが、Amazon Linux 2だとうまく入らなかったので、GDモジュールで我慢します。

php-fpmは基本デフォルトの設定で動きますが、Apache用の設定になっている箇所があるので、nginx用に書き換えます。

vi /etc/php-fpm.d/www.conf
# 下記の2行を書き換える。
user = apache
group = apache
↓
user = nginx
group = nginx

後はサービスを開始して、無事動いていることを確認したら起動時に自動で立ち上がるようにしておきましょう。

# サービス起動
systemctl start nginx
systemctl start php-fpm

# 起動後の確認がOKなら自動起動を有効にする
systemctl enable nginx
systemctl enable php-fpm

今日はここまで。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.