我正在尝试通过apache和mod_wsgi文件设置django项目。但我收到此错误client denied by server configuration: /home/ghrix/production
。我有谷歌这个错误,并找到了很多解决方案,但没有任何对我有用。
我的代码如下:
production.wsgi
import os
import sys
sys.path = ['/home/ghrix/myproject/'] + sys.path
os.environ['DJANGO_SETTINGS_MODULE'] = 'config.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
production.conf文件:
<VirtualHost *:80>
WSGIScriptAlias / /home/ghrix/production.wsgi
ServerName firstweb.com
ServerAlias firstweb.com
Alias /static/ /home/ghrix/myproject/static/
<Directory /home/ghrix/myproject/ >
Options Indexes FollowSymLinks
WSGIProcessGroup production
WSGIApplicationGroup %{GLOBAL}
Require all denied
</Directory>
</VirtualHost>
答案 0 :(得分:1)
我通过两次更改解决了这个问题:
1)要求全部拒绝 - &gt;将此更改为 - &gt; 要求全部授予
2)如果您查看由您创建的项目,项目目录中已存在wsgi.py
文件(默认情况下您的设置所在的dir),因此您不必创建单独的wsgi文件,因为我有最初创建。只需将apache2中的conf文件中的wsgi.py指定为
WSGIScriptAlias / /<path to my-project wsgi.py file>
这就是你的错误已经解决了。但是如果你在设置模块找不到之后再犯一个错误,那么你必须编辑你的wsgi文件并添加两行代码:
import sys
sys.path = ['<path to my project>'] + sys.path
这就是你的项目现在将顺利进行。
所以完整的wsgi和conf文件将如下所示:
wsgi.py文件:
import os
import sys
sys.path = ['<path to my project>'] + sys.path
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "conf.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
和conf文件:
<VirtualHost *:80>
WSGIScriptAlias / /<path to my project>/wsgi.py
ServerName secondweb.com
ServerAlias secondweb.com
Alias /static/ /<path to my project>/static/
<Directory /<path to my project>/ >
Options Indexes FollowSymLinks
Require all granted
</Directory>
</VirtualHost>