Django 的生产版本?

Production version of Django?

所以我一直在为另一个部门开发 Badgr 服务器。我使用 Python 2.7 和 django 构建了它。据我所知,Django 仅用于开发网站。

我想接受这个项目并将其转换为 运行 用于生产环境的东西。但我真的不知道如何进行。抱歉,如果这是一个真正的菜鸟问题,我是系统管理员而不是开发人员。

(env)[root@badgr code]# ./manage.py 运行server & 正在执行系统检查...

系统检查未发现任何问题(0 沉默)。 2016 年 8 月 8 日 - 16:31:48 Django 版本 1.7.1,使用设置 'mainsite.settings' 在 #####//127.0.0.1:8000/ 启动开发服务器 使用 CONTROL-C 退出服务器。

但是当我转到#####//myserver:8000 时,我似乎无法连接到它,

我知道来自我的 PC 的流量正在访问服务器,因为我在 TCP 8000 上的 tcpdump 中看到它。有人告诉我 运行服务器阻止来自外部源的流量,因为它仅供开发人员使用。

在与一些人交谈后,他们建议我切换到 Apache 或 Gunicorn?

以下是我从 Django 文档中收到的一些说明:https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/ 虽然我不能真正弄清楚我应该做什么。任何输入将不胜感激。谢谢

首先,您确实应该使用 "long term support" 版本的 Django,而不是 1.7.1。当前的 LTS 版本是 1.8.14;有关详细信息,请参阅 https://www.djangoproject.com/download/

您获得的 Django 文档 link 只是您需要了解的内容的一部分。更好的起点实际上是该页面上的第一个 link,即 https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/modwsgi/.

我建议您使用 gunicorn 和 Nginx 来 运行 生产服务器上的 Django 项目。两者都很容易 google 用于官方文档和食谱,只要您的代码不慢,它们的组合是最快的组合之一。 (Nginx+uWSGI 是另一个不错的选择,但对初学者来说有点难)。

Gunicorn 可以使用 pip install unicorn 或与安装 Django 相同的方式安装,然后使用简单的 gunicorn yourproject.wsgi 启动(请参阅文档了解更多配置选项)。

Nginx(使用您的发行版的包管理器来安装它)应该配置为反向代理模式,并且还可以从您各自的 static/media root 服务 static/media 文件(manage.py collectstatic 必须是用于使静态文件保持最新)。阅读文档以了解基本原理并将其用作 /etc/nginx/sites-enabled/yoursite.conf:

的示例
server {
    listen 80 default;
    server_name example.com;
    root /path/to/project/root/static;

    location /media {
        alias /path/to/project/root/media;
    }

    location /static {
        alias /path/to/project/root/static;
    }

    location /favicon.ico {
        alias /path/to/project/root/static/favicon.ico;
    }

    location / {
        proxy_pass  http://localhost:8000;
        include     proxy_params;
    }
}

如果您需要 ssl 或 www/non-www 重定向(强烈建议设置两者),还有更多内容,但这个示例应该足以让您入门。

要自动 运行 gunicorn,您可以使用主管或系统单元系统(无论是 systemd 还是其他)。

注意:所有这些假设您使用的是 linux。无论如何,您可能不应该在生产服务器上使用任何其他东西。

如果您觉得自己无法理解如何处理这一切,请考虑寻求专业帮助,有许多自由系统管理员很乐意以合理的费用为您提供帮助。