ウェブサイト検索

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 証明書を取得します。

関連記事: