Nginx インストール · 2 min read · Feb 08, 2026
Fedora 16 における PHP5(および PHP-FPM)と MySQL サポートを持つ Nginx のインストール
Fedora 16 における PHP5(および PHP-FPM)と MySQL サポートを持つ Nginx のインストール
Version 1.0
Author: Falko Timme
Follow me on Twitter
Nginx(発音は「エンジン x」)は、無料でオープンソースの高性能 HTTP サーバーです。Nginx は、その安定性、豊富な機能セット、シンプルな設定、低リソース消費で知られています。このチュートリアルでは、PHP5 サポート(PHP-FPM 経由)と MySQL サポートを持つ Fedora 16 サーバーに Nginx をインストールする方法を示します。
私はこれがあなたにとって機能することを保証しません!
1 前提条件
このチュートリアルでは、ホスト名 server1.example.com と IP アドレス 192.168.0.100 を使用します。これらの設定はあなたの環境によって異なる場合があるため、適宜置き換える必要があります。
2 MySQL 5 のインストール
まず、次のように MySQL 5 をインストールします:
yum install mysql mysql-server次に、MySQL のシステム起動リンクを作成し(システムが起動するたびに MySQL が自動的に起動するように)、MySQL サーバーを起動します:
systemctl enable mysqld.service
systemctl start mysqld.service次に、ネットワークが有効になっていることを確認します。次のコマンドを実行します:
netstat -tap | grep mysql次のような出力が表示されるはずです:
[root@server1 ~]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 1116/mysqld
[root@server1 ~]#表示されない場合は、/etc/my.cnf を編集し、skip-networking オプションをコメントアウトします:
vi /etc/my.cnf| [...] #skip-networking [...] |
その後、MySQL サーバーを再起動します:
systemctl restart mysqld.service次に、次のコマンドを実行して、root ユーザーのパスワードを設定します(そうしないと、誰でもあなたの MySQL データベースにアクセスできてしまいます!):
mysql_secure_installation[root@server1 ~]# mysql_secure_installation
NOTE: このスクリプトのすべての部分を実行することは、すべての MySQL サーバーにおいて推奨されます! 各ステップを注意深くお読みください!
MySQL にログインしてセキュリティを確保するためには、root ユーザーの現在のパスワードが必要です。MySQL をインストールしたばかりで、まだ root パスワードを設定していない場合、パスワードは空白のままですので、ここでは単に Enter を押してください。
Enter current password for root (enter for none): <– ENTER
OK, successfully used password, moving on…
root パスワードを設定することで、適切な認証なしに誰も MySQL root ユーザーにログインできないようにします。
Set root password? [Y/n] <– ENTER
New password: <– yourrootsqlpassword
Re-enter new password: <– yourrootsqlpassword
Password updated successfully!
Reloading privilege tables..
… Success!
デフォルトでは、MySQL インストールには匿名ユーザーが存在し、誰でもユーザーアカウントを作成することなく MySQL にログインできるようになっています。これはテスト用にのみ意図されており、インストールを少しスムーズにするためのものです。生産環境に移行する前に、これらを削除する必要があります。
Remove anonymous users? [Y/n] <– ENTER
… Success!
通常、root は ‘localhost’ からのみ接続を許可されるべきです。これにより、誰かがネットワークから root パスワードを推測できないようになります。
Disallow root login remotely? [Y/n] <– ENTER
… Success!
デフォルトでは、MySQL には誰でもアクセスできる ‘test’ という名前のデータベースが付属しています。これもテスト用にのみ意図されており、生産環境に移行する前に削除する必要があります。
Remove test database and access to it? [Y/n] <– ENTER
- Dropping test database…
… Success! - Removing privileges on test database…
… Success!
特権テーブルを再読み込みすることで、これまでに行ったすべての変更が即座に反映されることを保証します。
Reload privilege tables now? [Y/n] <– ENTER
… Success!
Cleaning up…
すべて完了しました! 上記のすべての手順を完了した場合、あなたの MySQL インストールは今や安全であるはずです。
MySQL をご利用いただきありがとうございます!
[root@server1 ~]#
3 Nginx のインストール
Nginx は Fedora 16 のパッケージとして利用可能で、次のようにインストールできます:
yum install nginx次に、nginx のシステム起動リンクを作成し、起動します:
systemctl enable nginx.service
systemctl start nginx.serviceブラウザにウェブサーバーの IP アドレスまたはホスト名を入力します(例: http://192.168.0.100)、nginx のウェルカムページが表示されるはずです:

4 PHP5 のインストール
PHP5 を nginx で動作させるために PHP-FPM を使用します(PHP-FPM(FastCGI Process Manager)は、あらゆるサイズのサイト、特に忙しいサイトに役立つ追加機能を持つ代替 PHP FastCGI 実装です)。公式の Fedora 16 リポジトリには 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-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 がそのパスを仕様に従って修正します。0 に設定すると、PHP は以前のように動作します。デフォルトは 1 です。スクリプトを修正して SCRIPT_FILENAME を使用するようにする必要があります。 ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |
(なぜこれを行うべきかについては http://wiki.nginx.org/Pitfalls をお読みください。)
さらに、次のようなエラーを回避するために:
[13-Nov-2011 22:13:16] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /usr/share/nginx/html/info.php on line 2… /var/log/php-fpm/www-error.log で PHP スクリプトをブラウザで呼び出すときに、/etc/php.ini で date.timezone を設定する必要があります:
| [...] [Date] ; 日付関数で使用されるデフォルトのタイムゾーンを定義します ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = "Europe/Berlin" [...] |
システムの正しいタイムゾーンを確認するには、次のコマンドを実行します:
cat /etc/sysconfig/clock[root@server1 ~]# cat /etc/sysconfig/clock
ZONE="Europe/Berlin"
[root@server1 ~]#次に、php-fpm のシステム起動リンクを作成し、起動します:
systemctl enable php-fpm.service
systemctl start php-fpm.servicePHP-FPM はポート 9000 で FastCGI サーバーを実行するデーモンプロセスです。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。