現在、virtualenv 内でボトル アプリを開発しています。私は bjoern WSGI サーバーを使用してそれを提供するつもりです (しかし、それはおそらくあまり重要ではありません)。また、lighty または nginx リバース プロキシを使用してアプリを提供するつもりです。とにかく、アプリは独自の virtualenv 内からシステム サービスとして実行できますか? もしそうなら、どのようにそれについて行くでしょうか?
2099 次
1 に答える
4
私の経験によると、Supervisordを使用して Web サーバーをデーモン サービスとして実行することをお勧めします。/etc/init.d にいくつかの Linux サービス スクリプトを記述できますが、正しく実行するのは非常に困難です。これは、 nginxが Ubuntu でサービスとして実行するための init.d スクリプトの例です。書きたくないですよね?
virtualenv に依存する python サーバーを、supervisord を使用してデーモン サービスとして実行するために、私が実稼働環境で使用している構成を次に示します。
[program:web01]
command=/home/victorlin/tg2env/bin/paster serve production.ini ;
process_name=%(program_name)s ;
directory=/home/victorlin/ ;
user=victorlin ;
priority=999 ;
redirect_stderr=true ;
stdout_logfile=/home/victorlin/logs/web01_out.txt ;
stderr_logfile=/home/victorlin/logs/web01_err.txt ;
environment=PYTHON_EGG_CACHE=/home/victorlin/.python-eggs ;
/path/to/virtualenv/bin/python を使用して、コマンド フィールドで独自の python スクリプトを実行できます。また、起動時に Supervisord を実行するには、root アカウントで次のように crontab を記述します。
@reboot /usr/local/bin/supervisord -c /home/root/supervisord.conf
もちろん、1024 未満のポート番号を開く必要がない場合は、この起動 crontab を非特権アカウントで記述できます。
于 2011-01-08T07:25:35.103 に答える