サーバー設定 · 5 min read · Nov 11, 2025

完璧なサーバー - CentOS 6.1 x86_64 と nginx [ISPConfig 3] - ページ 5

15 Nginx、PHP5 (PHP-FPM)、および Fcgiwrap のインストール

Nginx は CentOS 6.1 (EPEL から) のパッケージとして利用可能で、以下のようにインストールできます:

yum install nginx

もし Apache2 がすでにシステムにインストールされている場合は、今すぐ停止してください…

/etc/init.d/httpd stop

… そして Apache のシステム起動リンクを削除します:

chkconfig --del httpd

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

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

(もし Apache2 と nginx の両方がインストールされている場合、ISPConfig 3 インストーラーはどちらを使用するか尋ねます - この場合は nginx と答えてください。もしどちらか一方だけがインストールされている場合、ISPConfig は必要な設定を自動的に行います。)

PHP5 を nginx で動作させるために PHP-FPM を使用します (PHP-FPM (FastCGI プロセスマネージャ) は、特に忙しいサイトに役立つ追加機能を持つ PHP FastCGI の代替実装です)。以下のように、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-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

次に /etc/php.ini を開きます…

vi /etc/php.ini

… そしてエラーレポートを変更します (通知が表示されないように) し、cgi.fix_pathinfo=1 のコメントを外します:

| [...] ;error_reporting = E_ALL & ~E_DEPRECATED error_reporting = E_ALL & ~E_NOTICE [...] |

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

(なぜこれを行う必要があるのかを知るために http://wiki.nginx.org/Pitfalls をお読みください。)

さらに、次のようなエラーを回避するために

[08-Aug-2011 18:07:08] 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 'CEST/2.0/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 tmp]# cat /etc/sysconfig/clock
ZONE=”Europe/Berlin”
[root@server1 tmp]#

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

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

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

nginx で CGI サポートを得るために、Fcgiwrap をインストールします。

Fcgiwrap は、複雑な CGI スクリプトにも対応する CGI ラッパーであり、各 vhost が独自の cgi-bin ディレクトリを使用できるため、共有ホスティング環境で使用できます。

CentOS 6.1 用の fcgiwrap パッケージがないため、自分でビルドする必要があります。まず、いくつかの前提条件をインストールします:

yum install fcgi-devel

次に、以下のように fcgiwrap をビルドできます:

cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make install

これにより、fcgiwrap が /usr/local/sbin/fcgiwrap にインストールされます。

次に、fcgiwrap をデーモンとして実行するための spawn-fcgi パッケージをインストールします:

yum install spawn-fcgi

/etc/sysconfig/spawn-fcgi を開きます…

vi /etc/sysconfig/spawn-fcgi

… そしてファイルを以下のように修正します:

| # "spawn-fcgi" サービスが動作する前に、いくつかの作業オプションを設定する必要があります。 # SOCKET がファイルを指している場合、このファイルは init スクリプトによってクリーンアップされます。 # # spawn-fcgi(1) のすべての可能なオプションを参照してください。 # # 例 : #SOCKET=/var/run/php-fcgi.sock #OPTIONS="-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi" FCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=apache FCGI_GROUP=apache FCGI_EXTRA_OPTIONS="-M 0770" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM" |

次に、nginx ユーザーを apache グループに追加します:

usermod -a -G apache nginx

spawn-fcgi のシステム起動リンクを作成します…

chkconfig --levels 235 spawn-fcgi on

… そして以下のように起動します:

/etc/init.d/spawn-fcgi start

これで、/var/run/fcgiwrap.socket に fcgiwrap ソケットが見つかり、apache ユーザーとグループが所有しています (一部のスクリプト、例えば Mailman は、apache ユーザー/グループによって実行されることを期待しています。これが、spawn-fcgi を nginx ユーザー/グループとして実行せず、nginx を apache グループに追加する理由です)。

16 phpMyAdmin のインストール

次に、phpMyAdmin をインストールします:

yum install phpmyadmin

次に、phpMyAdmin の認証をクッキーから http に変更します:

vi /usr/share/phpmyadmin/config.inc.php

| [...] /* 認証タイプ */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |

これで、/usr/share/phpmyadmin/ ディレクトリに phpMyAdmin が見つかります。

ISPConfig 3 をインストールした後、以下のように phpMyAdmin にアクセスできます:

nginx 用の ISPConfig アプリ vhost はポート 8081 で phpMyAdmin の設定が付属しているため、http://server1.example.com:8081/phpmyadmin または http://server1.example.com:8081/phpMyAdmin を使用して phpMyAdmin にアクセスできます。

ウェブサイトから使用できる /phpmyadmin または /phpMyAdmin エイリアスを使用したい場合、これは Apache よりも少し複雑です。なぜなら、nginx にはグローバルエイリアス (すなわち、すべての vhost に対して定義できるエイリアス) がないからです。したがって、phpMyAdmin にアクセスしたい vhost に対してこれらのエイリアスを定義する必要があります。

これを行うには、ISPConfig のウェブサイトのオプションタブの nginx 指令フィールドに以下を貼り付けます:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

vhost に対して http s を使用する場合、phpMyAdmin 設定に次の行 fastcgi_param HTTPS on; を追加する必要があります:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS on; # <-- この行を追加 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

http と https の両方を vhost で使用する場合、/etc/nginx/nginx.conf の http {} セクションに次のセクションを追加する必要があります (すべての include 行の前に) これは訪問者が http または https を使用しているかを検出し、$fastcgi_https 変数を設定します (これは phpMyAdmin 設定で使用します):

vi /etc/nginx/nginx.conf

| [...] http { [...] ## HTTPS が使用されているかを検出 map $scheme $fastcgi_https { default off; https on; } [...] } [...] |

その後、nginx をリロードするのを忘れないでください:

/etc/init.d/nginx reload 

次に、nginx 指令フィールドに戻り、fastcgi_param HTTPS on; の代わりに fastcgi_param HTTPS $fastcgi_https; の行を追加して、http および https リクエストの両方に対して phpMyAdmin を使用できるようにします:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS $fastcgi_https; # <-- この行を追加 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

17 Mailman のインストール

バージョン 3.0.4 以降、ISPConfig は Mailman メーリングリストの管理 (作成/変更/削除) を許可します。この機能を利用したい場合、以下のように Mailman をインストールします:

yum install mailman

Mailman を開始する前に、最初のメーリングリスト mailman を作成する必要があります:

/usr/lib/mailman/bin/newlist mailman

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
リストを運営する人のメールアドレスを入力してください: <– 管理者のメールアドレス、例: [email protected]
初期の mailman パスワード: <– mailman リストの管理者パスワード
メーリングリストを作成するには、次の行を追加して /etc/aliases (または同等の) ファイルを編集し、newaliases プログラムを実行する必要があります:

mailman メーリングリスト

mailman: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”

Enter を押して mailman オーナーに通知します… <– ENTER

[root@server1 tmp]#

その後、/etc/aliases を開きます…

vi /etc/aliases

… そして以下の行を追加します:

| [...] mailman: "|/usr/lib/mailman/mail/mailman post mailman" mailman-admin: "|/usr/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/usr/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/usr/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/usr/lib/mailman/mail/mailman join mailman" mailman-leave: "|/usr/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/usr/lib/mailman/mail/mailman owner mailman" mailman-request: "|/usr/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/usr/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe mailman" |

その後、

newaliases

を実行し、Postfix を再起動します:

/etc/init.d/postfix restart

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

chkconfig –levels 235 mailman on
/etc/init.d/mailman start

ISPConfig で Mailman が動作するようにするために、このシンボリックリンクを作成する必要があります:

cd /usr/lib/mailman/cgi-bin/
ln -s ./ mailman

ISPConfig で作成したウェブサイトから Mailman を使用したい場合、これは Apache よりも少し複雑です。なぜなら、nginx にはグローバルエイリアス (すなわち、すべての vhost に対して定義できるエイリアス) がないからです。したがって、Mailman にアクセスしたい vhost に対してこれらのエイリアスを定義する必要があります。

これを行うには、ISPConfig のウェブサイトのオプションタブの nginx 指令フィールドに以下を貼り付けます:

| location /cgi-bin/mailman { alias /usr/lib/mailman/cgi-bin; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/mailman$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED /usr/lib/mailman$fastcgi_path_info; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /images/mailman { alias /usr/lib/mailman/icons; } location /pipermail { alias /var/lib/mailman/archives/public; autoindex on; } |

これにより、vhost に対して /cgi-bin/mailman/ のエイリアスが定義され、http:///cgi-bin/mailman/admin/ でリストの Mailman 管理インターフェースにアクセスでき、http:///cgi-bin/mailman/listinfo/ でメーリングリストのユーザー用のウェブページにアクセスできます。

http:///pipermail ではメーリングリストのアーカイブを見つけることができます。

Share: X/Twitter LinkedIn

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

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