使用 mod_wsgi 运行 Django 教程示例?

Posted

技术标签:

【中文标题】使用 mod_wsgi 运行 Django 教程示例?【英文标题】:Running Django tutorial example with mod_wsgi? 【发布时间】:2011-05-14 20:41:53 【问题描述】:

我安装了wsgi(mod_wsgi),可以通过调用http://localhost/myapp来运行这个简单的应用程序。

WSGIScriptAlias /myapp /Library/WebServer/Documents/wsgi/scripts/myapp.wsgi
def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World! WSGI working perfectly!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

如何运行 django 示例?

我发现this example 有一个简单的例子。

import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'my.settings' # ???

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
我的网站/ __init__.py 管理.py 设置.py 网址.py

Django 生成了三个 python 文件,我看到了一个包含设置信息的 settings.py。 该项目位于“/ABC/DEF/mysite”目录中。

我将代码修改如下,并将其命名为 myapp.wsgi。

import os
import sys

sys.path.append('/ABC/DEF/mysite') 
sys.path.append('/ABC/DEF')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

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

即使我可以从 the tutorial 运行使用“python manage.py runserver 8080”的原始 django 示例,但在使用 mod_wsgi 运行修改后的示例时出现错误。

apache2/log 文件有以下内容。

[2010 年 11 月 24 日星期三 09:02:41] [错误] [客户端 127.0.0.1] ImportError:无法导入设置“mysite.settings”(它在 sys.path 上吗?是否有语法错误?):没有命名模块mysite.settings

据我所知,目录/项目名称是 mysite,它有 settings.py。并且该目录位于 sys.path 中。所以,我不知道为什么 mysite.settings 没有找到。

我的 myapp.wsgi 有什么问题?

已解决

以下代码可以正常工作。 我修改的另一件事是 django 项目不应该在我的主目录中,当我将项目移动到 www doc 目录时,一切正常。

import os
import sys

mysite = 'SOMEWEHRE/django'
if mysite not in sys.path:sys.path.insert(0,mysite)
mysite = 'SOMEWEHRE/scripts'
if mysite not in sys.path:sys.path.insert(0,mysite)

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

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

【问题讨论】:

“我没有设置 mysite.settings”? @Ignacio Vazquez-Abrams :我应该写我不知道如何设置设置。 mysite.settings 指的是 YourProjectName.settings。这就是 Python 获取 settings.py 文件中内容的方式。 请将解决方案作为答案发布 【参考方案1】:

您需要做的是将项目目录或项目所在的目录添加到sys.path,然后将设置指向mysite.settings(如果您已完成后者)。

编辑:

"Django settings"

编辑 2:

How to set the Django settings module

编辑 3:

设置模块应该是模块,而不是文件名。如果是'settings',则无需设置。

【讨论】:

您能给我举个例子,如何“将设置指向 mysite.settings”吗?我添加到我的 OP 中。

以上是关于使用 mod_wsgi 运行 Django 教程示例?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在一个进程中使用 mod_wsgi 和 django 运行 Apache?

使用 apache2 在 mod_wsgi 上运行 django python 3.4

'使用mod_wsgi在apache上部署django app时,没有名为'encodings''的模块

Django/Apache 使用 mod_wsgi 冻结

Django 和 mod_wsgi python 版本?

试图让 django 应用程序在 CentOS 5 上使用 mod_wsgi