不提供样式表和图像,但提供其他静态文件
Stylesheets and images are not served, but other static files are
我最近在开发服务器时使用了 django runserver
命令启动我的服务器,当我这样做时我让它可以很好地为静态文件提供服务。我决定使用 Gunicorn 和 Nginx 而不是 runserver
命令。因此,我将 /etc/nginx/sites-available/mysite
文件编辑为如下所示:
server {
listen 80;
server_name xxx.xxx.xxx.133;
access_log off;
location /static/ {
alias /opt/myenv/pysauce/static;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}
我还将 mysite/settings.py
中的 STATIC_URL
更改为与我的 Nginx sites-available
文件中的 location /static/
相同。然后我用 gunicorn mysite.wsgi:application
启动了 gunicorn,然后我就可以访问该站点了。我知道 Gunicorn 不能提供静态文件,但我知道 Nginx 可以。
当我访问我的网站时,真正奇怪的是我的样式 sheet 没有提供,但是自定义字体也在静态目录中,样式为 sheet曾是。我可以通过在我的地址栏中输入 /static/css/foundation.css
来确认这一点,结果出现了 404 错误。但是,当我输入地址时,/static/fonts/UbuntuMono-B.ttf
提示下载。为什么样式sheet不提供服务,而其他静态文件却提供服务?
使用浏览器访问/static/css/ 可以吗?
如果无法访问,请检查您的服务器文件夹权限。
我鼓励您做的第一件事是保留日志文件。将以下行放入您的配置文件中:
access_log /dir/to/your/access.log
error_log /dir/to/your/error.log
接下来,打开您的日志,看看为什么 nginx 无法访问这些文件。如果你看到
[Errno 13] Permission denied
那么,就是权限问题,使用如下命令授予访问权限:
chmod -R a+x static
静态文件权限应该有问题。试试这两个命令
sudo chmod -R 777 /opt/myenv/pysauce/static
sudo chown -R 777 /opt/myenv/pysauce/static
这样您就可以授予用户通过浏览器访问您的静态文件的权限。
我最近在开发服务器时使用了 django runserver
命令启动我的服务器,当我这样做时我让它可以很好地为静态文件提供服务。我决定使用 Gunicorn 和 Nginx 而不是 runserver
命令。因此,我将 /etc/nginx/sites-available/mysite
文件编辑为如下所示:
server {
listen 80;
server_name xxx.xxx.xxx.133;
access_log off;
location /static/ {
alias /opt/myenv/pysauce/static;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}
我还将 mysite/settings.py
中的 STATIC_URL
更改为与我的 Nginx sites-available
文件中的 location /static/
相同。然后我用 gunicorn mysite.wsgi:application
启动了 gunicorn,然后我就可以访问该站点了。我知道 Gunicorn 不能提供静态文件,但我知道 Nginx 可以。
当我访问我的网站时,真正奇怪的是我的样式 sheet 没有提供,但是自定义字体也在静态目录中,样式为 sheet曾是。我可以通过在我的地址栏中输入 /static/css/foundation.css
来确认这一点,结果出现了 404 错误。但是,当我输入地址时,/static/fonts/UbuntuMono-B.ttf
提示下载。为什么样式sheet不提供服务,而其他静态文件却提供服务?
使用浏览器访问/static/css/ 可以吗? 如果无法访问,请检查您的服务器文件夹权限。
我鼓励您做的第一件事是保留日志文件。将以下行放入您的配置文件中:
access_log /dir/to/your/access.log
error_log /dir/to/your/error.log
接下来,打开您的日志,看看为什么 nginx 无法访问这些文件。如果你看到
[Errno 13] Permission denied
那么,就是权限问题,使用如下命令授予访问权限:
chmod -R a+x static
静态文件权限应该有问题。试试这两个命令
sudo chmod -R 777 /opt/myenv/pysauce/static
sudo chown -R 777 /opt/myenv/pysauce/static
这样您就可以授予用户通过浏览器访问您的静态文件的权限。