作为Linux系统服务从virtualenv启动一个wsgi应用程序

我目前正在virtualenv内开发一个子应用程序。 我打算使用bjoern WSGI服务器来服务它(但这可能并不重要)。 我也打算用lighty或nginx反向代理服务于应用程序。 无论如何,应用程序可以作为一个系统服务从自己的virtualenv运行? 如果是这样,一个人怎么办呢?

Solutions Collecting From Web of "作为Linux系统服务从virtualenv启动一个wsgi应用程序"

根据我的经验,我建议你可以使用Supervisord作为守护进程服务运行你的web服务器。 尽管你可以在/etc/init.d中编写一些Linux服务脚本,但是它们确实很难做到。 下面是一个用于nginx在Ubuntu中作为服务运行的init.d脚本示例 。 你不想写一个,是吗?

要运行一个依赖于virtualenv作为守护进程服务的python服务器,这里是我在生产环境中使用的配置。

[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。