运行 Apache 上的 Django

running django on apache

首先:请不要责备我犯了新手错误或类似的错误。我仍在学习,只需要一点帮助。 所以我用 ubuntu 16.04 在 digitalocean 上创建了一个 droplet 并登录并 运行:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-setuptools python-pip apache2 libapache2-mod-wsgi

并安装了 django:

sudo pip install Django==11.1.4

并在目录中创建项目(没有 virtualenv):

django-admin.py startproject mysite

但是,如果我这样做 "runserver"

python manage.py runserver

并在 firefox 中键入 xxx.xxx.xxx.xx:8000 即使我在终端中看到 运行 服务器确实有效,也没有任何结果。如果我键入 xxx.xxx.xxx.xx,那么我会看到 apache 的默认页面。我的目标是 运行 django 而不是 apache,但我什至无法开始,因为仅用于测试的 运行 服务器甚至无法工作。我怎样才能做到这一点,我在哪里犯了错误?

编辑:运行服务器的输出是:

Performing system checks...

System check identified no issues (0 silenced).
September 02, 2017 - 22:21:12
Django version 1.11.4, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

manage.py runserver NOT 意味着通过 Apache 为您的页面提供服务,它 ONLY 意味着轻量级本地开发服务器 运行 您编写的代码。

相反,您应该关注 guide to run DJango on Apache using mod_wsgi

在这种情况下,我愿意提供的唯一可能有用的建议是,如果您尝试在虚拟机或 Docker 容器中托管 runserver,您需要将主机绑定显式设置为

manage.py runserver 0.0.0.0:8000

Note that the default IP address, 127.0.0.1, is not accessible from other machines on your network. To make your development server viewable to other machines on the network, use its own IP address (e.g. 192.168.2.1) or 0.0.0.0 or :: (with IPv6 enabled).

同样,runserver 仅用于本地开发 不要 使用它来尝试通过 Apache 托管站点,因为这就是像 mod_wsgi 这样的托管驱动程序的目的。

运行服务器和 Apache 是两个不同的东西。

开发人员使用本地 运行 服务器在本地编码和 运行 Web 应用程序。通常本地加载的设置是不同的,例如生产网站使用设置和本地使用 settings_local.py 覆盖生产设置(非常简化的示例)。

如果你 运行 你的 runserver 并且你加载 http://127.0.0.1:8000/ 你应该能够看到一些东西并且在你的终端上你应该看到 运行 服务器响应你的来自浏览器的请求。

如果您的目标是部署您的 Web 应用程序,那么您需要类似 apache 的东西,但不是在本地。恕我直言,我建议您避免使用 Apache 并使用 Nginx + Gunicorn + supervisord 在您的生产服务器上管理您的 webapp。配置更容易。