我需要你的帮助。尝试在我的 django 项目上运行 wsgi 时出现错误。我正在使用Ubuntu 17,Apache2,Django 2.0,Python 3.6
当我从 manage.py 运行时,一切正常,但是当通过wsgi时出现下一个错误:
AH01276:无法提供目录/var/cardsite/cardsite/:无匹配 目录索引 (索引.html,索引.cgi,索引.pl,索引.php,索引.xhtml,索引.htm( 找到, 和选项指令禁止的服务器生成的目录索引
不知道为什么,因为我想一切都正确。波纹管我的配置:
阿帕奇·康普
<VirtualHost *:80>
CustomLog /var/log/apache2/cardsite-access.log common
ErrorLog /var/log/apache2/cardsite-error.log
DocumentRoot /var/cardsite/cardsite/
Alias /static /var/cardsite/cardsite/static/
<Directory /var/cardsite/cardsite/static>
Require all granted
</Directory>
<Directory /var/cardsite/cardsite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
WSGIDaemonProcess cardsite python-path=/var/cardsite/ python-home=/var/venv_python36/
WSGIProcessGroup cardsite
WSGIScriptAlias / /var/cardsite/cardsite/wsgi.py
</VirtualHost>
wsgi.py
import os
import sys
PROJECT_DIR = '/var/cardsite'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cardsite.settings")
def execfile(filename):
globals = dict( __file__ = filename )
exec( open(filename).read(), globals )
activate_this = os.path.join( '/var/venv_python36/bin', 'activate_this.py' )
execfile( activate_this )
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
附言我给予文件夹和所有里面的权限。PSS 还通过 pip3 安装了像 "libapache2-mod-wsgi-py3" 或 "mod-wsgi" 这样的软件包。
谢谢大家的任何建议,它可以是什么
不要将DocumentRoot
设置为源代码的父目录。如果你要把WSGIScriptAlias
拿出来,人们可以下载你的源代码。您应该避免这种风险,即使WSGIScriptAlias
当前拦截了/
下的所有内容。DocumentRoot
目录不允许访问也可能是问题的一部分。
尝试:
<VirtualHost *:80>
CustomLog /var/log/apache2/cardsite-access.log common
ErrorLog /var/log/apache2/cardsite-error.log
DocumentRoot /var/cardsite/htdocs
<Directory /var/cardsite/htdocs>
Require all granted
</Directory>
Alias /static /var/cardsite/cardsite/static
<Directory /var/cardsite/cardsite/static>
Require all granted
</Directory>
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
WSGIDaemonProcess cardsite python-path=/var/cardsite python-home=/var/venv_python36
WSGIProcessGroup cardsite
WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias / /var/cardsite/cardsite/wsgi.py
<Directory /var/cardsite/cardsite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
添加WSGIApplicationGroup
一如既往是一个好主意,只有一个 WSGI 应用程序委派给守护进程组。
确保创建目录:
/var/cardsite/htdocs
最后,您缺少ServerName
指令。因此,如果这不是默认VirtualHost
,您的请求甚至可能不会被此VirtualHost
处理。