2015年2月21日土曜日

Passenger 5


passenger が刷新されてる?

https://www.phusionpassenger.com/
https://github.com/phusion/passenger


Passenger 5 (コードネームはラプター)

「RaptorはどのようにしてUnicornの4倍、Puma, Torqueboxの2倍の速度を達成したのか」を読んでまとめてみた


とりあえず、standalone で動かしてみた。
(nginx は yum でインストールしたものなので、standalone しか道はない)
環境は centos7, rbenv
nginx --- passenger5 --- rails


インストール
rails のGemfile に追加# Gemfile
gem passenger, '5.0.5'

$ bundle install --path vendor/bundle

# rails のbin にpassenger コマンドを追加
# bin/passenger が作成される
bundle install --binstubs
(bin/passenger でなく、bundle exec passenger でもたぶんOKだと思う)

# 確認
$ bin/passenger start
 (デフォルトでは http://0.0.0.0:3000/ )

# nginx 経由でアクセスする。
# ドメインは raptor.local として、hosts に登録しておく。

$ vi /etc/nginx/conf.d/raptor.local.conf
server {
    listen 80;
    server_name raptor.local;

    location / {
        proxy_pass http://0.0.0.0:3000;
    }
}

# 変更を反映させる
$ systemctl reload nginx

これで、http://raptor.local/ でアクセスできる。
次に、systemd に登録してデーモン化する。

# サービス名を raptor.service としておく。
vi /etc/systemd/system/raptor.service

[Unit]
Description=Raptor (passenger5 standalone) with rails
After=syslog.target network.target nss-lookup.target

[Service]
Type=forking
User=hoge
Group=hoge
WorkingDirectory=/public/raptor
PIDFile=/public/raptor/tmp/pids/passenger.3000.pid

ExecStart=/public/raptor/bin/passenger start --daemonize
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl enable raptor
systemctl start raptor

# /etc/systemd/system/raptor.service を変更したら
$ systemctl daemon-reload


メモ、注意点、TODO
 - bin/passenger start --help でオプションの確認ができる
 -  --deamonize は必須
 - Unix domain の利用を考える (--socket オプション)
 - プロセス数の指定
 - この設定だと development でrails が動いているので変更も即座に反映してくれる。
(production 指定も調べる)



最後にrbenv について
rbenv はユーザーhoge だけに有効なので
(/home/hoge/.rbenv にインストールした)
bin/passenger の先頭を以下のように変更した。
#!/usr/bin/env ruby
  ↓
#!/home/hoge/.rbenv/versions/2.2.1/bin/ruby

/usr/local にインストールしたり、他の方法もあるのかもしれないけど、わからないので、自分(作業ユーザー) のrbenv を直接指定して動かした。

0 件のコメント:

コメントを投稿