【问题标题】:How to deploy django to a dedicated web server?如何将 django 部署到专用的 Web 服务器?
【发布时间】:2014-03-28 03:45:21
【问题描述】:

这是我第一次使用 Django(和 Python),所以在将我的网站部署到 Web 服务器时我有点困惑。我已经完成了本地开发,现在是时候将我的网站放到生产服务器上了。 我有带有 Webuzo CPanel 的专用服务器(Red Hat 4.4.4-13 OS),上面说我已经安装了 Python(v 2.7)、Django(1.6.1)和 Apache(2.4.4)。

当然,我有root访问权限,所以我已经登录到我的服务器并尝试检查是否安装了Django,但是这个命令

>>>import django

给了我这个错误:

importerror: No module named django.

(虽然 Webuzo 控制面板说我安装了 Django)。

在那之后,我设法使用 pip 安装了 Django。所以,现在,我已经安装了 Python 和 Django (1.6.2)。

我的下一步是在生产服务器上创建一个新的 Django 项目,以检查它是否可行,因此我在 public_html 文件夹中创建了新目录并在那里运行以下命令:

>>> django-admin.py startproject test
# python manage.py runserver

django 给了我这个信息:

Validating models...
0 errors found
February 26, 2014 - 00:15:48
Django version 1.6.2, using settings 'test.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

然后我尝试通过网络浏览器访问该位置,但没有发生任何事情(事实上,我只有网络文件夹结构)。 PS 我试图将 localhost 更改为我的服务器的 IP 地址和端口:80,但这给了我一个错误,即端口已在使用中。

我已经阅读了有关将网站部署到服务器的官方 Django 文档,但我不知道我是否应该搞乱 mod_wsgi、mod_fcgi、mod_python 之类的东西,因为正如我所说,我已经安装了 python 和 django在我的网络服务器上?

那么,我应该怎么做才能在我的网络服务器上运行 django?

更新

好的,我已经安装了 mod_wsgi 并将其添加到我的 Apache (2.4.4) 配置中:

WSGIScriptAlias / /home/****/public_html/*mysite.com*/testing/testing/wsgi.py
WSGIPythonPath /home/****/public_html/*mysite.com*

<Directory /home/****/public_html/*mysite.com*/testing>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>

这是我的文件夹结构:

/home/*****/public_html/mysite.rs:
----------------------------------testing:
-----------------------------------------manage.py
                                         testing: 
-------------------------------------------------__init__.py  settings.py  urls.py  wsgi.py

当我访问 mysite.com 时,仍然没有任何反应(mysite.com/testing/ 禁止我)。难道我做错了什么? 我现在筋疲力尽,所以我明天试试 Heroku...

【问题讨论】:

  • 如果您阅读过文档,就会知道您应该永远在生产环境中使用 runserver,是的,您需要使用 wsgi。
  • 您需要对该主题进行更多阅读。如果您在专用机器上,mod_wsgi 应该是您最容易设置的(在使用共享主机时并不总是可以使用 mod_wsgi)
  • 另外,要在使用 runserve 服务时访问页面(只是作为概念证明,从不在产品中),您应该将地址指定为 0.0.0.0 以接受任何连接:python manage.py runserver 0.0.0.0:8000。由于另一个网络服务器正在使用它,您可能会遇到使用 80 的问题。如果可用,您需要成为 root (sudo) 才能分配它。
  • 谢谢你们,你们为我指明了正确的方向。我一直对所有这些模块感到困惑,所以主要问题是我是否需要安装它们。我现在已经安装了 mod_wsgi。

标签: python django apache


【解决方案1】:

作为a book I'm writing about TDD 的一部分,我已经编写了几章,指导您逐步了解如何从头开始配置Web 服务器以服务于Django Web 应用程序。它包括:

  • 设置用户帐户和 SSH 密钥
  • 安装 nginx
  • 检查 dns 是否有效
  • 创建虚拟环境
  • 设置您的数据库
  • 设置静态文件
  • 安装 gunicorn
  • 配置 nginx 虚拟主机和 gunicorn 使用 upstarts 自动启动

http://chimera.labs.oreilly.com/books/1234000000754/ch08.html

然后下一章将展示一个示例,说明如何使用 Fabric 将整个事情自动化。

http://chimera.labs.oreilly.com/books/1234000000754/ch09.html

关于这一切与自动化测试的关系有很多讨论,但如果你忽略这些部分,它应该是如何将 django 应用程序部署到 Web 服务器的一个很好的分步指南。 .

【讨论】:

    【解决方案2】:

    使用 Django 和/或官方文档查看 Tango 的第 16 章:

    但是,您似乎在这里遗漏了一些真正的基础知识,因此您可能需要考虑像 Heroku 这样的托管 PaaS,这样您就不必担心扩展/维护服务器,直到您对细节感到满意。以下是关于如何将 Django 部署到 Heroku 的文档:https://devcenter.heroku.com/articles/getting-started-with-django

    您还应该使用版本控制系统(如 Git)并将 repo 代码部署到目标生产主机,而不是在生产服务器上启动新项目。

    有很多好书端到端地介绍了 Django。建议您搜索:https://www.google.com/search?q=python+django+book

    【讨论】:

    • 请不要推荐Django Book:它已经过时了,而且内容页上还有啊警告说不要使用它。
    • 很好,抱歉。删除了引用并链接到官方文档。
    【解决方案3】:

    使用 Webuzo 安装 django 后,必要的文件位于此处: 基本路径 /usr/local/apps/python2 二进制 /usr/local/apps/python2/bin/django-admin.py

    您可以相应地找到其他文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 2012-11-06
      • 2020-09-17
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      相关资源
      最近更新 更多