Apache 错误 (AH01276),无法提供目录 /var/www/project/:

Posted

技术标签:

【中文标题】Apache 错误 (AH01276),无法提供目录 /var/www/project/:【英文标题】:Apache Error (AH01276), Cannot serve directory /var/www/project/: 【发布时间】:2016-06-18 23:34:13 【问题描述】:

我正在尝试在新安装的 centos7 服务器上部署 Django Web 应用程序。 为此,我将 apache2.4 与 mod_wsgi 一起使用。

我被困在提供静态文件上,因为我是新手,这让我很困惑。

这是我的配置文件,如果你能帮助我的话。

/etc/httpd/conf/httpd.conf:

(我删除了我在这里没有使用的所有内容并删除了注释行)

Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin admin@serv.com
<Files ".ht*">
    Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel info

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%Refereri\" \"%User-Agenti\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%Refereri\" \"%User-Agenti\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined
</IfModule>
<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8

<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
IncludeOptional sites-enabled/*.conf
LoadModule wsgi_module modules/mod_wsgi.so

在启用站点的文件夹中,我的项目只有一个配置文件

/etc/httpd/sites-enabled/project.conf:

Alias /favicon.ico /var/www/cvctools/staticfiles/templates/images/favicon.ico
Alias /static/ /var/www/cvctools/staticfiles/
<VirtualHost *:80>
    DocumentRoot /var/www/cvctools
    ServerName proj.ma
    ServerAlias www.proj.ma
    ServerAdmin admin@proj.ma

    <Directory /var/www/cvctools/staticfiles>
        AllowOverride None
        Require all granted
    </Directory>

    <IfModule wsgi_module>
        WSGIScriptAlias / /var/www/cvctools/CapValue/wsgi.py
        WSGIScriptReloading On
        WSGIDaemonProcess CapValue processes=1 threads=1 maximum-requests=5000 display-name=my-wsgi
        WSGIProcessGroup CapValue
        WSGIPythonPath /var/www/cvctools
        <Directory /var/www/cvctools/CapValue>
            <Files wsgi.py>
                Require all granted
            </Files>
        </Directory>
    </IfModule>
</VirtualHost>

在我位于 /var/www/cvctools 的项目文件夹中,我有这个..

./CapValue/wsgi.py:

import django.core.handlers.wsgi
import os,sys

sys.path.append('/vat/www/cvctools')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CapValue.settings")
application = django.core.handlers.wsgi.WSGIHandler()

我在 ./CapValue/settings.py 中的静态文件设置:

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(os.getcwd(), 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(PROJECT_ROOT, 'static'),)
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    # 'compressor.finders.CompressorFinder',
)
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
TEMPLATES = [
    
        'BACKEND' : 'django.template.backends.django.DjangoTemplates',
        'DIRS'    : [os.path.join(STATIC_ROOT, 'templates'), ],
        'APP_DIRS': True,
        'OPTIONS' : 
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        ,
    ,
]

./CapValue/views.py:

from django.views.decorators.csrf import ensure_csrf_cookie
from django.views.generic.base import TemplateView
from django.utils.decorators import method_decorator


class IndexView(TemplateView):
    template_name = 'index.html'

    @method_decorator(ensure_csrf_cookie)
    def dispatch(self, *args, **kwargs):
        return super(IndexView, self).dispatch(*args, **kwargs)

./CapValue/urls.py:

#imports...
urlpatterns = [
    #...
    url('^.*$', IndexView.as_view(), name='index')
]

在运行 manage.py collectstatic 之后,在我的项目目录中,我有包含以下内容的 staticfiles 文件夹:

/var/www/cvctools/staticfiles/:

drwxr-xr-x.  6 admin admin    47 Mar  4 22:36 admin
drwxr-xr-x.  2 admin admin  4096 Mar  4 22:36 css
drwxr-xr-x.  5 admin admin    35 Mar  4 22:36 django_extensions
-rwxr-xr-x.  1 admin admin     0 Mar  4 22:36 human.d41d8cd98f00.txt
-rwxr-xr-x.  1 admin admin     0 Mar  4 22:36 human.txt
drwxr-xr-x.  2 admin admin  4096 Mar  4 22:36 images
drwxr-xr-x. 12 admin admin  4096 Mar  4 22:36 javascript
drwxr-xr-x.  2 admin admin  4096 Mar  4 22:36 notifications
drwxr-xr-x.  6 admin admin    47 Mar  4 22:36 rest_framework
-rwxr-xr-x.  1 admin admin 12925 Mar  4 22:36 staticfiles.json
drwxr-xr-x.  6 admin admin  4096 Mar  4 22:36 templates

但是当我尝试访问应用程序时,在我的 apache 日志中我收到此错误:

 [autoindex:error] [pid 3150] [client 192.168.0.126:57623] AH01276: Cannot serve directory /var/www/cvctools/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive

我到底做错了什么?

编辑

显然它与 mod_wsgi 有关,因为我将 DcumentRoot 更改为 /var/www/cvctools/staticfiles/templates 然后我能够看到我的索引页,但它是这样的:

% load staticfiles % % include 'stylesheets.html' %
% include 'navbar.html' %
% include 'menu.html' %
#
# # % include 'breadcrumb.html' %# #
#
% include 'footer.html' %
% include 'javascripts.html' % 

它没有选择我的模板标签!

【问题讨论】:

【参考方案1】:

我怀疑(在我对问题的编辑中)它与我的 mod_wsgi 设置有关。

查看link 中的设置过程后,我缺少的是 mod_wsgi python 包。 所以一个简单的pip install mod_wsgi 解决了我的问题

【讨论】:

以上是关于Apache 错误 (AH01276),无法提供目录 /var/www/project/:的主要内容,如果未能解决你的问题,请参考以下文章

Apache没有匹配的目录

在 ubuntu 17 上通过 wsgi 运行 django 应用程序的问题

AH00526:/etc/apache2/apache2.conf 第 74 行的语法错误:参数文件中的 Mutex 目录无效:$APACHE_LOCK_DIR

WAMP 无法启动:获取“AH00526:C:/wamp/bin/apache/Apache2.4.4/conf/httpd.conf 的第 224 行语法错误”

AH00558:httpd:在创建 VirtualHost 后无法可靠地确定服务器的完全限定服务器名错误

apache 虚拟主机(EAI 2)名称或服务未知:AH00547:无法解析主机名