加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 安全 > 正文

【宝塔面板】centOS部署前后端分离所有遇到的坑,Django

发布时间:2020-12-25 18:21:28 所属栏目:安全 来源:网络整理
导读:1:刚刚买完服务器,在宝塔面板安装完一切工具,Django顺利运行后(不能运行一般是起了中文名) # 问题:想迁移数据库,结果发现-bash: python3: command not found # 解决:系统版本的Python是3.7.8 卸载不了,所以你只需要安装个3.7.2的版本即可,迁移命令

1:刚刚买完服务器,在宝塔面板安装完一切工具,Django顺利运行后(不能运行一般是起了中文名)

#  问题:想迁移数据库,结果发现-bash: python3: command not found
# 解决:系统版本的Python是3.7.8 卸载不了,所以你只需要安装个3.7.2的版本即可,迁移命令后python的命令变为:/root/.pyenv/versions/3.7.2/bin/python -V





# 问题:命名安装完依赖包为什么输入/root/.pyenv/versions/3.7.2/bin/python manage.py 报错了:No module named 'django'
# 解决 因为你需要进入到虚拟环境中去执行: PS:manage.py文件找不到的话就要指定到绝对路径
  1:source /www/wwwroot/项目名/虚拟环境名vevn(就是你存放依赖库的文件夹)/bin/activate # 进入虚拟环境
  2:python3 manage.py makemigrations # 迁移数据库
3: python3 manage.py migrate # 生成迁移文件 ‘




# 问题1-1:Nginx使用静态文件不渲染?/只渲染media 不渲染static? (这个问题属于前端不分离)

【宝塔面板】centOS部署前后端分离所有遇到的坑,Django

# 解决:
首先你需要先收集下静态文件:
  1:source /www/wwwroot/项目名/虚拟环境名vevn(就是你存放依赖库的文件夹)/bin/activate    # 进入虚拟环境
  2: python /www/wwwroot/项目名/manage.py collectstatic # 收集静态文件
  nginx反向代理添加 后面不加/:

? ? ? ? ? ? ? ? ? ? ? ?location /static {
? ? ? ? ? ? ? ? ? ? ? ? ? alias /static;
? ? ? ? ? ? ? ? ? ? ? ? ?}


? ? ? ? ? ? ? ? ? ? ? ?location /media {
? ? ? ? ? ? ? ? ? ? ? ? ? ?alias /www/wwwroot/daily_fresh-master/media;? ?# 这个需要自己测试下? 没用的话 就写/static 这个路径是定位在你对应的目录文件夹下
? ? ? ? ? ? ? ? ? ? ? ? ?}





# 问题1-2:admin使用静态文件?只用uwsgi返回静态文件即可:(这个问题针对前后端不分离部署,分离项目不需要看这个问题)
  

【宝塔面板】centOS部署前后端分离所有遇到的坑,Django

# 解决:
   首先你需要先收集下静态文件:
  1:source /www/wwwroot/项目名/虚拟环境名vevn(就是你存放依赖库的文件夹)/bin/activate    # 进入虚拟环境
  2: python /www/wwwroot/项目名/manage.py collectstatic # 收集静态文件
   我的服务器是收集在根目录下所以我的静态文件路径是/static,uwsgi配置在最后配置:
  static-map = /static=/static # 最后等号后面配置静态文件收集路径,media需要后面测试,是否是写media-map=/media=收集路径或者项目的media路径





# 致命问题:uwsgi配置了http = 0.0.0.0:8000端口为什么浏览器访问不到接口:
# 解决:
  因为你需要打开宝塔面板的安全模块:接着放行8000端口,这样子就可以访问到了,但是这是测试阶段的,部署完uwsgix跟nginx后配合的端口,最好需要关闭其他放行端口
?

2:配置问题

#  uwsgi配置问题?耗时几天决定改用gunicorn启动后端服务器
# 解决(后端启动):
  1:在安装完虚环境后进入虚拟环境安装gunicorn: source命令进入虚拟环境后安装:pip install gunicorn 或者再项目管理器里面直接安装模块
  2:进入项目管理器启动即可
 




# 问题:前端的静态文件与后端的静态文件以及media用户的静态文件如何处理?
#  解决:
1:将前端编译好的文件夹dist复制到django的/static下,在nginx里面制定好前端静态文件夹的访问路径:

?

?

?

【宝塔面板】centOS部署前后端分离所有遇到的坑,Django

?

?

?

?

?


?


?


?

?

# 问题:反向代理需要设置django路由的访问路径:

# 解决:

    假设我的路由接口都是以api开头:url(r"api/order/cancel$",order_cancel.OrderCancel.as_view()),

?

      宝塔面板-网站-设置-反向代理:

      

【宝塔面板】centOS部署前后端分离所有遇到的坑,Django

?

?

?

?

【宝塔面板】centOS部署前后端分离所有遇到的坑,Django

?

?

?

?

3:大概流程

1:上传前端编译文件与后端文件夹,注意将前端编译文件夹放到django的/static下(这是为了方便管理前端跟后端的静态文件不冲突相同名)
2:创建django项目后,项目管理器安装gunicorn依赖包,运行起来,如果报错请看报错日志
4:创建并添加站点,打开设置-配置文件:修改root 下的静态文件夹路径 添加静态文件路径/static/ 与/media/配置  这是用于浏览器访问的时候返回给静态文件
5:4完成后,打开反向代理,添加后端访问路径前缀(这里需要看你的路由请求前缀标志)我的是/api/路径 修改后就完成了整个部署
PS:部署新手最大的坑:后端的路径必须要有一个统一的标志,不然会跟前端的路由起冲突,这样子nginx就不知道去找谁拿数据或者网页了

?

?

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读