解决django部署后静态文件404问题

2020-05-09 15:54:14 浏览数 (1)

用过django的内置服务器127.0.0.1:8000都知道,如果debug=False的时候那么django就不会自己去寻找静态文件了,

那么这个时候就需要自己去设置静态文件的路径,为此,我踩过不少坑,这篇文章能够很好的解决这个问题

我部署的环境是centos7.6 django uwsgi nginx 详情请参考此博客下部署文章

在nginx中设置好静态文件路径,用绝对路径指向静态文件static即可,media同理

location /static{

alias /data/wwwroot/project/static;

}

正文开始

如果你的项目部署后所有的静态文件都出现了404,那么你应该检查一下,你的setting中是否有设置

因为线上环境是不可能开启debug的,总结就是开启debug关了之后就不会django就不会自己找静态文件了

所以,只需要自己设置好路由,让django去按照指定的路由去找静态文件就完美的解决了

DEBUG=False

# STATICFILES_DIRS=[os.path.join(BASE_DIR,’static’)] 这句是需要注释的

STATIC_ROOT=os.path.join(BASE_DIR,’static’)  #用于处理静态文件

MEDIA_ROOT=os.path.join(BASE_DIR,’media’) # 用于处理上传的文件

setting中做好了这三部之后

开始在url.py中设置

首先导入

from django.conf.static import serve

from django.conf import settings

from django.urls import re_path # 因为需要用到正则匹配所以导入它

接着在路由中添加

urlpatterns=[

re_path(‘^stiaic/(?P<path>.*)’,serve,{‘document_root’:settings.STATIC_ROOT}), # 用于处理static里的文件

re_path(‘^media/(?P<path>.*)’,serve,{‘document_root’:settings.MEDIA_ROOT}), # 用于处理上传的文件

]

然后在执行静态文件收集

python manage.py collectstatic  # 收集全部静态文件到STATIC_URL定义的路径内

然后重启你的uwsgi和nginx看看效果吧

这样就可以解决关了debug后静态文件丢失的问题,踩了n多坑之后总结出来的经验,分享给你们!

祝你们好运。(如果还没有成功,多试几次)

0 人点赞