为 python-waitress 构建 Upstart 文件

Constructing an Upstart file for python-waitress

我有一个 Django 应用程序 运行ning gunicorn - 我现在想用 waitress 替换它。很简单,我通过 apt-get install python-waitress 安装了女服务员,并通过 waitress-serve --port=8080 myproject.wsgi:application 安装了 运行。

现在我想通过 Upstart 文件(我在 Ubuntu 上)将其设置为 运行。我希望它在正常 运行 级别 2、3、4 和 5 上达到 运行,并告诉它在任何其他 运行 级别(例如系统重新启动时)停止、关机或单用户)。我还希望 Upstart 在失败时自动重启服务。最后但同样重要的是,我需要 waitress 到 运行 端口 80,而不是端口 8080。

我的问题是:如何构建我的 Upstart 文件来反映这些要求?还有其他有用的内容吗?请指教;这是我的主要生产服务器。

其次,根据 waitress 本身,除了能够将其与 SSL 一起使用外,将反向代理(例如 Nginx)与 waitress 一起使用是否有任何优势?我的应用程序是一个阅读量大的 Django 网络应用程序,用户可以在其中聚集并互相聊天。

与其编写您自己的新贵脚本,我建议您查看其他知名且经过实战检验的解决方案。一种流行的解决方案是 supervisor。它是纯 Python 并且非常容易安装和配置。如果您使用 apt-get 安装,它会附带 运行 所有必要的脚本,当 Ubuntu 本身重新启动时,等等(尽管您很可能不会安装最新版本的 supervisor)。安装主管后,您需要做的就是为您的网络服务器进程添加一个小配置。然后当你启动主管时,它将管理你的网络服务器进程。这是一个示例主管配置:

[program:project_name]
command=/path/to/virtualenv/bin/waitress-serve --port=8080 myproject.wsgi:application
directory=/path/to/django/project
autostart=true
autorestart=true
redirect_stderr=True
user=www

请注意,supervisor 可以管理多个进程,因此如果您有任何其他进程需要 运行 用于您的 webapp,您也可以将它们添加到 supervisor。

至于使用 nginx 的优势,还有很多关于该主题的其他 Whosebug 问题,所以我建议您查看这些问题,而不是在这里重复类似的想法。这是我发现的一对:

  • Standalone Python web server and/or nginx
  • WSGI vs uWSGi with Nginx