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。无论如何,您可能不应该在生产服务器上使用任何其他东西。
如果您觉得自己无法理解如何处理这一切,请考虑寻求专业帮助,有许多自由系统管理员很乐意以合理的费用为您提供帮助。
所以我一直在为另一个部门开发 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。无论如何,您可能不应该在生产服务器上使用任何其他东西。
如果您觉得自己无法理解如何处理这一切,请考虑寻求专业帮助,有许多自由系统管理员很乐意以合理的费用为您提供帮助。