我构建了一个django项目,并使用Apache-WSGI组合将其部署到生产环境中。为此,我添加了 apache2.conf ,如下所示:
WSGIScriptAlias / /home/ubuntu/MyProject/MyProject/wsgi.py
WSGIPythonPath /home/ubuntu/MyProject
<Directory /home/ubuntu/MyProject/MyProject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
所以这意味着所有对我网站的请求首先转到Apache,然后允许WSGI发挥作用。因此,如果我关闭Apache,该网站将无法正常工作。
我现在已经安装了 Django-Channels 。根据&#39;部署&#39;文档中的部分(https://channels.readthedocs.io/en/latest/deploying.html),我有:
以下是我的疑惑:
答案 0 :(得分:8)
目前,Apache没有ASGI服务器实现。这意味着您可以继续使用Apache,但也需要Daphne。从本质上讲,Apache将从主要的Web服务器变为反向代理。
这样做可能有一些价值:Python开发人员多年来一直在反向代理模式下运行nginx。但是,Daphne是一个非常强大的Web服务器,构建在Twisted的Web服务器之上,所以Apache当然不是必需的。
那时候,我建议只使用Daphne运行:让Daphne监听你的主端口并完全禁用Apache。如果您发现仍然需要Apache的功能,则需要将Apache配置为反向代理:一个用于配置的建议文章为this one from Digital Ocean。
答案 1 :(得分:5)
正如Lukasa所提到的,我停止了Apache服务器,该服务器最初阻止我的django应用程序被传送到世界各地。 然后我以root身份运行以下命令:
这两个命令开始将应用程序传递给服务器外部的http请求。除了问题帖子中提到的以外,不需要其他任何配置。