知行合一1 分钟阅读
Django 生产部署添加admin管理后台样式
Django在生产部署都会关闭 DEBUG = False,这样会导致管理后台样式丢失。
在Django生产环境中将 `DEBUG` 设置为 `False` 时,Django默认不再自动处理静态文件(如CSS、JavaScript和图片等),这包括管理后台(admin site)所依赖的样式和脚本。在开发环境下,当你设置 `DEBUG=True` 时,Django的`django.contrib.staticfiles`应用会处理这些静态文件,使得后台界面能够正确显示样式。
在settings配置文件中添加静态文件相关的配置
收集Django静态文件
STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')在你的Django项目目录下运行以下命令,将所有静态文件收集到STATIC_ROOT指定的位置:
python manage.py collectstatic --noinput确认ALLOWED_HOSTS确保在settings.py中的 `ALLOWED_HOSTS` 列表包含了生产服务器的实际域名或IP地址,否则即便静态文件服务正常,也可能因为请求被Django拒绝而无法加载。
nginx配置
假设你的admin静态文件在/path/to/static/admin/,在Nginx的/etc/nginx/sites-available/your_domain.conf添加以下内容:
server {
listen 80;
server_name your.domain.com; # 替换为你的域名
location / {
include uwsgi_params;
uwsgi_pass 0.0.0.0:8001; #与uwsgi中ip:端口相同
}
location /static/admin/ { # Django管理后台静态资源
alias /path/to/static/admin/;
expires 30d; # 可选,设置静态文件缓存过期时间
}
location /static/ { # 其他静态资源
alias /path/to/your/project/static/;
expires 30d;
}
}启用Nginx配置
./nginx -t # 检查配置是否正确
./nginx -s reload # 重启Nginx以应用新的配置优化代码
只有生产才启用,避免开发环境不能打开问题。
# 生产环境才启用,开发环境可注释掉
if not DEBUG:
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage' # 使用Manifest存储以支持缓存 busting有关使用上的问题,欢迎您在底部评论区留言,一起交流~
读者评论
评论会同步写入该文在 Notion 中的页面底部(与正文同页,便于管理)。
暂无评论,欢迎抢沙发。