0

mongrel2上で実行される竜巻のようなPythonフレームワークであるBrubeckにWebアプリをデプロイしようとしていますが、ファブリックスクリプトでmongrel2をデプロイするのに問題があります。

私のfabfileから:

with cd(project_dir):
    run('mkdir -p run && mkdir -p log && mkdir -p tmp')
    run('m2sh load -config mongrel2.conf -db the.db')
    sudo('m2sh start -db the.db -host localhost -sudo')

そして私のmongrel2.confは非常に基本的です:

brubeck_handler = Handler(
    send_spec='ipc://127.0.0.1:9999',
    send_ident='34f9ceee-cd52-4b7f-b197-88bf2f0ec378',
    recv_spec='ipc://127.0.0.1:9998', 
    recv_ident='')
brubeck_host = Host(
    name="localhost", 
    routes={
        '/': brubeck_handler})
brubeck_serv = Server(
    uuid="f400bf85-4538-4f7a-8908-67e313d515c2",
    access_log="/log/mongrel2.access.log",
    error_log="/log/mongrel2.error.log",
    chroot="./",
    default_host="localhost",
    name="brubeck app",
    pid_file="/run/mongrel2.pid",
    port=6767,
    hosts = [brubeck_host]
)
settings = {"zeromq.threads": 1}
servers = [brubeck_serv]

m2sh start基本的に、上記と同じコマンドを使用して、サーバー上でmongrel2を正常に起動できます。しかし、fabricタスクを実行すると、mkdirandm2sh loadタスクは正常に実行されますが、mongrel2が起動しません。サーバーのコマンドラインに貼り付けたときにその開始コマンドが機能するのに、デプロイスクリプトでは機能しない理由を知っている人はいますか?AFAIK -sudoオプションはバックラウンドプロセスとしてmongrel2を実行するので、シェルが閉じられているという問題ではないと思います(念のため、「nohup」を使用してみましたが、役に立ちませんでした)。mongrel2を開始するために何か別のことをする必要がありますか?

4

2 に答える 2

0

ユースケースのドキュメントのセクションは次のとおりです。これは、デフォルトの呼び出しのpty設定に関連しています。FAQの詳細。

于 2012-04-26T00:46:09.483 に答える
0

したがって、この質問には回答がないため、使用している回避策を使用して回答します。何が起こっているのかまだ正確にはわかりませんが(ドキュメントをよく読んで、何が起こっているのかを正確に知ることはできませんm2sh)、mongrel2が実際に開始する前に、フォークされたプロセスで明らかにいくつかのことを行っています。したがって、このコマンドが戻ってファブリックが切断されると、処理を終了する時間がなく、mongrel2が起動しません。

この回避策は私のためにそれを修正します:

sudo('m2sh start -db the.db -host localhost -sudo && sleep 1')

1秒は完全に任意の時間なので好きではありませんが、実装してから毎回機能しています。@Morganの答えはうまくいくように聞こえましたが、コメントで述べたように、pty=Falseファブリックがハングするだけです。

于 2012-05-02T16:52:38.863 に答える