当前位置: 首页 > 面试题库 >

Django中带有mod_wsgi的静态文件

夏兴平
2023-03-14
问题内容

我进行了很多搜索,但是我的django网站上的静态文件(css,图像等)仍然存在问题。

我在archlinux 64bits上使用带有Apache的mod_wsgi

我已经在http.conf中添加了它:

LoadModule wsgi_module modules/mod_wsgi.so

<VirtualHost *:80>
    WSGIDaemonProcess mart.localhost user=mart group=users processes=2 threads=25
    WSGIProcessGroup mart.localhost
    LogLevel debug

    Alias /media /home/mart/programmation/python/django/martfiles/media/
    <Directory /home/mart/programmation/python/django/martfiles/>
        Order allow,deny
        Allow from all
    </Directory>

    WSGIScriptAlias / /srv/http/wsgi-scripts/django.wsgi
</VirtualHost>

我尝试在主文件夹中使用django.wsgi,但它不起作用(permission denied to access /)(奇怪的是,如果我使用此处给出的测试脚本,它将起作用)

所有目录和内容(apache文件夹,wsgi-script,martfiles)都775 root:devusers具有组devusers的权限,包括我的用户,http和root

在我的模板base.html中,我这样称呼CSS:

 <html>  <head>
     <link rel="stylesheet" href="/media/css/style.css" />

和/var/log/http/error.log中的错误

 [Sat Jan 16 13:22:21 2010] [error] [client 127.0.0.1] (13)Permission denied: access to /media/css/style.css denied, referer: http://localhost/
 [Sat Jan 16 13:22:21 2010] [info] mod_wsgi (pid=14783): Attach interpreter ''

/etc/httpd/conf/http.conf

/srv/http/wsgi-script/django.wsgi

/home/…/martfiles/settings.py

谢谢

编辑
:我精确地说,我的django网站工作正常(除了会话,但我不认为它与之相关),所以我不确定它与django.wsgi文件有关(也许我错了),但是确定的是我应该能够从apache文件夹外部使用django.wsgi

如果我改变行Alias /media /home/mart/programmation/python/django/martfiles/media/Alias /media /srv/http/media/并给出正确的权限,它的工作原理。但我不想(也不应该)将所有媒体放入apache文件夹


问题答案:

仅包含静态文件的目录“ / home / mart / programmation / python / django / martfiles /
media”是可读和可搜索的,这是不够的。以Apache身份运行的用户必须具有对它的所有父目录的读取权限,并且可能具有搜索权限,并备份到根目录。由于许多系统上的主目录均为“
rwx ------”,因此无论Apache配置中的Deny / Allow指令如何,这都将拒绝Apache访问。

建议您将Django项目和静态文件放在家庭帐户之外的某个位置,并根据需要放宽文件系统权限。



 类似资料: