Nginx 設定 · 2 min read · Feb 04, 2026

Fedora 14 に Nginx と PHP5 (および PHP-FPM) と MySQL サポートをインストールする - ページ 2

4 PHP5 のインストール

nginx で PHP5 を動作させるために PHP-FPM を使用します (PHP-FPM (FastCGI プロセスマネージャ) は、特に忙しいサイトに便利な追加機能を持つ代替 PHP FastCGI 実装です)。公式の Fedora 14 リポジトリには php-fpm パッケージがありませんが、幸いにも Remi リポジトリがそのようなパッケージを提供しています。

Remi リポジトリを有効にするには、次のコマンドを実行します:

rpm -ivh http://rpms.famillecollet.com/remi-release-14.rpm

次に /etc/yum.repos.d/remi.repo を開きます…

vi /etc/yum.repos.d/remi.repo

… そして [remi] セクションで enabled を 1 に、gpgcheck を 0 に変更します ([remi-test] セクションは有効にしないでください!):

| [remi] name=Les RPM de remi pour Fedora $releasever - $basearch #baseurl=http://rpms.famillecollet.com/fedora/$releasever/remi/$basearch/ mirrorlist=http://rpms.famillecollet.com/fedora/$releasever/remi/mirror enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi failovermethod=priority [remi-test] name=Les RPM de remi en test pour Fedora $releasever - $basearch #baseurl=http://rpms.famillecollet.com/fedora/$releasever/test/$basearch/ mirrorlist=http://rpms.famillecollet.com/fedora/$releasever/test/mirror enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi failovermethod=priority |

これで php-fpm を php-cli や MySQL を PHP スクリプトから使用するために必要な php-mysql などの PHP5 モジュールと一緒にインストールできます:

yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

次に /etc/php.ini を開き、cgi.fix_pathinfo=1 の行のコメントを外します:

vi /etc/php.ini

| [...] ; cgi.fix_pathinfo は CGI に対して *実際の* PATH_INFO/PATH_TRANSLATED サポートを提供します。 PHP の ; 以前の動作は PATH_TRANSLATED を SCRIPT_FILENAME に設定し、PATH_INFO が何であるかを理解しませんでした。 ; PATH_INFO についての詳細は cgi スペックを参照してください。これを 1 に設定すると、PHP CGI は ; スペックに従ってパスを修正します。ゼロに設定すると、PHP は以前のように動作します。デフォルトは 1 です。 ; スクリプトを修正して PATH_TRANSLATED ではなく SCRIPT_FILENAME を使用する必要があります。 ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=1 [...] |

次に php-fpm のシステム起動リンクを作成し、起動します:

chkconfig --levels 235 php-fpm on  
/etc/init.d/php-fpm start

PHP-FPM はポート 9000 で FastCGI サーバーを実行するデーモンプロセスです (init スクリプトは /etc/init.d/php-fpm です)。

5 nginx の設定

nginx の設定は /etc/nginx/nginx.conf にあり、今開きます:

vi /etc/nginx/nginx.conf

設定は理解しやすいです (詳細についてはここを参照してください: http://wiki.codemongers.com/NginxFullExample および http://wiki.codemongers.com/NginxFullExample2)

最初に (これはオプションです) ワーカープロセスの数を増やし、keepalive_timeout を適切な値に設定できます:

| [...] worker_processes 5; [...] keepalive_timeout 2; [...] |

仮想ホストは server {} コンテナで定義されています。デフォルトの vhost を次のように変更しましょう:

| [...] server { listen 80; server_name _; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # サーバーエラーページを静的ページ /50x.html にリダイレクト # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # PHP スクリプトを 127.0.0.1:80 でリッスンしている Apache にプロキシ # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # PHP スクリプトを 127.0.0.1:9000 でリッスンしている FastCGI サーバーに渡す # location ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; include fastcgi_params; } # .htaccess ファイルへのアクセスを拒否します。Apache のドキュメントルートが # nginx のものと一致する場合 # location ~ /\.ht { deny all; } } [...] |

servername ; はこれをデフォルトのキャッチオール vhost にします (もちろん、ここに www.example.com のようにホスト名を指定することもできます)。

location / 部分では、index 行に index.php を追加しました。root /usr/share/nginx/html; はドキュメントルートが /usr/share/nginx/html ディレクトリであることを意味します。

PHP にとって重要な部分は location ~ .php$ {} スタンスです。これを有効にするためにコメントを外します。root 行をウェブサイトのドキュメントルート (例: root /usr/share/nginx/html;) に変更してください。fastcgi_param 行を fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; に変更することを忘れないでください。そうしないと、PHP インタープリターがブラウザで呼び出す PHP スクリプトを見つけられません。

ファイルを保存して nginx を再起動します:

/etc/init.d/nginx restart

次に、ドキュメントルート /usr/share/nginx/html に次の PHP ファイルを作成します…

vi /usr/share/nginx/html/info.php

| |

ブラウザでそのファイルを呼び出します (例: http://192.168.0.100/info.php):

ご覧の通り、PHP5 は動作しており、Server API 行に示されているように FPM/FastCGI を介して動作しています。さらに下にスクロールすると、MySQL モジュールを含む、すでに PHP5 で有効になっているすべてのモジュールが表示されます:

6 リンク

著者について

ファルコ・ティメは、Timme Hosting (超高速 nginx ウェブホスティング) のオーナーです。彼は HowtoForge のリードメンテイナー (2005 年以来) であり、ISPConfig のコア開発者の一人 (2000 年以来) でもあります。彼はまた、O’Reilly の書籍「Linux システム管理」にも貢献しています。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。