TOP > カテゴリ > Ruby・Ruby on Rails >

Nginx + Rails + PHP + Perl を共存させる [CentOS]

NginxにRuby on Rails、PHP、Perlを共存させます。

今回はPerlの設定となります。Perl自体はCentOSに標準インストールされたものを使用します。動作にはPHPのPHP-FPMと似たような「SPAWN-FCGI」を常時起動させて処理を行わせます。

前提条件

NginxでRuby on RailsとPHPを共存させる

各インストール

sudo yum --enablerepo=epel -y install spawn-fcgi fcgi-devel

sudo yum -y groupinstall "Development Tools" 

cd ~/
wget http://github.com/gnosek/fcgiwrap/tarball/master -O fcgiwrap.tar.gz 

tar zxvf fcgiwrap.tar.gz 
cd gnosek-fcgiwrap-* 
autoreconf -i 
./configure 
sudo make 
sudo make install 

/etc/nginx/conf.d/*.confの編集

*.confファイルに以下を追記します。*は任意の名称。前回の記事を参照した方はmyaap.confです。

location ~ \.cgi$ {
    # 存在しない場合は404
    try_files $uri /404.html;
          
    fastcgi_pass 127.0.0.1:9001;
    fastcgi_index index.cgi;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

/etc/sysconfig/spawn-fcgiの編集

末尾に以下を追加します。

OPTIONS="-u ユーザー名 -g ユーザー名 -a 127.0.0.1 -p 9001 -P /var/run/spawn-fcgi.pid -- /usr/local/sbin/fcgiwrap"

CGIファイルの作成

パーミッションは500 or 700でいける。動かない場合は705 or 755など。

#! /usr/bin/perl
  
print "Content-type:text/html\n\n";
print "\n";
print "CGI TEST\n";

ファイル先頭のshebang(#!)のパスは次のコマンドで確認できます。

各サービスの起動設定

// Nginxのリスタート
sudo systemctl restart nginx

// 自動起動設定
sudo systemctl enable spawn-fcgi

// 開始
sudo systemctl start spawn-fcgi

// 停止
// sudo systemctl stop spawn-fcgi

403 Forbidden

spawn-fcgiファイルのOPTIONS=のユーザー名(-u)/グループ名(-g)が「nginx」になっていると発生する場合があります。その場合は両方とも「ユーザー名」を設定して下さい。

502 Bad Gateway

改行コードが「LF」以外だと発生する場合があります。特にWindowsの方は標準で「CR+LF」になっているのでご注意ください。





掲示板

ソフトウェア、ハードウェアのプログラミング用の掲示板を作成しました。質問やわからない事は@掲示板でユーザー同士で情報を共有して下さい。

関連記事



公開日:2019年09月17日 最終更新日:2019年09月18日
記事NO:02771