PHP-FPM 経由で PHP と連携するように Nginx を構成する方法
このステップバイステップのチュートリアルでは、PHP-FPM を使用してサーバー上で PHP を実行するように Nginx をインストールおよび構成する方法を説明します。
Nginx + PHP は、Web サイトの構築に使用できる最も人気のあるソフトウェア グループの 1 つです。このステップバイステップのチュートリアルでは、PHP-FPM を使用してサーバー上で PHP を実行するように Nginx をインストールおよび構成する方法を説明します。
Nginx は PHP-FPM との理想的な組み合わせです。これは、その優れたパフォーマンスとリソース消費量の少なさで知られる安定した Web サーバーです。
PHP-FPM を使用する場合、PHP は分離されたサービスとして実行されます。この PHP バージョンを言語インタープリターとして採用すると、リクエストは UNIX ソケット経由で処理されることになります。 Nginx サーバーは HTTP リクエストのみを処理し、PHP-FPM は PHP コードを解釈します。
1. Nginxのインストール
Ubuntu/Debian
Nginx は Debian と Ubuntu のデフォルト リポジトリで利用できるため、apt パッケージ システムを使用してこれらのリポジトリからインストールすることが可能です。
sudo apt install nginx
CentOS/AlmaLinux/Rocky Linux
最新の Nginx バージョンを入手するには、CentOS、AlmaLinux、または Rocky Linux ユーザーはまず EPEL リポジトリをインストールする必要があります。
EPEL (Extra Packages for Enterprise Linux) は、RHEL ベースの Linux ディストリビューション用の高品質なアドオン ソフトウェア パッケージを提供する、Fedora チームによるオープンソースの無料のコミュニティ ベースのリポジトリ プロジェクトです。
sudo yum install epel-release
次に、Nginx サーバーをインストールできます。
sudo yum install nginx
フェドーラ
Nginx はデフォルトの Fedora リポジトリで利用でき、dnf
パッケージ マネージャーを使用して直接インストールできます。
sudo dnf install nginx
関連: Linux に Nginx Web サーバーをインストールする方法
2. PHP-FPMのインストール
Ubuntu/Debian
PHP を Ubuntu または Debian にインストールするには、次のコマンドを実行するだけです。
sudo apt install php-fpm
CentOS
CentOS サーバー内でデフォルトで利用可能な PHP バージョンは古いです。そのため、PHP 7 を入手するには、サードパーティのパッケージ リポジトリをインストールする必要があります。
CentOS 7
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php74
sudo yum install php php-fpm
CentOS 8
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo yum-config-manager --enable remi-php74
sudo yum install php php-fpm
3. PHP-FPM を使用して PHP を実行するための NGINX の構成
Nginx と PHP がインストールされたら、PHP リクエストを PHP-FPM に送信するように Nginx を設定できます。
FPM で PHP を実行するには、Nginx サーバー ブロック構成ファイルを作成する必要があります。その後、要件に従って新しい VirtualHost を作成し、新しい VirtualHost を有効にすることができます。
sudo vim /etc/nginx/sites-available/example.com
example.com
をサイトのドメインまたは IP アドレスに置き換え、root
ディレクティブをサイトのルート ディレクトリに置き換えます。
<strong>server</strong> {
<strong> listen</strong> 80;
<strong> root</strong> /var/www/html;
<strong> index</strong> index.php index.html index.htm;
<strong> server_name</strong> example.com;
<strong> location</strong> / {
<strong> try_files</strong> $uri $uri/ =404;
}
<strong> location</strong> ~ \.php$ {
<strong> include</strong> snippets/fastcgi-php.conf;
<strong> fastcgi_pass</strong> unix:/var/run/php/php7.4-fpm.sock;
}
}
変更を構成ファイルに保存し、サイト対応ディレクトリへのリンクを作成します。
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
fastcgi_pass
ディレクティブで指定された PHP ソケット ファイル (この場合は php7.4-fpm.sock
) の名前が正しいことを確認してください。
ls -l /var/run/php/
total 4
-rw-r--r-- 1 root root 5 Dec 1 17:43 php7.4-fpm.pid
srw-rw---- 1 www-data www-data 0 Dec 1 17:43 php7.4-fpm.sock
lrwxrwxrwx 1 root root 30 Dec 1 17:43 php-fpm.sock -> /etc/alternatives/php-fpm.sock
名前が php7.4-fpm.sock
と異なる場合は、上記のサーバー ブロック内の名前をサーバーの現在の名前に置き換えるだけです。
次に、Nginx サービスを再起動して変更をリロードします。
sudo systemctl restart nginx.service
4. セットアップのテスト
テスト PHP ファイルを作成して、PHP-FPM が動作し、Nginx と統合されていることを確認します。上記のサーバー ブロックでは、サイトは /var/www/html
から提供されているため、そこにテスト ファイルを作成します。
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
最後に、サイトのドメインまたはサーバーの IP アドレスを使用して、Web ブラウザから info.php
にアクセスします。 PHP 構成ページが表示されるはずです。
結論
おめでとう! PHP-FPM を通じて PHP リクエストを処理するように Nginx を設定しました。
ここから次のステップを実行できます。たとえば、サーバーへの接続が保護されていることを確認する必要があります。 しかし、どうやって行うのでしょうか?
段階的なチュートリアルに従って、サーバー用の無料の Let’s Encrypt SSL 証明書を取得します。