Rails+Capistrano+Apache2.2+Mongrel_clusterのメモ
10月 17th, 2008 admin Posted in Ruby, Ruby on Rails |
まるまる2日間かかった。いろいろはまりすぎ。
前提
debian etch
mod_rails(passenger)はメモリを食いすぎて使えなかった
subversionを使っている
デプロイは自動化したい
OpenVZのVEの設定
まず最初に仮想マシンの容量が足りなくてRailsが起動しない。
vzctl set 2000 --privvmpages 2G --save #メモリ上限を2Gにする
vzctl set 2000 --diskspace 10G --save
インストール
サーバになにも入っていないのでどんどん入れる
aptitude install apache
aptitude install ruby
aptitude install rubygemsaptitude install mysql-server
aptitude install libmysqlclient-dev
aptitude install subvesiongem install rails
gem install mysql
gem install gettext
gem install mongrel
gem install mongrel_cluster
gem install capistrano#今回のアプリ用のもの
gem install ferret
gem install image_science
gem install amazon-ecs$ unzip FreeImage3100.zip
$ cd FreeImage
$ make
Apache2.2の設定
このへんを見ながらやらせてもらった。はまったのはmod_proxyの設定で
/etc/apache2/mods-enabled/proxy.confのProxyディレクティブのDeny from allに気がつかなかったこと
conf.d以下以外に.confがあるなんて知りませんでした。
a2enmod rewrite
a2enmod proxy_balancer
でproxy_balancerとproxyを有効にする。
バーチャルホストの設定にこんなのを加える
-
<proxy *>
-
Order deny,allow
-
Deny from all
-
Allow from all
-
</proxy>
-
-
ProxyRequests Off
-
ProxyPass / balancer://appname/ timeout=2
-
ProxyPassReverse / balancer://appname/
-
-
<proxy balancer://appname>
-
BalancerMember http://127.0.0.1:3000 loadfactor=10
-
BalancerMember http://127.0.0.1:3001 loadfactor=10
-
BalancerMember http://127.0.0.1:3002 loadfactor=10
-
BalancerMember http://127.0.0.1:3003 loadfactor=10
-
</proxy>
/etc/init.d/apache2 force-reload
でリロード
参考サイト
burn baby burn!!!(Archives)
【Rails】mongrel cluster&apacheのリバースプロキシで複数のアプリ共存
mongrel clusterの設定
これはあまりはまらなかった。
mongrel_rails cluster::configure
とやると雛形がconfig/mongrel_cluster.ymlでできるので
適当に編集して、こんなのができた
log_file: /home/appname/log/mongrel.log
port: "3000"
environment: production
address: 0.0.0.0
pid_file: tmp/pids/mongrel.pid
servers: 4
あとは
mongrel_rails cluster::start
で動くはず。
参考サイト
83s : config/mongrel_cluster.ymlの書き方、とか
Rubyist - バリケンのRuby日記 - mongrel_cluster
spinファイルの作成
capistranoを使うとファイルの展開後にscript/spinというのを実行してくれる
今回は使わないのでファイルだけ作っておく
$ vi script/spin
↓中身
#!/bin/sh
capstrano
アプリケーションのルートディレクトリで
capify .
でCapistranoのレシピといわれるファイルがconfig/deploy.rbに作られる
それをいい感じに編集
-
require 'mongrel_cluster/recipes'
-
set :application, "appname"
-
set :repository, "http://path to subversion"
-
-
set :user, "ssh username"
-
set :use_sudo, false
-
set :scm_username, "svnuser"
-
set :scm_password, "svnpass"
-
-
-
-
# If you aren't deploying to /u/apps/#{application} on the target
-
# servers (which is the default), you can specify the actual location
-
# via the :deploy_to variable:
-
set :deploy_to, "/var/www/#{application}"
-
-
set :mongrel_conf, "#{current_path}/config/mongrel_cluster.yml"
-
set :mongrel_clean, true
-
# If you aren't using Subversion to manage your source code, specify
-
# your SCM below:
-
-
role :app, "192.168.1.x"
-
role :web, "192.168.1.y"
-
role :db, "192.168.1.x", :primary => true
-
-
task :after_update_code, :roles => :app do
-
run "chmod u+x #{release_path}/script/spin"
-
end
で
cap deploy:setup
でリモートに準備がされる。
cap deploy:cold
でsubversionからファイルが展開されてmongrelが再起動される
参考サイト
つくるぶガイドブログ: capistrano で本番環境にデプロイ
FFTT : Capistrano(2006年4月の情報)
第7回 Rails アプリケーションの起動・停止・再起動 - Capistrano 入門 - Ruby on Rails with OIAX
まとめ
・こんなに苦労する必要があるRailsはなにかおかしい
・Capistranoの資料がもうちょっとあればなぁと思った。
・passenger(mod_rails)は普通に動いたのでメモリがあれば全然使えそう
Leave a Reply