はじめに
前回はWebサーバーであるnginxをインストールし、ブラウザからデフォルトページが表示されるところまで確認しました。
しかし、nginx単体ではHTMLのような静的なファイルしか表示できません。WordPressはPHPというプログラミング言語で動いているため、サーバー上でPHPを実行できる環境を整える必要があります。
今回は、Ubuntu Server 24.04にPHPをインストールし、nginxと連携させてPHPファイルが正しく動作する状態を目指します。
今回の構成とゴール
WordPressを動作させるために、今回は以下の構成で進めます。
- PHP 8.3: Ubuntu 24.04の標準リポジトリに含まれる最新バージョンを使用。
- PHP-FPM: nginxとPHPを橋渡しするための仕組み。
この記事のゴール
- PHPと必要な拡張モジュールがインストールされている。
- 実運用を見据えたPHPの設定(セキュリティ・利便性)が行われている。
- nginxの設定を変更し、PHPファイルを実行できる。
- ブラウザから「PHPの情報ページ」が表示される。
PHPと関連モジュールのインストール
PHP-FPMのインストール
まずはPHP本体と、nginxとの連携に必要な「PHP-FPM」、そしてWordPressの動作に不可欠な「PHP用MySQLコネクタ」などをまとめてインストールします。
sudo apt update
sudo apt install php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-xml php-zip
ポイント:なぜ「php」をインストールしないの? 「
sudo apt install php」と入力したくなりますが、これを実行すると今回使用しない「Apache」というWebサーバーも一緒にインストールされてしまうことがあります。 nginx環境では、必要なphp-fpmを指定してインストールするのが定石です。もちろん、これだけでPHP本体(エンジン)もしっかりインストールされます。
起動状態の確認
インストールが完了すると、PHP-FPMは自動的に起動します。以下のコマンドで状態を確認しましょう。
systemctl status php8.3-fpm
active (running) と表示されていれば問題ありません。
実運用を想定したPHP設定の変更
将来的にVPSで外部公開することを見据え、セキュリティ設定と、WordPressを快適に使うための設定を最初に行っておきます。
デフォルトの状態では、セキュリティ的に情報が漏れすぎていたり、画像のアップロードサイズが小さすぎて使い物にならなかったりするため、以下の3点を修正します。
php.iniの編集
PHPの全体設定ファイルである php.ini を開きます。
sudo nano /etc/php/8.3/fpm/php.ini
Ctrl + W (検索機能)を使って、以下の項目を探し、設定値を書き換えてください。
セキュリティ設定(バージョン隠し)
HTTPヘッダに含まれるPHPのバージョン情報を隠蔽します。攻撃者にサーバーの内情を教えないための基本対策です。
; 変更前
expose_php = On
; 変更後
expose_php = Off
メモリ上限の緩和(安定動作)
WordPressの重いテーマやプラグインを使用すると、デフォルトのメモリ制限(128M)では処理が停止し、画面が真っ白になることがあります。余裕を持って256Mに増やします。
; 変更前
memory_limit = 128M
; 変更後
memory_limit = 256M
アップロードサイズ上限の変更(利便性)
デフォルト(2MB)では、スマホの写真やWordPressテーマのアップロードでエラーになることがあります。実用的なサイズ(30MB)に変更します。
; 変更前 (post_max_size は upload_max_filesize より大きく設定するのが基本)
post_max_size = 8M
upload_max_filesize = 2M
; 変更後
post_max_size = 30M
upload_max_filesize = 30M
設定の反映
書き換えが終わったらファイルを保存(Ctrl+O -> Enter)して閉じ(Ctrl+X)、設定を反映させるためにPHP-FPMを再起動します。
sudo systemctl restart php8.3-fpm
nginxの設定変更(PHP連携)
次に、nginxが .php という拡張子のリクエストを受け取った際、それをPHP-FPMに渡すように設定ファイルを編集します。
設定ファイルのバックアップと編集
今回はデフォルトの設定ファイルを編集しますが、念のため編集前にバックアップを取っておきます。
まず、元の設定ファイルを .bak という名前でコピーしてバックアップを作成します。
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
次に、設定ファイルを編集します。
sudo nano /etc/nginx/sites-available/default
編集内容
ファイル内の server { ... } ブロックを探し、以下の2箇所を修正・追記します。
- indexの優先順位:
index.phpを最初に追加します。 - PHPの処理設定:
location ~ \.php$ { ... }のブロックを探して有効化します。
# 1. indexにindex.phpを追加
index index.php index.html index.htm;
# 2. PHP-FPMとの連携設定
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# PHP-FPMのソケットを指定
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
設定の反映
構文チェックを行い、エラーがなければnginxを再読み込みします。
sudo nginx -t
sudo systemctl reload nginx
PHPの動作確認
設定が正しく完了したか確認するために、テスト用のPHPファイルを作成します。
テストファイルの作成
ドキュメントルート(標準では /var/www/html)に、PHPの設定情報を表示する info.php を作成します。
sudo nano /var/www/html/info.php
ファイルの内容に以下を記述して保存します。
<?php
phpinfo();
?>
ブラウザでアクセス
ブラウザから以下のURLにアクセスしてください。
http://<Ubuntu ServerのIPアドレス>/info.php
PHPのバージョン情報や設定一覧(phpinfo)が表示されれば、nginxとPHPの連携は成功です。 設定変更した memory_limit などの値が反映されているかも確認してみましょう。
注意! 確認が終わったら、セキュリティのために作成した
info.phpは削除しておきましょう。サーバーの設定情報が丸見えになるため、放置するのは危険です。
info.php を削除します。
sudo rm /var/www/html/info.php
専門用語の解説
- PHP-FPM (FastCGI Process Manager): nginxなどのWebサーバーと連携して、PHPを高速に実行するための仕組みです。nginx自体にはPHPを実行する機能がないため、これが必要になります。
- 拡張モジュール (php-mysql, php-gdなど): PHPに特定の機能(データベース接続や画像処理など)を追加するためのプラグインのようなものです。WordPressを動かすにはこれらが必須となります。
- ソケット (unix:/run/php/php8.3-fpm.sock): nginxとPHP-FPMがサーバー内部で通信を行うための「通り道」です。今回はファイルのような形式(Unixドメインソケット)を使って通信しています。
まとめ
これでWebサーバー(nginx)の上でプログラム(PHP)が動き、さらにVPS運用を見据えたセキュリティ・利便性の設定も完了しました。
次回は、WordPressのデータを保存するためのデータベース、MariaDBの構築を進めていきます。

