...
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>
由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中的middleware_path:
文件“C:\ Python27 \ lib \ site-packages \ django \ conf \ _ init _。py”,第52行, getattr
self._setup(名称)
文件“C:\ Python27 \ lib \ site-packages \ django \ conf \ _ init _。py”,第47行,在_setup
self._wrapped =设置(settings_module)
文件“C:\ Python27 \ lib \ site-packages \ django \ conf \ _ init _。py”,第132行,在 init
引发ImportError(“无法导入设置'%s'(是否在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,服务器拒绝启动。
使用Django应用程序(已使用Django开发服务器在本地开发和测试)部署到Microsoft SBS网络而不使用IIS。我尝试在IIS上部署并在早期遇到困难,因此切换到WAMP。
我是Python和Django的新手,并且从未在任何生产服务器上部署过Web应用程序(我是一名通常使用数学和统计编程的R程序员)。
任何有助于实现这一目标的建议,无论采用哪种方法,都将非常感谢!
答案 0 :(得分:1)
这与中间件无关,只是遇到错误的地方。错误本身就是最后一行:“无法导入设置'myapp.settings'”。这几乎可以肯定是因为你没有修改PYTHONPATH - 无论是在你的wsgi还是你的Apache conf中 - 都把“myapp”放在了路径上。
在Django文档中查看例如the example Apache conf - 那里有一个WSGIPythonPath
指令将应用程序添加到Python路径中,这是你没有的。
答案 1 :(得分:0)
在httpd.conf中放置WSGIPythonPath指令会阻止服务器启动,但问题确实与未声明的路径有关。
添加:
sys.path.append("c:/wamp/www/myapp")
到wsgi.py文件就可以了。
感谢丹尼尔罗斯曼让我走上正轨。