【宝塔面板】centOS部署先后端分离全部遇到的坑,Django

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'
# 解决 由于你须要进入到虚拟环境中去执行:
  1:source /www/wwwroot/项目名/虚拟环境名vevn(就是你存放依赖库的文件夹)/bin/activate # 进入虚拟环境
  2:python3 manage.py makemigrations # 迁移数据库
3: python3 manage.py migrate # 生成迁移文件 ‘




# 问题1-1:Nginx使用静态文件不渲染?/只渲染media 不渲染static? (这个问题属于前端不分离)
# 解决:
首先你须要先收集下静态文件:
  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
                         } python






# 问题1-2:admin使用静态文件?只用uwsgi返回静态文件便可:(这个问题属于先后端不分离部署)
  
# 解决:
 首先你须要先收集下静态文件:
  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:配置问题惹的祸(博主认为宝塔面板的启动对于 python实在太不友好因此启动仍是用命令行比较好)nginx

# uwsgi配置问题?耗时几天决定改用gunicorn启动后端服务器
# 解决(后端启动):
  1:在安装完虚环境后进入虚拟环境安装gunicorn: source命令进入虚拟环境后安装:pip install gunicorn
  2:进入项目目录进行开启:
    2-1:cd /www/wwwroot/PlayEarn/ # 进入项目目录
    2-2:gunicorn -w1 -t3 -b 127.0.0.1:8000 PlayEarn.wsgi -D # w-进程 t-线程 -D-后台运行





# 问题:前端的静态文件与后端的静态文件以及media用户的静态文件如何处理
# 解决:
1:将前端编译好的文件夹dist复制到django的/static下,
   2:配置nginx文件,添加静态文件路径:
  

 

 
 

 

 
 

 

 
 

 


 
  
 

# 问题:反向代理须要设置django路由的访问路径:数据库

# 解决:django

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

 

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

      

 

 

 

3:大概流程浏览器

1:上传前端编译文件与后端文件夹,注意将前端编译文件夹放到django的/static下
2:建立django项目,使用uwgis去配置虚拟环境会比较方便,建立完后点击中止运行项目
3:接着进入终端,进入虚拟环境,安装gunicorn依赖库,接着使用启动django 8000端口 ------ 2与3部署启动完后端服务器
4:配置nginx,建立并添加站点,打开设置-配置文件:修改root 下的静态文件夹路径 添加静态文件路径/static/ 与/media/配置 这是用于浏览器访问的时候返回给静态文件
5:4完成后,打开反向代理,添加后端访问路径前缀(这里须要看你的路由请求前缀标志)个人是/api/路径 修改后就完成了整个部署

PS:部署新手最大的坑:后端的路径必需要有一个统一的标志,否则会跟前端的路由起冲突,这样子nginx就不知道去找谁拿数据或者网页了