Django静态文件不可见
我的Django网站不会使用Django静态文件管理显示CSS或JS 我的html() 我的Apache默认文件/etc/apache2/sites available/defaults 注意:我无法使用Django静态文件不可见,django,mod-wsgi,django-staticfiles,apache2.2,Django,Mod Wsgi,Django Staticfiles,Apache2.2,我的Django网站不会使用Django静态文件管理显示CSS或JS 我的html() 我的Apache默认文件/etc/apache2/sites available/defaults 注意:我无法使用,因为“您使用的服务器名称是该服务器的主名称”,所以我将所有这些都放在默认文件中 <VirtualHost *:80> AliasMatch ^/([^/]*\.css) /var/www/bias_experiment/src/survey/static/$1 Alias /s
,因为“您使用的服务器名称是该服务器的主名称”,所以我将所有这些都放在默认文件中
<VirtualHost *:80>
AliasMatch ^/([^/]*\.css) /var/www/bias_experiment/src/survey/static/$1
Alias /static/ /var/www/bias_experiment/src/survey/static/
<Directory /var/www/bias_experiment/src/survey/static>
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias /bias_experiment /var/www/bias_experiment/src/bias_experiment/index.wsgi
<Directory /var/www/bias_experiment/src/bias_experiment>
<Files index.wsgi>
Order deny,allow
Allow from all
</Files>
</Directory>
....
(other Apache default code here)
....
</VirtualHost>
我在一个运行Apache 2.2.22和mod_wsgi 3.3-4ubuntu0.1的共享虚拟机上
但是没有一个静态文件会出现
非常感谢您的帮助
编辑1
根据Stevens的建议,我已将静态根目录更新为
STATIC_ROOT = '/var/www/bias_experiment/src/survey/static/'
但是没有运气
编辑2
这是每个文件(包括其中一个CSS文件)的文件权限。我相信他们是对的
/var/www/bias_experiment/static/survey/css/bootstrap.css
-rw-r--r--1 www-data www-data 121463-Jul 22 19:17 bootstrap.css
/var/www/bias\u实验/静态/调查/css
drwxr-xr-x 2 www-data www-data 4096 Jul 22 19:17 css
/var/www/bias_实验/静态/调查
drwxr-xr-x 6 www data www data 4096 Jul 18 14:44调查
/var/www/bias\u实验/静态
drwxr-xr-x 10 www-data www-data 4096 Jul 22 19:17 static
编辑3ls-ltr/var/www/bias\u-experiment/src/survey/static/
在apache配置文件中,将“允许从所有”更改为“要求所有已授予的””。还要确保您对静态文件具有正确的文件权限。在apache配置文件中,将“允许从所有文件更改为”要求所有已授予的文件权限。还要确保您对静态文件具有正确的文件权限。您的静态根目录不正确,应该是
STATIC_ROOT = /var/www/bias_experiment/src/survey/static/
您是否正确设置了STATICFILES\u DIRS
:根据collectstatic
的输出,您的静态根可能位于该元组中
最后,
AliasMatch
是否有用 您的静态根不正确,应该是
STATIC_ROOT = /var/www/bias_experiment/src/survey/static/
您是否正确设置了STATICFILES\u DIRS
:根据collectstatic
的输出,您的静态根可能位于该元组中
最后,
AliasMatch
是否有用 从您的live站点,我注意到您在静态文件上收到403禁止的
响应,这意味着这些文件在那里,但是www-data
对它们没有读取权限。确保递归地chown
静态根目录(在所有静态资源都存在之后)
一个简单的
sudo chown-R www-data:www-data/var/www/bias_-experience/src/survey/static/
应该可以解决这个问题。从你的现场站点,我注意到你在静态文件上得到了403禁止的
响应,这意味着这些文件在那里,但是www-data
没有读取权限。确保递归地chown
静态根目录(在所有静态资源都存在之后)
一个简单的
sudo chown-R www-data:www-data/var/www/bias\u-experiment/src/survey/static/
应该可以解决这个问题。。。STATIC\u ROOT必须是要收集静态文件的文件夹,STATICFILES\u DIRS是从中收集静态文件的文件夹。因此,STATICFILES\u DIRS应该位于STATIC\u根文件夹之外,并且您希望Apache为STATIC\u根文件夹中的文件提供服务
正确设置静态根目录和静态文件目录(一种测试方法是在调用collectstatic后在本地主机上以DEBUG=True模式和DEBUG=False模式运行),您只需要为静态文件设置别名
WSGIScriptAlias / <REPLACE_BY_YOUR_WSGI_FILE_PATH>
Alias /static/ <REPLACE_BY_YOUR_STATIC_ROOT>
WSGIScriptAlias/
别名/静态/
Erm。。。STATIC\u ROOT必须是要收集静态文件的文件夹,STATICFILES\u DIRS是从中收集静态文件的文件夹。因此,STATICFILES\u DIRS应该位于STATIC\u根文件夹之外,并且您希望Apache为STATIC\u根文件夹中的文件提供服务
正确设置静态根目录和静态文件目录(一种测试方法是在调用collectstatic后在本地主机上以DEBUG=True模式和DEBUG=False模式运行),您只需要为静态文件设置别名
WSGIScriptAlias / <REPLACE_BY_YOUR_WSGI_FILE_PATH>
Alias /static/ <REPLACE_BY_YOUR_STATIC_ROOT>
WSGIScriptAlias/
别名/静态/
谢谢您的帮助。因为我正在运行Apache/2.2.22(Ubuntu),根据Django项目文档。“如果您使用的Apache版本早于2.4,请将Require all promited替换为Allow from all,并在其上方添加行Order deny,Allow。”我已使用sudo chown www data:www data
将静态文件夹以及其中的CSS和JS文件夹设置为www data所有。我相信这是正确的。还是不行。谢谢你的帮助。因为我正在运行Apache/2.2.22(Ubuntu),根据Django项目文档。“如果您使用的Apache版本早于2.4,请将Require all promited替换为Allow from all,并在其上方添加行Order deny,Allow。”我已使用sudo chown www data:www data
将静态文件夹以及其中的CSS和JS文件夹设置为www data所有。我相信这是正确的。仍然不工作。我已经按照你的建议更改了静态根。我没有使用STATICFILES\u DIRS,但现在已经添加了它们(请参见上面的编辑)。我包括别名匹配,因为它在Django项目文档中。我试过有没有试过,但都没有成功。我现在已经把它注释掉了。通过查看live页面仍然无法正常工作,感谢STATIC\u ROOT
是collectstatic
将文件收集到的位置,而STATICFILES\u DIRS
是一组目录,其中collectstatic
将查找stat
WSGIScriptAlias / <REPLACE_BY_YOUR_WSGI_FILE_PATH>
Alias /static/ <REPLACE_BY_YOUR_STATIC_ROOT>