17

私は現在、Faye に私の Rails 3.0.9 アプリケーションを使ってもらっています。ただし、ターミナルで 2 つの別々のタブを開いています。1 つは Faye サーバー用、もう 1 つは Rails サーバー用です。それらを統合して、Rails の起動時に Faye サーバーを自動的に実行するにはどうすればよいですか?

Faye サーバーを起動するために、次のコマンドを実行しています。

rackup faye.ru -s thin -E production

faye.ru

require 'faye'
faye_server = Faye::RackAdapter.new(:mount => '/faye')
run faye_server

さらに情報が必要な場合はお知らせください。

4

4 に答える 4

13

以下を含む初期化子を作成するだけです。

Thread.new do
  system("rackup faye.ru -s thin -E production")
end

より良いオプション:

https://github.com/FooBarWidget/daemon_controllerを使用

于 2011-06-21T19:37:22.457 に答える
7

最近では、これには Foreman を使用します: https://github.com/ddollar/foreman

Procfile を作成することで、どのデーモンを実行する必要があるかを指定し (必要なデーモンの数を制御して)、すべてを 1 つのターミナル ウィンドウに保持できます (各プロセスの優れた色分けを使用)。環境が debian ベースの場合、本番用に upstart または init.d スクリプトにエクスポートすることもできます。

Procfile の設定がすべて完了したら、あとは実行するforeman startだけです。これで、レースに出かけることができます。resqueとfayeに使っています。

于 2011-10-21T03:55:58.640 に答える
3

このシェルスクリプトは config/thin_example.sh に書きました

#!/bin/sh

set -e

# Feel free to change any of the following variables for your app:
TIMEOUT=${TIMEOUT-60}
APP_ROOT=/home/deployer/apps/example/current
PID=$APP_ROOT/tmp/pids/thin.pid
CMD="cd $APP_ROOT; bundle exec rackup -D -P $PID $APP_ROOT/config/faye.ru -s thin -E     production"
AS_USER=deployer
set -u

startme() {
    run "$CMD"
}

stopme() {
    run "pkill -f $PID"
}

run () {
  if [ "$(id -un)" = "$AS_USER" ]; then
    eval $1
  else
    su -c "$1" - $AS_USER
  fi
}

case "$1" in
    start)   startme ;;
    stop)    stopme ;;    
    restart) stopme; startme ;;
    *) echo "usage: $0 start|stop|restart" >&2
       exit 1
       ;;
esac

Ryan Bates がVPS 展開 railscast (pro only)で使用したユニコーン スクリプトを大まかに変更したもの。

実行可能にする

chmod +x config/thin_example.sh

これを init.d にシンボリック リンクする必要があります (実行可能にするために chmod +x を実行した後)。

sudo ln -nfs /home/deployer/apps/example/current/config/thin_example.sh /etc/init.d/thin_example

次に、サーバーで起動する場合

 sudo update-rc.d thin_example defaults

それ以外の場合は、できるはずです/etc/init.d/thin_example [start|stop|restart]。注意すべき重要な点は、rackup をデーモン モード (-D) で開始するように指示し、PID を明示的に設定して、後で停止できるようにしていることです。

于 2012-09-25T03:39:20.797 に答える