はじめに
※NGINX Unitはサポートが終了しました。新規採用は推奨されません。
WordPressを構築する際にウェブサーバは古くからApache、近年ではNginx+PHP-FPMの構成が人気です。しかし最近では、NGINX Unitを使った構成も選択肢の一つになるかと思います。
今回はそのNGINX UnitとUbuntu Server 24.04、PHP 8.3、MariaDBを使用してWordPressを構築します。
NGINX Unitとは
NGINX Unitは、軽量かつダイナミックなアプリケーションサーバであり、ウェブサーバとしての機能とPHPの実行環境を一つに統合できるのが最大の特徴です。PHP以外にも、Python、Go、Java、Perl、Rubyなど複数の言語に対応しており、同じサーバ上で異なる言語のアプリケーションを動かすことが可能です。また、設定はJSON形式で行い、サーバを再起動せずにリアルタイムで設定変更やアプリケーションの切り替えができるため、運用の柔軟性が非常に高いのも魅力です。
環境
- NGINX Unit:1.34.2
- OS:Ubuntu Server 24.04
- PHP:8.3.6
- MariaDB:15.1
- WordPress:6.9.1
手順
1. NGINX Unitのインストール
インストールはこちらに書いてある手順の通り行います。
NGINXの署名キーをダウンロードして保存する
sudo curl --output /usr/share/keyrings/nginx-keyring.gpg https://unit.nginx.org/keys/nginx-keyring.gpgUnitのリポジトリを設定
/etc/apt/sources.list.d/unit.listというファイルを作り、リポジトリ情報を入れます。
sudo tee /etc/apt/sources.list.d/unit.list > /dev/null << EOF
deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ noble unit
deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ noble unit
EOFインストール
UnitとPHP用のモジュールをインストールします。インストールするとPHPも一緒にインストールされると思います。php -vなどで確認してください。また、Unitがインストールできたかはunitd --versionで確認できます。
sudo apt update
sudo apt install unit unit-php -y
sudo systemctl restart unit2. Maria DBのインストール
インストール
sudo apt install mariadb-server -y初期設定
sudo mysql_secure_installation上記のコマンド実行し、メッセージにそって設定します。初期パスワードはないのでそのままEnterをおしてください。パスワードなどを新規に設定します。選択はそのままEnterで問題ないと思います。
DBとユーザーの作成
sudo mysql -u root -pパスワードを聞かれるので、先ほど設定したパスワードを入力してください。
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE wp CHARACTER SET UTF8 COLLATE UTF8_BIN;
GRANT ALL PRIVILEGES ON wp .* TO 'user'@'localhost';
quit;ユーザー名、パスワード、DB名は適宜変更してください。今回はそれぞれuserとpassword、wpです。
以上でMariaDBのインストールは終了です。
3. WordPressのダウンロード
sudo mkdir -p /var/www
cd /var/www/
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzvf latest.tar.gz上記のコマンドでWordPressをダウンロード、解答します。
4. PHPのパッケージのインストール
WordPressを動かすのに必要なモジュールをインストールします。
sudo apt install php-mbstring php-mysql php-curl php-dom php-imagick php-xml php-zip -y5. Unitのセットアップ
公式がこちらで公開している方法をもとにWordPressをセットアップします。
Unitに権限を付与
sudo chown -R unit:unit /var/www/wordpressconfig.jsonというファイルを作成します。
{
"listeners": {
"*:80": {
"pass": "routes"
}
},
"routes": [
{
"match": {
"uri": [
"*.php",
"*.php/*",
"/wp-admin/"
]
},
"action": {
"pass": "applications/wordpress/direct"
}
},
{
"action": {
"share": "/var/www/wordpress$uri",
"fallback": {
"pass": "applications/wordpress/index"
}
}
}
],
"applications": {
"wordpress": {
"type": "php",
"processes": {
"max": 20,
"spare": 5,
"idle_timeout": 30
},
"targets": {
"direct": {
"root": "/var/www/wordpress"
},
"index": {
"root": "/var/www/wordpress",
"script": "index.php"
}
}
}
}
}設定をアップロードします。
sudo curl -X PUT --data-binary @config.json --unix-socket /var/run/control.unit.sock http://localhost/config/Reconfiguration done.とでたら成功です。
6. WordPressのセットアップ
ブラウザでサーバーのIPアドレスにアクセスします。
言語やデータベース情報、IDやパスワードを設定して完了です。
おわりに
これで、WordPressの基本的な構築が完了しました。
Apacheで構築したときに必要な.htaccessやNginxとPHP-FPMで構築した際のパーマリンクの設定などが不要で非常に簡単に構築できるかと思います。
パフォーマンスについてはこちらで実験しています。
最後までお読みいただきありがとうございました。