KUSANAGI環境でCGI(perl)を動かすφ(◎。◎‐)


4回目の投稿となります。
NHNテコラスの遠藤と申します。よろしくお願いいたします┏○

2,4,6月とこちらで過去3回コラムを書かせていただいてるものの、実はプライムストラテジー様の方々とお会いしたことが無かったのですが、先日(2017/7/27)当社からリリースした開発者向けのクラウドサービス「CloudGarage」のリリースパーティ上で代表の中村様、楠木様、岡田様に初めてご挨拶をさせていただくことが出来ました(;´ρ`)

短い時間でしたが、これからもKUSANAGIに関連した情報発信として書かせていただきたいことも、直接お伝え出来たので良かったです≧∇≦

CGI(perl)を動かしたい

KUSANAGIコマンドでプロビジョンされるCMSはPHPで動作するアプリケーションのためCGIが動かなくても殆どの方が問題ないのですが、中にはCMSとは別の領域にウェブサイトを公開され、そこでCGIを動かしたいというお問い合わせを適度にいただきます。

CGIを動作するようにするにはapacheとnginxで手順が異なりますが、KUSANAGIのデフォルトであるnginxを例として設定手順を紹介いたします。

色々入れる

yumでspawn-fcgi、fcgi-devel、Development Toolsをインストールします。
それぞれの役割は割愛しますが、nginxにプログラムを渡したりするのに必要です。
fcgiwrap はyumレポジトリ上に無いため、yumで入れられるfcgi-perlで動かす方法を紹介している外部サイトもそこそこあります。

 # yum --enablerepo=epel -y install spawn-fcgi fcgi-devel
 # yum -y groupinstall "Development Tools"
 # wget http://github.com/gnosek/fcgiwrap/tarball/master -O fcgiwrap.tar.gz
 # tar zxvf fcgiwrap.tar.gz
 # cd gnosek-fcgiwrap-*
 # autoreconf -i
 # ./configure
 # make
 # make install

spawn-fcgiの調整

# vim /etc/sysconfig/spawn-fcgi
以下1行を追記
OPTIONS="-u httpd -g www -a 127.0.0.1 -p 9001 -P /var/run/spawn-fcgi.pid -- /usr/local/sbin/fcgiwrap" 

nginxの調整

nginxのconfファイル(/etc/nginx/conf.d/***.conf)に以下を追記(serverセクション内)。
追記後は念のため、 # nginx -t で構文エラーが出てないか確認してください。

 location ~ .cgi$ {
 fastcgi_pass 127.0.0.1:9001;
 fastcgi_index index.cgi;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include /etc/nginx/fastcgi_params;
 }

関連プロセスの再読込みと再起動時に自動実行するよう調整

# systemctl restart nginx
# systemctl restart spawn-fcgi
# chkconfig spawn-fcgi on

.cgiファイルを設置いただき、パーミッション755などにして動作すれば完了です。

いつも当社サポートセンターにお問い合わせいただいた時は、この参考手順をメールで書いて回答してたので、今後はコラムのURLをお伝えするようにいたします(´ー*`)


次回、10月ごろにお邪魔させていただきます。
ありがとうございました。


Post Author: 遠藤博樹(NHNテコラス株式会社)

遠藤博樹(NHNテコラス株式会社)
前職ではまだヒットチャート上位ランクインがステータスとなる2000年代に某女性3人組バンドのマネージャーを務めていてましたが、解散をきっかけに退社し、EX-CLOUDの前身サービスであるlivedoorレンタルサーバーのサービス開始と同時に2008年にNHNテコラス(旧社名ライブドア)に入社。以来、サポートスタッフとしてお客様対応を行っています。 最近では長年培ったお客様からの声を基に新サービスの企画なども担当していますが、ここでは主にKUSANAGI搭載ホスティングサービスを提供している中で、お客様からいただきましたお問い合わせをヒントに技術的な内容を書いていければと考えております。