我目前正在 virtualenv 中开发一个瓶子应用程序。我打算使用 bjoern WSGI 服务器来服务它(但这可能无关紧要)。我还打算使用轻量级或 nginx 反向代理为应用程序提供服务。无论如何,该应用程序可以作为系统服务从其自己的 virtualenv 中运行吗?如果是这样,人们会怎么做呢?
user234932
问问题
2099 次
1 回答
4
根据我的经验,我建议您可以使用Supervisord将您的 Web 服务器作为守护程序服务运行。虽然你可以在 /etc/init.d 中编写一些 Linux 服务脚本,但它们确实很难正确完成。这是一个示例 init.d 脚本,用于 nginx在 Ubuntu 中将其作为服务运行。你不想写一个,是吗?
要使用 supervisord 运行依赖于 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。
于 2011-01-08T07:25:35.103 回答