Linux部署django项目时,访问时样式文件加载失败、静态文件加载失败
错误情况一:
在linux部署了Django项目,访问IP时,加载不出来,或 加载样式出不来,通过以下步骤逐一排查:
1、项目运行是否启动?最好打开 Debug模式
2、检测端口是否打开?云服务器安全策略?服务器端口?服务器防火墙?
1) 云服务器安全策略 - 到云控制台 添加安全策略 2) 服务器端口 与 服务器防火墙 设置: # 查看端口开启状态 firewall-cmd --query-port=6060/tcp no #未开启 yes # 已开启 # 开启指定端口 firewall-cmd --add-port=6060/tcp --permanent # 重启防火墙 systemctl restart firewalld
3、Django项目的settings.py文件配置是否正确? media设置?static设置?
错误原因有可能是在settings中静态文件目录设置的有问题
STATIC_ROOT=os.path.join(BASE_DIR,"static/")#错误 STATIC_ROOT=os.path.join(BASE_DIR,"/static/")#正确
4、受 文件权限 影响? 改为 chmod -R 777 project/
错误情况二:
在 linux 下需要用 python-admin 来开 django 的服务,如果你是 python3 那么命令应为 python3-admin manage.py runserver 可以正常访问页面,没有静态加载的问题
在配置 uwsgi 时需要更改项目 settings.py 中的设置,更改项目如下
debug=False
allow_host=[‘*’]
静态文件重定位 STATIC_ROOT =os.path.join(BASE_DIR,”/var/www”)
再进行静态文件的转移 在项目目录下进行: Python3 manage.py collectstatic 这一步的顺序很重要,否则路径会有问题.
然后配置 uwsgi 有许多方法,我采用的是下面的一种 在项目目录下新建 socket.xml 文件(与 manage.py 同级)内容如下:
这时可以用下面这个命令去运行项目 Uwsgi –http :8000 –chdir /home/user/project/hello –module hello.wsgi –static-map=/static=/var/www/ 也可以正常访问页面,包括加载静态页面
nginx的配置问题
配置 nginx 主要进行两个文件的修改,两个文件都在/etc/nginx 目录下 一个是 nginx.conf,需要修改的内容为: 将第一行定位用户的名字改为你的用户文字,我的是 root 第二个文件时 sites-available/sites-enable 目录下的 default 文件
哦,还有一步很重要,需要将项目和静态文件的权限更改一下,改为你的用户可以访问,读取,执行,:chmod –R 755 目录.
参考了链接的方法: https://blog.****.net/eightbrother888/article/details/79503716