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

时间:2011-01-01 01:55:08

标签: python linux wsgi bottle

我目前正在开发virtualenv中的瓶子应用程序。我打算使用bjoern WSGI服务器来服务它(但这可能并不重要)。我还打算使用lighty或nginx反向代理服务该应用程序。无论如何,应用程序可以在其自己的virtualenv中作为系统服务运行吗?如果是这样,那会怎样呢?

1 个答案:

答案 0 :(得分:4)

根据我的经验,我建议您可以使用Supervisord将您的Web服务器作为守护程序服务运行。虽然您可以在/etc/init.d中编写一些Linux服务脚本,但它们确实很难正确执行。这是一个example init.d script for nginx在Ubuntu中作为服务运行它。你不想写一个,是吗?

要运行一个python服务器,它依赖于virtualenv作为带有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。