PR

VPSのWordPress構築検証:VirtualBox上のUbuntu Server 24.04でPHPをインストールしてnginxと連携する

nginxとPHP、Ubuntu Serverを組み合わせたLinuxサーバー構成を表したシンプルなイラスト Ubuntu
この記事は約7分で読めます。
記事内に広告が含まれています。
スポンサーリンク

はじめに

前回は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箇所を修正・追記します。

  1. indexの優先順位: index.php を最初に追加します。
  2. 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の構築を進めていきます。

タイトルとURLをコピーしました