我目前正在 virtualenv 中开发一个 Bottle 应用程序。我打算使用 bjoern WSGI 服务器来提供它(但这可能并不重要)。我还打算使用 lighty 或 nginx 反向代理来为应用程序提供服务。无论如何,应用程序可以作为系统服务从其自己的 virtualenv 中运行吗?如果是这样,人们会怎么做呢?
根据我的经验,我建议你可以使用主管 http://supervisord.org/将您的 Web 服务器作为守护程序服务运行。虽然你可以在/etc/init.d 中编写一些Linux 服务脚本,但是正确地执行它们确实很困难。这是一个nginx 的 init.d 脚本示例 http://wiki.nginx.org/Nginx-init-ubuntu在 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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)