サーバー設定 · 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 startPHP-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 リンク
- nginx: http://nginx.org/
- nginx Wiki: http://wiki.nginx.org/
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- Fedora: http://fedoraproject.org/
著者について
Falko Timme は Timme Hosting (超高速 nginx ウェブホスティング) のオーナーです。彼は HowtoForge のリードメンテイナー (2005 年以来) であり、ISPConfig のコア開発者の一人 (2000 年以来) でもあります。また、O’Reilly の書籍「Linux システム管理」にも貢献しています。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。