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が使える。バージョンアップへの追従が楽になるかな。