我最近在Django中设置了一个新项目。我现在在/etc/httpd/logs/error.log中收到错误:
[Thu Oct 27 22:43:40.314525 2016] [wsgi:error] [pid 47381] [远程 127.0.0.1:52662] ImportError:没有名为'myproject.settings'的模块
我最初完成了民意调查教程,并使用了它:
这一切都奏效了,但我注意到当我使用内部网络服务器运行这个项目时
./manage.py runserver
它使用了python3。当我使用带有mod_wsgi的apache运行这个项目时,它使用了python 2.7。它功能齐全,所有网页都有效,但是他们使用的是python2.7。
所以我发现我的错误(或者其中一个)是使用yum安装mod_wsgi而不是从源代码编译它。
所以我使用
卸载了mod_wsgiyum remove mod_wsgi
然后我使用
从源代码编译mod_wsgiwget "https://github.com/GrahamDumpleton/mod_wsgi/archive/4.5.7.tar.gz"
tar -xzf '4.5.7.tar.gz'
cd ./mod_wsgi-4.5.7
./configure --with-python=/bin/python3.4
make
make install
然后我必须在/etc/httpd/conf/httpd.conf中添加一行:
LoadModule wsgi_module modules/mod_wsgi.so
当我现在尝试运行它时,我收到上面的ImportError消息。我的wsgi.py文件是:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
application = get_wsgi_application()
为了进行调试,我已将wsgi.py文件替换为:
import sys
def application(environ, start_response):
status = '200 OK'
output = ''
output += 'sys.version = %s\n' % repr(sys.version)
output += 'sys.prefix = %s\n' % repr(sys.prefix)
output += 'sys.path = %s\n' % repr(sys.path)
output += 'mod_wsgi.process_group = %s\n' % repr(environ['mod_wsgi.process_group'])
output += 'mod_wsgi.application_group = %s\n' % repr(environ['mod_wsgi.application_group'])
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [str.encode(output)]
给我输出:
sys.version ='3.4.3(默认,2016年8月9日,17:10:39)\ n [GCC 4.8.5 20150623(Red Hat 4.8.5-4)]'sys.prefix ='/ usr'sys.path = [ '/家/ myuser的/ MyProject的', '/home/myuser/myproject/myprojectenv/lib/python3.4/site-packages', '/usr/lib64/python34.zip','/ usr / lib64 / python3.4', '/usr/lib64/python3.4/plat-linux','/usr/lib64/python3.4/lib-dynload', '/usr/lib64/python3.4/site-packages', '/usr/lib/python3.4/site-packages'] mod_wsgi.process_group = 'myproject'mod_wsgi.application_group ='localhost.localdomain |'
我已经浏览过django文档,以及mod_wsgi文档,似乎无法找到我的问题。
我的httpd配置是/etc/httpd/config.d/django.conf:
Alias /static /home/myuser/myproject/static
<Directory /home/myuser/myproject/static>
Require all granted
</Directory>
<Directory /home/myuser/myproject/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess myproject python-path=/home/myuser/myproject:/home/myuser/myproject/myprojectenv/lib/python3.4/site-packages
WSGIProcessGroup myproject
WSGIScriptAlias / /home/myuser/myproject/myproject/wsgi.py
我的项目正在使用django教程中的标准文件结构:
静态文件仍然通过apache正确提供。有什么想法吗?