【问题标题】:Permissions error when accessing Django admin page served by Apache访问 Apache 提供的 Django 管理页面时出现权限错误
【发布时间】:2013-08-12 21:44:42
【问题描述】:

我是 Django 开发的新手,到目前为止,这个网站非常宝贵,我对自己学到的东西印象深刻。话虽如此,我遇到了一个问题,我一直在浏览这个网站上的相关帖子,但似乎找不到任何可以解决我的问题的东西。

HereiswhatI'vetriedbutnoluck

所以我希望你们中的一个人能够看看我在做什么并指出我正确的方向。我正在尝试让我的 Apache Web 服务器为 Django 的管理页面提供 CSS 文件。但是,当访问:http://localhost/admin/,我得到错误:Forbidden. You don't have permission to access /admin/ on this server.

我网站的 CSS/JS 位于 mysite/static,管理页面的 CSS/JS 位于 Django 安装文件夹 Django-1.5/django/contrib/admin/static/admin。以下是我的settings.py 文件中的相关位:

STATIC_ROOT = '/home/me/Desktop/djcode/mysite/production_static'
STATIC_URL = '/static/'
STATIC_DIRS = (
    "/home/me/Django-1.5/django/contrib/admin/static/admin",
    "/home/me/Desktop/djcode/mysite/static",
)

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    #'django.contrib.staticfiles.finders.DefaultStorageFinder',

)

我运行了python manage.py collectstatic 命令,该命令从我的两个目录位置提取所有必要的静态文件,并将它们放在我的项目文件夹中名为production_static 的文件夹中。

这是production_static 文件夹布局:

$ cd production_static
$ ls
admin css images img js

admin 文件夹包含管理页面显示所需的所有静态文件。但由于某种原因,css 文件夹包含我网站的 CSS 以及管理 CSS。与js 文件夹相同。 images 文件夹是我站点的图像,img 文件夹是管理站点的图像。我不知道为什么collectstatic 命令会复制两个管理员的静态文件。

这是 Apache 的 httpd.conf 文件:

AliasMatch ^/([^/]*\.css) /home/me/Desktop/djcode/mysite/production_static/css/$1
AliasMatch ^/([^/]*\.css) /home/me/Desktop/djcode/mysite/production_static/admin/css/$1

Alias /media/ /home/me/Desktop/djcode/mysite/media/
Alias /static/ /home/me/Desktop/djcode/mysite/production_static/
Alias /admin/ /home/me/Desktop/djcode/mysite/production_static/admin/

<Directory /home/me/Desktop/djcode/mysite/production_static>
Order deny,allow
Allow from all
</Directory>

<Directory /home/me/Desktop/djcode/mysite/media>
Order deny,allow
Allow from all
</Directory>

WSGIScriptAlias / /home/me/Desktop/djcode/mysite/mysite/wsgi.py
WSGIPythonPath /home/me/Desktop/djcode/mysite    

<Directory /home/me/Desktop/djcode/mysite/mysite>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

我确保每次更改 httpd.conf 文件时都重新启动 Apache 服务器。

这是我的urls.py 文件:

from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', 'mysite.views.homepage_view'),
    # other url-view mappings here
    url(r'^admin/', include(admin.site.urls)),
)

我的主页和其他页面加载正常。 CSS 和 JS 都很棒。只是当我尝试访问http://localhost/admin/ 时,我会收到权限错误。

【问题讨论】:

    标签: django apache django-admin apache2


    【解决方案1】:

    去掉这个别名:

    Alias /admin/ /home/me/Desktop/djcode/mysite/production_static/admin/
    

    【讨论】:

    • 哇……就是这样。非常感谢!你能解释一下为什么那条线给我带来了问题吗?
    • 因为它不应该在那里。您已经为static 分配了一个别名。而admin 只是static 的子文件夹。
    • 还建议您使用其他网络服务器(如 nginx)提供静态和媒体文件。
    • 为什么 nginx 优于 Apache?
    • 建议不要同时使用 Apache 提供 django 和静态文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2021-02-28
    相关资源
    最近更新 更多