部署Django应用程序

时间:2011-10-28 17:24:22

标签: django apache wsgi

对于这样一个简单的问题我感到非常抱歉 - 我是WSGI开发的新手,我很感激你能承受的任何耐心。

我制作了一个Django应用程序;它在开发模式下运行良好。我跑:

python manage.py runserver

然后将我的浏览器定向到127.0.0.1:8000,瞧,还有我的应用。

从这里我绝对不能弄清楚如何在生产模式下运行我的应用程序。我在StackOverflow上阅读了几页like this and this和其他几页。但我不知道在哪里甚至可以指示我的浏览器查看我的页面是否正常工作。

我已安装apache2mod_python等,但我认为问题在于我的误解处于更基本的层面。当我以前完成CGI程序时,我将浏览器指向webroot/file.html,其表单调用cgi-bin/file.cgi,生成html输出。我不知道我是否应该导航到.wsgi页等。

假设我应该导航到.wsgi file,我还尝试制作一个包含以下内容的文件:

import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

path = '/home/orserang/nonparametric-protein/src/www/mysite$'
if path not in sys.path:
        sys.path.append(path)

并添加了

WSGIScriptAlias / /path/to/mysite/apache/django.wsgi

到我的apache2/httpd.conf文件,以便其内容为:

<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    PythonDebug On
    PythonPath "['/home/orserang/nonparametric-protein/src/www/mysite'] + ['/home/orserang/nonparametric-protein/src/'] + sys.path"
    WSGIScriptAlias /mysite /home/orserang/nonparametric-protein/src/www/mysite/django.wsgi
</Location>

但是当我重新启动apache时,它说:

/etc/apache2/httpd.conf第8行的语法错误:
这里不允许使用WSGIScriptAlias

鉴于我甚至不知道 where 我应该指向浏览器来访问Django wsgi页面,我觉得有些简单,我做错了。

也许Django WSGI应用程序需要在后台运行一些东西,它会监听请求(而不是通过apache)?

与部署文档相比,仅有关于视图和数据库的在线Django文档非常重要;因此,我最好的猜测是,这是一件非常简单的事情。

非常感谢你的帮助!

4 个答案:

答案 0 :(得分:1)

Django Book 2.0对此有一个概述。它通常不与Django文档链接:

Chapter 12: Deploying Django

查看“使用Django with Apache和mod_python”部分。

答案 1 :(得分:1)

您正在混淆mod_python和mod_wsgi部署方法。除了Location行以外,摆脱WSGIScriptAlias指令内的所有内容。

答案 2 :(得分:1)

我编写了shell脚本,在apache for linux上部署了一个django项目,

https://github.com/mukulu/shell-scripts/blob/master/deploy-django.sh

您只需要在代码的第一行配置几个变量, 并且它会弄清楚剩下的。

它几乎检查并安装django的依赖项,编写部署项目并重新启动服务器的apache配置。

我打算在python中重写它(我匆匆写了) 随意重复使用。

变量是:

SITE_PREFIX="/djangoproject"

MEDIA_URL="/media"

ADMIN_MEDIA_PREFIX="/static/admin/"

MEDIA_ROOT=""

DJANGO_VERSION="1.3.1"

APACHE2_CONFIG="/etc/apache2/conf.d"     #Apache configurations directory in yoru system.

答案 3 :(得分:0)

这可能不是新手,但你可以看看 - http://packages.python.org/django-fab-deploy/

这是用于自动化部署过程的库。它支持主要基于Debian Lenny或Squeeze的服务器。