Hatena::ブログ(Diary)

ursmの日記

2009-03-02

Ruby 1.9.1 で Passenger 2.1.1 beta を試す

Phusion Passenger 2.1.1 (beta) released, thanks sponsors! - Phusion Blog

Passenger 2.1.1 beta が Ruby 1.9.1 に対応したらしいので試してみました。Rails じゃなくて Sinatra です。

Passenger 2.1.1 beta

普通にインストールすると fastthread のビルドに失敗します。公式のアナウンスでは fastthread にパッチを当てる方法が紹介されていますが、1.9 だと fastthread は意味がない (と思う) ので --ignore-dependencies で入れてしまいます。

$ wget http://phusion-passenger.googlecode.com/files/passenger-2.1.1.gem
$ sudo gem19 install passenger-2.1.1.gem --ignore-dependencies
$ sudo gem19 install rake
$ sudo passenger-install-apache2-module

Sinatra 0.9.1

Sinatra の安定版リリース (0.9.0.4) は Ruby 1.9.1 に対応していないので、開発版を使います。

Ruby 1.9.1 に対応した Sinatra 0.9.1 がリリースされました。

$ sudo gem19 install sinatra

アプリケーションの配置

haml.ursm.jp を適当な場所に配置します。ついでに Haml をインストールします。

$ hg clone http://bitbucket.org/ursm/hamlursmjp/ haml.ursm.jp
$ sudo gem19 install haml

Apache の設定

LoadModule passenger_module /usr/lib64/ruby19/gems/1.9.1/gems/passenger-2.1.1/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib64/ruby19/gems/1.9.1/gems/passenger-2.1.1
PassengerRuby /usr/bin/ruby19

<VirtualHost *:80>
  ServerName haml.ursm.jp
  DocumentRoot /path/to/haml.ursm.jp/public

  <Directory /path/to/haml.ursm.jp/public>
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

これでどうやら動いているようです。

2008-07-22

Passenger で hgwebdir を動かす

巷で噂の Passenger というものを試してみました。とりあえず Mercurial の Web インターフェースを動かしてみます。

% mkdir -p /var/www/apps/hgwebdir/public
% cd /var/www/apps/hgwebdir
% vi passenger_wsgi.py
...
% cat passenger_wsgi.py
#!/usr/bin/env python
import sys
sys.path.insert(0, "/opt/local/lib/python2.5/site-packages")

from mercurial.hgweb.hgwebdir_mod import hgwebdir
from mercurial.hgweb.request import wsgiapplication

def make_web_app():
  return hgwebdir("hgwebdir.config")

application = wsgiapplication(make_web_app)
% vi hgwebdir.config
...
% cat hgwebdir.config
[collections]
/var/hg = /var/hg

[web]
baseurl =
% sudo vi /etc/apache2/httpd.conf
...
% cat /etc/apache2/httpd.conf
(snip)
LoadModule passenger_module /opt/local/lib/ruby/gems/1.8/gems/passenger-2.0.2/ext/apache2/mod_passenger.so
PassengerRoot /opt/local/lib/ruby/gems/1.8/gems/passenger-2.0.2
PassengerRuby /opt/local/bin/ruby

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName hg.example.com
  DocumentRoot /var/www/apps/hgwebdir/public
</VirtualHost>
% sudo apachectl restart

これだけで動く! Passenger すごい!!!

参考

JapaneseMod_wsgi - Mercurial