SlicehostでApache、Mongrel Clusterの設定

SlicehostにApache、Mongrel Clusterを設定してRailsアプリを動かす場合の設定。
SlicehostにRailsをインストールのようにApacheはインストールしておく。

Railsアプリの作成
cd ~/public_html
rails railsapp

Apache modulesの設定
sudo a2enmod proxy
sudo a2enmod proxy_balancer
sudo a2enmod proxy_http
sudo a2enmod rewrite

Apacheのリロード
sudo /etc/init.d/apache2 force-reload

Mongrel Clusterの設定
Mongrel、Mongrel ClusteはSlicehostにRailsをインストールのようにインストールしておく。

Railsアプリのフォルダへ移動
cd ~/public_html/railsapp

クラスタを3つ、5000ポートで起動
mongrel_rails cluster::configure -e production -p 5000 -N 3 -c /home/demo/public_html/railsapp -a 127.0.0.1

mongrel_cluster.ymlの編集
cwd: /home/demo/public_html/railsapp
log_file: log/mongrel.log
port: "5000"
environment: production
address: 127.0.0.1
pid_file: tmp/pids/mongrel.pid
servers: 3

Mongrelクラスタが自動で再起動されるようシンボリックリンクを作成。
sudo ln -s /home/demo/public_html/railsapp/config/mongrel_cluster.yml /etc/mongrel_cluster/railsapp.yml

Mongrelクラスを起動
mongrel_cluster_ctl start

No such file or directory - /etc/mongrel_cluster (Errno::ENOENT)

というエラーがでる場合は、etc/mongrel_clusterフォルダがないので
sudo mkdir /etc/mongrel_cluster/
で作成する。

Slice ManagerでDNSのゾーンを設定。
DNS設定については下記ページからリンクしているPDFが分かりやすい。
http://articles.slicehost.com/2008/4/18/ebook-dns-administration

DNSの設定が済んだら、Apacheバーチャルホストを設定
sudo vi /etc/apache2/sites-available/domain.com

設定例
<VirtualHost *:80>
 ServerName domain.com
 ServerAlias www.domain.com

 DocumentRoot /home/demo/public_html/railsapp/public

 RewriteEngine On

 <Proxy balancer://mongrel1>
  BalancerMember http://127.0.0.1:5000
  BalancerMember http://127.0.0.1:5001
  BalancerMember http://127.0.0.1:5002
 </Proxy>

 # Redirect all non-static requests to thin
 RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
 RewriteRule ^/(.*)$ balancer://mongrel1%{REQUEST_URI} [P,QSA,L]

 ProxyPass / balancer://mongrel1/
 ProxyPassReverse / balancer://mongrel1/
 ProxyPreserveHost on

 <Proxy *>
  Order deny,allow
  Allow from all
 </Proxy>

 # Custom log file locations
 ErrorLog /home/demo/public_html/railsapp/log/error.log
 CustomLog /home/demo/public_html/railsapp/log/access.log combined

</VirtualHost>

apache2.confファイルを編集。
sudo vi /etc/apache2/ports.conf

以下の様な感じに。
NameVirtualHost *:80

<IfModule mod_ssl.c>
  NameVirtualHost *:443
</IfModul>

Apacheをリロードして有効化
sudo a2ensite domain.com
sudo /etc/init.d/apache2 reload

正常ならこれでwww.domain.comを表示すると、Railsの画面が表示されるが、DNSの設定が反映されるのに数時間〜24時間程度かかる。
DNSゾーン設定をすでに終えている場合、バーチャルドメインについては即時反映される。
Slicehost
Railsデプロイ

Railsデプロイ

  • 作者: Ezra Zygmuntowicz
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2009/03/16
  • メディア: 大型本


【関連エントリー】
posted by digital-squad at 2009年09月11日 15時41分 | Comment(0) | TrackBack(0) | Ruby on Rails / Ruby
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック