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
相关产品推荐
相关产品推荐

