我目前正在Virtualenv中开发瓶装应用程序。我打算使用Bjoern WSGI服务器提供它(但这可能并不重要)。我还打算将应用程序提供浅色或NGINX反向代理。无论如何,该应用程序可以从其自身的Virtualenv作为系统服务运行吗?如果是这样,一个人将如何处理?

有帮助吗?

解决方案

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

要运行依赖Virtualenv作为SuberSord的守护程序服务的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脚本。而且,要在启动时运行主管,您可以在root帐户中编写类似的crontab:

@reboot /usr/local/bin/supervisord -c /home/root/supervisord.conf 

当然,如果您没有要打开的端口号低于1024,则可以在非特权帐户中编写此启动话剂。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top