サーバー設定 · 3 min read · Jan 25, 2026

Fedora 15 における PHP5 (および PHP-FPM) と MySQL サポートを持つ Nginx のインストール

Fedora 15 における PHP5 (および PHP-FPM) と MySQL サポートを持つ Nginx のインストール

バージョン 1.0
著者: Falko Timme
Twitter でフォローしてください

Nginx (発音は「エンジン エックス」) は、無料でオープンソースの高性能 HTTP サーバーです。Nginx は、その安定性、豊富な機能セット、シンプルな設定、低リソース消費で知られています。このチュートリアルでは、PHP5 サポート (PHP-FPM 経由) と MySQL サポートを持つ Fedora 15 サーバーに Nginx をインストールする方法を示します。

これがあなたにとって機能するという保証はありません!

1 前提条件

このチュートリアルでは、ホスト名 server1.example.com と IP アドレス 192.168.0.100 を使用します。これらの設定はあなたの環境によって異なる場合があるため、適宜置き換えてください。

2 MySQL 5 のインストール

まず、次のようにして MySQL 5 をインストールします:

yum install mysql mysql-server

次に、MySQL のシステム起動リンクを作成し (システム起動時に MySQL が自動的に起動するように)、MySQL サーバーを起動します:

chkconfig --levels 235 mysqld on  
/etc/init.d/mysqld start

ネットワークが有効になっているか確認します。次のコマンドを実行します:

netstat -tap | grep mysql

次のような出力が表示されるはずです:

[root@server1 ~]# netstat -tap | grep mysql  
tcp        0      0 *:mysql                     *:*                         LISTEN      1517/mysqld  
[root@server1 ~]#

表示されない場合は、/etc/my.cnf を編集し、skip-networking オプションをコメントアウトします:

vi /etc/my.cnf

| [...] #skip-networking [...] |

その後、MySQL サーバーを再起動します:

/etc/init.d/mysqld restart

次のコマンドを実行して、root ユーザーのパスワードを設定します (そうしないと、誰でもあなたの MySQL データベースにアクセスできてしまいます!):

mysql_secure_installation

[root@server1 ~]# mysql_secure_installation

NOTE: このスクリプトのすべての部分を実行することは、すべての MySQL サーバーにおいて推奨されます! 各ステップを注意深くお読みください!

MySQL にログインしてセキュリティを確保するためには、root ユーザーの現在のパスワードが必要です。MySQL をインストールしたばかりで、まだ root パスワードを設定していない場合、パスワードは空白のままですので、ここでは Enter を押してください。

現在の root パスワードを入力してください (なしの場合は Enter): <– ENTER
OK, パスワードが正常に使用されました、次に進みます…

root パスワードを設定することで、適切な認証なしに誰も MySQL の root ユーザーにログインできないようにします。

root パスワードを設定しますか? [Y/n] <– ENTER
新しいパスワード: <– yourrootsqlpassword
新しいパスワードを再入力してください: <– yourrootsqlpassword
パスワードが正常に更新されました!
特権テーブルを再読み込みしています..
… 成功!

デフォルトでは、MySQL のインストールには匿名ユーザーが存在し、誰でもユーザーアカウントを作成することなく MySQL にログインできるようになっています。これはテスト用にのみ意図されており、インストールを少しスムーズにするためのものです。生産環境に移行する前に、これらを削除する必要があります。

匿名ユーザーを削除しますか? [Y/n] <– ENTER
… 成功!

通常、root は ‘localhost’ からのみ接続を許可されるべきです。これにより、誰かがネットワークから root パスワードを推測できないようにします。

リモートでの root ログインを禁止しますか? [Y/n] <– ENTER
… 成功!

デフォルトでは、MySQL には誰でもアクセスできる ‘test’ という名前のデータベースが付属しています。これもテスト用にのみ意図されており、生産環境に移行する前に削除する必要があります。

テストデータベースとそのアクセスを削除しますか? [Y/n] <– ENTER

  • テストデータベースを削除しています…
    … 成功!
  • テストデータベースの特権を削除しています…
    … 成功!

特権テーブルを再読み込みすることで、これまでに行ったすべての変更が即座に反映されることを保証します。

特権テーブルを今すぐ再読み込みしますか? [Y/n] <– ENTER
… 成功!

クリーンアップ中…

すべて完了しました! 上記のすべてのステップを完了した場合、あなたの MySQL インストールは現在安全であるはずです。

MySQL をご利用いただきありがとうございます!

[root@server1 ~]#

3 Nginx のインストール

Nginx は Fedora 15 のパッケージとして利用可能で、次のようにインストールできます:

yum install nginx

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

chkconfig --levels 235 nginx on  
/etc/init.d/nginx start

ブラウザにウェブサーバーの IP アドレスまたはホスト名を入力します (例: http://192.168.0.100) と、nginx のウェルカムページが表示されるはずです:

4 PHP5 のインストール

PHP5 を nginx で PHP-FPM を通じて動作させることができます (PHP-FPM (FastCGI プロセスマネージャ) は、あらゆる規模のサイト、特に忙しいサイトに役立つ追加機能を持つ PHP FastCGI の代替実装です)。公式の Fedora 15 リポジトリには php-fpm パッケージがあるため、php-cli や MySQL を PHP スクリプトから使用するために必要な php-mysql などのいくつかの PHP5 モジュールと一緒に php-fpm をインストールできます:

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=0 に設定します:

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 です。スクリプトを修正する必要があります ; SCRIPT_FILENAME を使用するように、PATH_TRANSLATED ではなく。 ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |

(なぜこれを行うべきかについては http://wiki.nginx.org/Pitfalls をお読みください。)

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

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

PHP-FPM は、ポート 9000 で FastCGI サーバーを実行するデーモンプロセスです (/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 は /etc/nginx/conf.d/default.conf ファイルに定義されています - 次のように修正します:

vi /etc/nginx/conf.d/default.conf

| [...] 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; } # Apache のドキュメントルートと nginx のドキュメントルートが一致する場合、.htaccess ファイルへのアクセスを拒否 # 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 は動作しており、FPM/FastCGI を通じて動作しています。サーバー API 行に示されています。さらに下にスクロールすると、MySQL モジュールを含む、すでに有効になっているすべてのモジュールが表示されます:

6 リンク

著者について

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

Share: X/Twitter LinkedIn

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

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