XREAでRubyのFastCGIをやりたい

最終的にはXREAでRedmineをFCGIでホストしたいのだが、まずはRubyのFCGIをXREAでやるにはどうすればいいか試した。

Rubyの準備

手元の環境でビルド

Redmineを処理する実際のRubyをビルドして生成する。
XREA標準のものがあるが、RubyGemsには必要なパッケージも入っていないし、かつ将来にわたって同じとは限らないので自らビルドしたものを持ち込む。
参考手順:http://blog.redmine.jp/articles/3_4/install/centos/

# makeするためにシステムのRubyおよびruby.hが必要になるのでインストールする
sudo yum install ruby ruby-devel

# Rubyは--prefix=${PATH_TO_INSTALL}で指定した場所をそのまま記憶してしまうので
# XREAにインストールする先のパスをこのタイミングで指定しておく
# またRubyをビルドするこの環境にそのパスが存在しないなら作っておく
# 今回は/virtual/${XREAアカウントID}/bin/rubyとなるよう設定を行う
sudo mkdir /virtual/${XREAアカウントID}
sudo chown $(whoami) /virtual/${XREAアカウントID}
sudo chmod 700 /virtual/${XREAアカウントID}

wget -O ruby-2.4.1.tar.gz https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.gz

tar zxf ruby-2.4.1.tar.gz
cd ruby-2.4.1

export CFLAGS="-fPIC"
./configure --disable-install-doc --enable-shared
make
make install

gem install fcgi
gem install bundler # 将来どうせ入れるから今のうちにインストールしておいた

FTPで転送

作成したRubyをXREAに転送する。
LFTPを使うとやりやすい。

cd /virtual/${XREAアカウントID}
lftp ${XREAサーバ}

以下、LFTPのコマンド

set net:connection-limit 4
set ssl:verify-certificate false
user ${XREAユーザID} ${XREAログインパスワード}

mirror -RL bin ./
mirror -RL lib ./

Ruby FastCGIプログラムの準備

以下、サンプルをほぼ流用したコード。

test.fcgi

#!/virtual/${XREAアカウントID}/bin/ruby

require 'fcgi'

cnt = 1

FCGI.each { |request|
    out = request.out
    out.print "Content-Type: text/html\r\n"
    out.print "\r\n"
    out.print "<html><head><title>TEST FCGI by Ruby</title></html>"
    out.print "<body>"
    out.print "<h1>It works.</h1>"
    out.print cnt
    out.print "</body></html"
    request.finish
    cnt += 1
}

.htaccess

今回使うFCGIスクリプトは特段ラッパスクリプトが必要ないのでAddHandlerで指示すればよい(FCGIWrapperディレクティブ不要)。

AddHandler fcgid-script .fcgi

これらを再度適当な場所にFTPで転送する。

これでtest.fcgiにアクセスすれば、アクセスの都度カウントアップしてゆくページが表示される。

なので

  • Ruby/RubyGemsの準備&FTP転送(事前に同じパスでインストールしたもの)
  • FCGIに対応したアプリケーションの準備
  • AddHahdler fcgid-script .xxx

とすればFCGIを動かすことだけはできるが、次にRubyOnRailsアプリケーションをどうホストするか検証してみる必要がありそうだ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です