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

Ubuntu部署Django项目静态文件无法加载(已解决)

问题:Django生产环境静态文件无法加载(Ubuntu 23.04 + Nginx + Gunicorn)

在Ubuntu 23.04上部署Django 4.2项目,使用Nginx和Gunicorn提供服务,HTML页面能正常加载,但JS、CSS、图片等静态文件无法加载。此前在Ubuntu 20上部署同类项目无问题,已给static文件夹赋予全用户权限仍未解决。

相关配置

Django静态文件配置(settings.py)

STATIC_DIR=os.path.join(BASE_DIR,'static')
STATIC_URL = '/static/'
if DEBUG:
    STATICFILES_DIRS = [
        STATIC_DIR,
    ]
else:
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'

生产环境DEBUG = False

Gunicorn服务配置(opinionsdeal.service)

[Unit]
Description=gunicorn daemon
Requires=opinionsdeal.socket
After=network.target

[Service]
User=panelviewpoint
Group=www-data
WorkingDirectory=/home/panelviewpoint/opinionsdealnew
ExecStart=/home/panelviewpoint/opinionsdealnew/venv/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/opinionsdeal.sock \
          opinions_deal.wsgi:application

[Install]
WantedBy=multi-user.target

Nginx配置文件

server {
    server_name opinionsdeal.com www.opinionsdeal.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/panelviewpoint/opinionsdealnew;
    }

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

注:服务器已配置SSL,上述配置移除了SSL相关代码。


已解决方案

  • 核心解决方法:更新项目根目录的权限,确保Nginx进程(默认以www-data用户/组运行)能访问到static目录的上级路径。即使static文件夹权限全开,若上级目录(如/home/panelviewpoint/opinionsdealnew)没有给www-data用户读取权限,Nginx依然无法访问静态文件。
  • 可选方案:修改Nginx主配置文件(nginx.conf)顶部的用户设置,改为user panelviewpoint;,让Nginx以项目用户身份运行,此方案尚未验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 23:47:25