CentOS7 NginxでCGI(Perl)

スポンサーリンク

Apacheではデフォルト設定を少し変えるだけでCGIは動作するのですが、Nginxでは設定変更程度では動かず別途ソフトウェアをインストールし設定する必要があります。下記はNginxは既にインストールされているという前提です。

必要なソフトウェアはfcgiwrapとspawn-fcgi/fcgi-develです。順番としてspawn-fcgi/fcgi-develが先で、これらはyumからインストールを行います。

# yum install epel-release
# yum install spawn-fcgi fcgi-devel

この後、fcgiwrapのインストールを行います。これはソースからmakeでインストールします。

# wget http://github.com/gnosek/fcgiwrap/tarball/master
# tar xzvf master
# cd gnosek-fcgiwrap-gnosek-fcgiwrap-99c942c
# autoreconf -i
# ./configure
# make
# make install

インストールは以上で完了です。続いてspawn-fcgiの設定を行います。

# vi /etc/sysconfig/spawn-fcgi
OPTIONS="-u nginx -g nginx -a 127.0.0.1 -p 9001 -P /var/run/spawn-fcgi.pid -- /usr/local/sbin/fcgiwrap"

さらにNginx側の設定も行います。

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

<省略>
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php index.cgi;
    }
    location ~ \.cgi$ {
        root   /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9001;
        fastcgi_index  index.cgi;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
<省略>

Nginxとspawn-fcgiを起動します。spawn-fcgiはこの段階で既に自動起動は有効になっています。

# systemctl restart nginx
# systemctl start spawn-fcgi

Perlで以下のようなテスト的なスクリプトを書いて本当に動作するか確認してみます。

# vi /usr/share/nginx/html/count.cgi
#!/usr/bin/perl

print "Content-type: text/plain\n\n";
for($i=1;$i<=10;$i++){
    print "Count is $i\n";
}

このファイルに実行権限をつけ(chmod 755 count.cgi)、ブラウザから以下のような画面が見れればOKです。

参考URL:https://server-recipe.com/1257/

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする