at posts/single.html

CGIで動かすRubyのバージョンをrbenvで指定する

レンタルサーバ(今はさくらのVPS)でRuby+CGI/FastCGI経由でtDiaryを動かすとき、これまではOSパッケージ管理でインストールしたRuby(バージョンがちょっと古い)か、手動でコンパイルしたRuby(バージョンアップが面倒)を使っていた。 でも、時代はrvmから最近はrbenvということで、rbenv + Apache + FastCGI/CGI環境で動かせるようにした。

rbenv のインストール

これは公式サイトの説明どおり。普通に作業ユーザの$HOMEにインストールしちゃった。 ruby-buildを使ったrubyのインストールも説明省略。

FastCGIのインストール

これもrbenvを有効にして、gemでfcgiをインストールするだけ。 Ubuntuの場合は、libfcgi-devモジュールをaptitudeでインストールしておくこと。

Apacheがrbenvを実行できるようにする

公式サイトに書いてあるように、rbenvを使うには環境変数PATHにrbenvのインストール先を追加する必要がある。

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

Apacheの場合は、envvarsというファイルに環境変数を書いておくと、httpdプロセスがその環境変数を読んでくれる。 以下のように設定した。

$ sudo vim /etc/apache2/envvars
export PATH=/home/machu/.rbenv/bin:$PATH
$ sudo /etc/init.d/apache2 restart

shebangの書き換え

CGI/FastCGI起動時にrbenv管理のrubyを使うようにshebangを書き換える。

#!/home/machu/.rbenv/shims/ruby

これで、CGI環境でもrbenvのRubyが使える。バージョンアップへの追従が楽になるかな。

関連する日記