やまどり
NGINX UnitでWordPress構築

NGINX UnitでWordPress構築

本記事では、NGINX Unit、Ubuntu Server 24.04、PHP 8.3、MariaDBを使用してWordPressを構築しました。

はじめに

※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の署名キーをダウンロードして保存する

Bash
sudo curl --output /usr/share/keyrings/nginx-keyring.gpg https://unit.nginx.org/keys/nginx-keyring.gpg

Unitのリポジトリを設定

/etc/apt/sources.list.d/unit.listというファイルを作り、リポジトリ情報を入れます。

Bash
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で確認できます。

Bash
sudo apt update
sudo apt install unit unit-php -y
sudo systemctl restart unit

2. Maria DBのインストール

インストール

Bash
sudo apt install mariadb-server -y

初期設定

Bash
sudo mysql_secure_installation

上記のコマンド実行し、メッセージにそって設定します。初期パスワードはないのでそのままEnterをおしてください。パスワードなどを新規に設定します。選択はそのままEnterで問題ないと思います。

DBとユーザーの作成

Bash
sudo mysql -u root -p

パスワードを聞かれるので、先ほど設定したパスワードを入力してください。

SQL
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のダウンロード

Bash
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を動かすのに必要なモジュールをインストールします。

Bash
sudo apt install php-mbstring php-mysql php-curl php-dom php-imagick php-xml php-zip -y

5. Unitのセットアップ

公式がこちらで公開している方法をもとにWordPressをセットアップします。

Unitに権限を付与

Bash
sudo chown -R unit:unit /var/www/wordpress

config.jsonというファイルを作成します。

config.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"
                }
            }
        }
    }
}

設定をアップロードします。

Bash
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で構築した際のパーマリンクの設定などが不要で非常に簡単に構築できるかと思います。

パフォーマンスについてはこちらで実験しています。

最後までお読みいただきありがとうございました。