0

语境

  • Python 2.7 64 位
  • 姜戈 1.3
  • WAMP 2.2 (Apache 2.2.22) 64 位
  • mod_wsgi 3.4 64位
  • 视窗 7 64 位

详情 | Apache httpd.conf

...
Listen 192.168.20.11:8080
...
LoadModule wsgi_module modules/mod_wsgi.so
...
ServerName 192.168.20.11:8080
...
DocumentRoot "c:/wamp/www/"
...
<VirtualHost *:8080>

    ServerName 192.168.20.11
    ServerAdmin me@mine.com

    DocumentRoot "C:/wamp/www/myapp"

    <Directory "C:/wamp/www/mapp">
    Order allow,deny
    Allow from all
    </Directory>

    Alias /myapp/static "C:/wamp/www/myapp/static"
    WSGIScriptAlias /test "C:/wamp/www/myapp/wsgi.py"

</VirtualHost>   

详情 | wsgi.py

由 Django 的 startproject 生成。位于默认 /myapp/myapp/wsgi.py

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

问题

鉴于上述上下文,无法在 WAMP 上部署 Django 应用程序。

“Hello World”测试 wsgi 应用程序工作正常,所以我确认 mod_wsgi 处于活动状态。

我得到错误:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请联系服务器管理员 me@mine.com 并告知他们错误发生的时间,以及您所做的任何可能导致错误的事情。

服务器错误日志中可能提供有关此错误的更多信息。

当指向:

http://192.168.20.11:8080/myapp

静态文件夹工作正常,我可以通过指向来访问目录中的所有静态文件:

http://192.168.20.11:8080/myapp/static

详情 | 服务器错误日志

注意:为了便于阅读,我删除了时间戳。

mod_wsgi (pid=5728, process='', application='192.168.20.11:8080|/myapp'): 加载 WSGI 脚本'C:/wamp/www/myapp/myapp/wsgi.py'。

mod_wsgi (pid=5728): 处理 WSGI 脚本时发生异常

'C:/wamp/www/myapp/myapp/wsgi.py'。

回溯(最近一次通话最后):

文件“C:\Python27\lib\site-packages\django\core\handlers\wsgi.py”,第 236 行,调用中

self.load_middleware()

对于 settings.MIDDLEWARE_CLASSES 中的中间件路径:

文件“C:\Python27\lib\site-packages\django\conf\_ init _.py”,第 52 行,在getattr

self._setup(名称)

_setup 中的文件“C:\Python27\lib\site-packages\django\conf\_ init _.py”,第 47 行

self._wrapped = 设置(settings_module)

文件“C:\Python27\lib\site-packages\django\conf\_ init _.py”,第 132 行,在init

raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" %(self.SETTINGS_MODULE, e))

ImportError:无法导入设置“myapp.settings”(它在 sys.path 上吗?):没有名为 myapp.settings 的模块

文件不存在:C:/wamp/www/myapp/favicon.ico

在这种情况下,我不了解中间件的功能,并认为没有必要使用中间件。

关于系统路径,当我添加时:

WSGIPythonPath "c:/wamp/www/myapp"

到我的 httpd.conf 文件中的 VirtualHost,服务器拒绝启动。

客观的

在不使用 IIS 的情况下将工作的 Django 应用程序(已使用 Django 开发服务器在本地开发和测试)部署到 Microsoft SBS 网络。我尝试在 IIS 上进行部署,但很早就遇到了困难,因此切换到了 WAMP。

我是 Python 和 Django 的新手,从未在任何生产服务器上部署过 Web 应用程序(我是一名 R 程序员,通常使用数学和统计编程)。

任何有助于实现这一目标的建议,无论采用何种方法,都将不胜感激!

4

2 回答 2

1

这与中间件无关,只是遇到错误的地方。错误本身是最后一行:“无法导入设置'myapp.settings'”。这几乎可以肯定是因为您没有修改 PYTHONPATH(在您的 wsgi 或 Apache conf 中)以将“myapp”放在路径上。

例如,请参阅Django 文档中的示例 Apache confWSGIPythonPath - 那里有一个指令可以将应用程序添加到您没有的 Python 路径。

于 2013-04-08T18:33:29.633 回答
0

在 httpd.conf 中放置 WSGIPythonPath 指令会阻止服务器启动,但问题确实与未声明的路径有关。

添加:

sys.path.append("c:/wamp/www/myapp")

到 wsgi.py 文件就可以了。

感谢 Daniel Roseman 让我走上正轨。

于 2013-04-09T15:00:58.427 回答