Debian etch で railsテスト環境と本番環境を分けて管理する手法を作る。
本番環境 /var/www http://honban.jp
テスト環境 /var/wwwtest http://test.jp
この中に、同じ構造のディレクトリーを作成しておく。
参考サイト)バーチャルホストの例 Apache HTTPサーバー
1. DNSで test.jp を追加する
2. /etc/apache2/sites-available/mainsite をコピーして testsite を作る
3. testsite の中の
# virtualhost test.jp #
Directory
access.log error.log の保存先を変更する
4. /etc/apache2/sites-available/testsite を ln -s で作成する
5. proxy_balancer のポート番号を重複しないように注意する
これだけで、動きます。
次に、mongrelの自動起動
参考サイト)バリケンのRuby日記
1) mongrel_cluster を組む
cd /var/www/rails1
mongrel_rails cluster::configure -e development -p 8000 -N 3 - l /var/www/rails1/log/mongrel.log -c /var/www/rails1
mongrel_cluster.yml に 書かれる
pidファイルを置く場所、ファイル名を変更する
/var/run/mongrel_cluster/mongrel.pid
→ /var/wwwtest/rails1 の場合は mongrel_test1.pid
cwd: /var/www/rails1
log_file: /var/www/rails1/log/mongrel.log
port: "8000"
environment: development
pid_file: /var/run/mongrel_cluster/mongrel.pid
servers: 3
2) 自動起動を作る
1. cp /etc/init.d/mongrel_cluster_rails1 /etc/init.d/mongrel_cluster_test1
2.vi mongrel_cluster_test1
mkdir /etc/mongrel_cluster/rails1
#!/bin/bash
#
# Copyright (c) 2007 Bradley Taylor, bradley@railsmachine.com
#
# mongrel_cluster Startup script for Mongrel clusters.
#
# chkconfig: - 85 15
# description: mongrel_cluster manages multiple Mongrel processes for use
# behind a load balancer.
#
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/var/lib/gems/1.8/bin
CONF_DIR=/etc/mongrel_cluster/test1
PID_DIR=/var/run/mongrel_cluster
USER=mongrel
RETVAL=0
# Gracefully exit if the controller is missing.
which mongrel_cluster_ctl >/dev/null || exit 0
# Go no further if config directory is missing.
[ -d "$CONF_DIR" ] || exit 0
case "$1" in
start)
# Create pid directory
mkdir -p $PID_DIR
chown $USER:$USER $PID_DIR
mongrel_cluster_ctl start -c $CONF_DIR
RETVAL=$?
;;
stop)
mongrel_cluster_ctl stop -c $CONF_DIR
RETVAL=$?
;;
restart)
mongrel_cluster_ctl restart -c $CONF_DIR
RETVAL=$?
;;
status)
mongrel_cluster_ctl status -c $CONF_DIR
RETVAL=$?
;;
*)
echo "Usage: mongrel_cluster {start|stop|restart|status}"
exit 1
;;
esac
exit $RETVAL
3. ln -s /etc/mongrel_cluster/test1/mongrel_cluster.yml /var/wwwtest/rails1/config/mongrel_cluster.yml
4. /etc/init.d/mongrel_cluster_test1 start で動くことを確認
3) rcに組み込む
/etc/inittab の
# default runlevel を確認すると id:2:initdefault:
cd /etc/rc2.d/
ls -la
lrwxrwxrwx 1 root root 17 2007-07-03 10:27 S91apache2 > ../init.d/apache2
lrwxrwxrwx 1 root root 18 2007-07-02 12:35 S99rc.local -> ../init.d/rc.local
lrwxrwxrwx 1 root root 19 2007-07-02 20:26 S99rmnologin -> ../init.d/rmnologin
S90でリンクを作成する
ln -s ../init.d/mongrel_cluster_rails1 S90mongrel
再起動すると、自動的にmongrelが起動してその後 Apacheが起動する
本番環境 /var/www http://honban.jp
テスト環境 /var/wwwtest http://test.jp
この中に、同じ構造のディレクトリーを作成しておく。
参考サイト)バーチャルホストの例 Apache HTTPサーバー
1. DNSで test.jp を追加する
2. /etc/apache2/sites-available/mainsite をコピーして testsite を作る
3. testsite の中の
# virtualhost test.jp #
Directory
access.log error.log の保存先を変更する
4. /etc/apache2/sites-available/testsite を ln -s で作成する
5. proxy_balancer のポート番号を重複しないように注意する
これだけで、動きます。
次に、mongrelの自動起動
参考サイト)バリケンのRuby日記
1) mongrel_cluster を組む
cd /var/www/rails1
mongrel_rails cluster::configure -e development -p 8000 -N 3 - l /var/www/rails1/log/mongrel.log -c /var/www/rails1
mongrel_cluster.yml に 書かれる
pidファイルを置く場所、ファイル名を変更する
/var/run/mongrel_cluster/mongrel.pid
→ /var/wwwtest/rails1 の場合は mongrel_test1.pid
cwd: /var/www/rails1
log_file: /var/www/rails1/log/mongrel.log
port: "8000"
environment: development
pid_file: /var/run/mongrel_cluster/mongrel.pid
servers: 3
2) 自動起動を作る
1. cp /etc/init.d/mongrel_cluster_rails1 /etc/init.d/mongrel_cluster_test1
2.vi mongrel_cluster_test1
mkdir /etc/mongrel_cluster/rails1
#!/bin/bash
#
# Copyright (c) 2007 Bradley Taylor, bradley@railsmachine.com
#
# mongrel_cluster Startup script for Mongrel clusters.
#
# chkconfig: - 85 15
# description: mongrel_cluster manages multiple Mongrel processes for use
# behind a load balancer.
#
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/var/lib/gems/1.8/bin
CONF_DIR=/etc/mongrel_cluster/test1
PID_DIR=/var/run/mongrel_cluster
USER=mongrel
RETVAL=0
# Gracefully exit if the controller is missing.
which mongrel_cluster_ctl >/dev/null || exit 0
# Go no further if config directory is missing.
[ -d "$CONF_DIR" ] || exit 0
case "$1" in
start)
# Create pid directory
mkdir -p $PID_DIR
chown $USER:$USER $PID_DIR
mongrel_cluster_ctl start -c $CONF_DIR
RETVAL=$?
;;
stop)
mongrel_cluster_ctl stop -c $CONF_DIR
RETVAL=$?
;;
restart)
mongrel_cluster_ctl restart -c $CONF_DIR
RETVAL=$?
;;
status)
mongrel_cluster_ctl status -c $CONF_DIR
RETVAL=$?
;;
*)
echo "Usage: mongrel_cluster {start|stop|restart|status}"
exit 1
;;
esac
exit $RETVAL
3. ln -s /etc/mongrel_cluster/test1/mongrel_cluster.yml /var/wwwtest/rails1/config/mongrel_cluster.yml
4. /etc/init.d/mongrel_cluster_test1 start で動くことを確認
3) rcに組み込む
/etc/inittab の
# default runlevel を確認すると id:2:initdefault:
cd /etc/rc2.d/
ls -la
lrwxrwxrwx 1 root root 17 2007-07-03 10:27 S91apache2 > ../init.d/apache2
lrwxrwxrwx 1 root root 18 2007-07-02 12:35 S99rc.local -> ../init.d/rc.local
lrwxrwxrwx 1 root root 19 2007-07-02 20:26 S99rmnologin -> ../init.d/rmnologin
S90でリンクを作成する
ln -s ../init.d/mongrel_cluster_rails1 S90mongrel
再起動すると、自動的にmongrelが起動してその後 Apacheが起動する