NGINX設定 · 1 min read · Jan 23, 2026
Fedora 18でNginxを使用してCGIスクリプトを提供する - ページ 2
3 Fcgiwrapの使用
Fcgiwrapは、各vhostが独自のcgi-binディレクトリを使用できるため、共有ホスティング環境で使用できるCGIラッパーです。
Fedora用のfcgiwrapパッケージがないため、私たちは自分でビルドする必要があります。まず、いくつかの前提条件をインストールします:
yum groupinstall 'Development Tools'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=nginx FCGI_GROUP=nginx FCGI_EXTRA_OPTIONS="-M 0700" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM" |
spawn-fcgiのシステム起動リンクを作成します…
systemctl enable spawn-fcgi.service… そして、以下のように開始します:
systemctl start spawn-fcgi.serviceこれで、nginxユーザーとグループが所有する/var/run/fcgiwrap.socketにfcgiwrapソケットが見つかるはずです。
次に、vhost設定ファイルを開きます…
vi /etc/nginx/conf.d/www.example.com.vhost… そして、server {}コンテナにlocation /cgi-bin {}セクションを追加します:
| server { [...] location /cgi-bin/ { # gzipを無効にします(スクリプトが完了するまでgzipされないため、スクリプトが遅く感じられます) gzip off; # ルートを/usr/libに設定します(このlocation内では、/usr/lib/cgi-binの下のファイルへのアクセスを提供しています) root /var/www/www.example.com; # Fastcgiソケット fastcgi_pass unix:/var/run/fcgiwrap.socket; # Fastcgiパラメータ、標準のものを含めます include /etc/nginx/fastcgi_params; # 非標準パラメータを調整します(SCRIPT_FILENAME) fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } [...] } |
nginxをリロードします:
systemctl reload nginx.service次に、cgi-binディレクトリを作成します - /var/www/www.example.com/cgi-bin、これはlocation /cgi-bin {}コンテナ内でroot /var/www/www.example.com;を定義したためです:
mkdir /var/www/www.example.com/cgi-bin今、CGIスクリプトをそこに置き、実行可能にします。テスト目的で、小さなHello World Perlスクリプトを作成します(hello_world.cgiの代わりに拡張子.plを使用してhello_world.plを使用することもできます):
vi /var/www/www.example.com/cgi-bin/hello_world.cgi| #!/usr/bin/perl -w # perlにhtmlヘッダーを送信するように指示します。 # これにより、ブラウザは出力を受け取ります # ではなく、 |Hello world
\n";
chmod 755 /var/www/www.example.com/cgi-bin/hello_world.cgiブラウザを開いてスクリプトをテストします:
http://www.example.com/cgi-bin/hello_world.cgiすべてがうまくいけば、次の出力が得られるはずです:

4 リンク
- Nginx: http://nginx.org/
- Nginx Wiki: http://wiki.nginx.org/
- Thttpd: http://acme.com/software/thttpd/
- nginx ThttpdCGI: http://wiki.nginx.org/ThttpdCGI
- nginx Fcgiwrap: http://wiki.nginx.org/Fcgiwrap
著者について
ファルコ・ティメは、Timme Hosting(超高速nginxウェブホスティング)のオーナーです。彼はHowtoForgeのリードメンテイナー(2005年から)であり、ISPConfigのコア開発者の一人(2000年から)でもあります。彼はまた、O’Reillyの書籍「Linux System Administration」にも貢献しています。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。