You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Django到Ubuntu的Nginx无法加载静态CSS文件求助

Django部署后Nginx无法加载CSS的问题排查与解决

问题背景

按照Ubuntu部署Django+Postgres+Nginx+Gunicorn的教程操作后,站点能正常访问,但CSS无法加载;直接通过0.0.0.0:8000用runserver启动时,CSS显示正常。

当前配置:

settings.py 相关配置

STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

Nginx 站点配置(/etc/nginx/sites-available/django_project)

server {
    listen 80;
    server_name xxx.xx.xx.xxx;

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
        alias /home/muser/django_project/static/;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

错误原因分析

  1. 静态文件未完成收集
    部署Django时,必须通过collectstatic命令将所有静态文件(包括各app下的静态资源、STATICFILES_DIRS指定目录的资源)统一收集到STATIC_ROOT指向的目录中。你当前仅配置了STATIC_ROOT,但未执行收集操作,导致staticfiles目录为空。

  2. Nginx静态文件路径配置错误
    Nginx配置中location /static/指向的是项目中的static目录(开发时的静态文件存放地),但部署环境下应该指向STATIC_ROOT对应的staticfiles目录,否则Nginx找不到收集后的静态资源。

解决步骤

  1. 执行静态文件收集命令
    在项目根目录下运行:

    python manage.py collectstatic
    

    执行过程中会提示确认,输入yes即可完成收集。

  2. 修正Nginx静态文件路径
    编辑Nginx站点配置文件:

    sudo nano /etc/nginx/sites-available/django_project
    

    将location /static/块修改为:

    location /static/ {
        alias /home/muser/django_project/staticfiles/;
    }
    

    注意路径结尾的/必须保留,避免路径拼接错误。

  3. 重启Nginx服务
    保存配置后,重启Nginx使修改生效:

    sudo systemctl restart nginx
    
  4. (可选)检查目录权限
    如果仍无法加载,确保Nginx进程有权限读取staticfiles目录:

    sudo chown -R www-data:www-data /home/muser/django_project/staticfiles/
    sudo chmod -R 755 /home/muser/django_project/staticfiles/
    

内容的提问来源于stack exchange,提问作者mdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:04:54