Linux之部署先后端分离项目

  首先得看我前两个博客,把python3,虚拟环境,mariadb数据库,redis数据库,nginx安装好。html

  1、建立一个虚拟环境

  1,建立虚拟环境

mkvirtualenv zijin   #建立了一个叫zijin的虚拟环境

  2,安装模块

1,上传项目的requirement.txt文件 2,在当前的虚拟环境中安装模块 pip3 install -i https://pypi.douban.com/simple -r requirement.txt
注:安装xadmin,会出现错误,须要咱们手动安装,
pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2

  3,上传项目

我是把项目都上传到opt目录下

  2、数据库导入

  1,把本地电脑上mysql数据库的表结构和数据导出

第一种: mysqldump -u root -p --all-databases > luffy_city.sql 第二种 从navicat导出数据库数据,导出为luffycity.sql #我采用的是第二种,完成这步,会生成一个sql格式文件

  2,把生成的sql文件上传到/opt目录下

  3,在Linux系统下进入mariadb数据库,新建一个lufei数据库,而后进入lufei数据库

  4,导入sql文件

source /opt/lufei.sql
#这样就会自动生成表结构和数据

  5,刷新权限表

# 容许root用户远程登陆,而且给予全部数据库全部表的全部权限 grant all privileges on *.* to root@'%' identified by '123'; flush privileges;

  3、运行django项目

  1,修改drf项目的settings.py文件

ALLOW_HOSTS=["*"] 数据库链接配置 注意: mariadb就是mysql,这里的ENGINE不用修改 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', "HOST": "127.0.0.1", "PORT": 3306, "USER": "root", "PASSWORD": "123", "NAME": "lufei", } }

  2,运行项目

在opt/lufei_drf目录下输入命令 python3 manage.py runserver 0.0.0.0:8000

  若是项目代码没问题的话,是能够在浏览器上正常访问的前端

   4、使用uwsgi启动项目

  1,安装uwsgi

1,进入虚拟环境 workon lufei 2,安装uwsgi pip3 install uwsgi

  2,使用uwsgi启动项目

uwsgi --http :9000 --module lufei_drf.wsgi    #lufei_drf为drf项目文件
在浏览器上输入ip和端口就能够访问项目

  3,可使用uwsgi配置文件启动项目

1,在lufei_drf项目建立uwsgi,ini文件 mkdir /opt/lufei_drf/uwsgi.ini 2,写入配置信息 [uwsgi] chdir = /opt/lufei_drf #这是项目的绝对目录 module = lufei_drf.wsgi #项目目录加wsgi home = /root/Envs/lufei #虚拟环境的绝对路径 master = true #启动uwsgi主进程 processes = 1 #socket = 0.0.0.0:8000 #这个是当用nginx代理时使用 http = 0.0.0.0:8000 vacuum =true
3,使用uwsgi配置文件启动项目
uwsgi uwsgi.ini

  5、使用nginx

  1,收集静态文件

1,修改settings.py配置文件 STATIC_ROOT='/opt/static'
2,建立今天文件存放目录 mkdir /opt/static
3,收集django下的全部今天文件 python3 manage.py collectstatic

  2,nginx转发uwsgi的配置

1,在nginx.conf配置文件中修改 location / { include /opt/nginx112/conf/uwsgi_params; uwsgi_pass 0.0.0.0:9000; } location /static { alias /opt/static; } 2,将uwsgi.ini配置文件修改 socket = 0.0.0.0:9000 # 启用此行 # http = 0.0.0.0:9000 # 停用此行 3,平滑重启nginx /opt/nginx112/sbin/nginx -s reload

  如今,在浏览器上输入192.168.12.64:8000就能够访问django项目vue

  6、配置vue前端项目

  1,安装及配置node.js

1,在opt目录下下载noode安装包 wget https://nodejs.org/download/release/v10.15.3/node-v10.15.3-linux-x64.tar.gz
2,解压 tar -zxvf node-v10.15.3-linux-x64.tar.gz 3,添加环境变量 vim /etc/profile 把path修改成: PATH=/opt/node-v10.15.3-linux-x64/bin:/opt/python36/bin:/usr/local/sbin:/usr/local/bin:
/usr/sbin:/usr/bin:/root/bin

  2,把vue项目中的全部ip改成192.168.12.64

  3,生成dist项目静态文件

1,进入vue项目 cd /opt/lufei 2,输入 npm run build

  4,在nginx添加服务

server { listen 80; #前端vue用80端口 server_name www.lufei.com ; #使用域名www.lufei.com location / { root /opt/lufei/dist; #静态文件目录 index index.html index.htm; } error_page 500 502 503 504  /50x.html; }

  修改hosts文件:node

  注意:在drf项目的settings.py文件中修改跨域问题python

  这样就能够把整个项目运行起来了。记得平滑启动nginx和启动uwsgimysql

  5,当咱们进入一个页面后,刷新页面,就会报404错误,解决办法:

在nginx配置文件下的关于前端vue端口的server下的location下添加: try_files $uri $uri/ /index.html;

  7、superviosr守护进程工具

  咱们在使用uwsgi启动django时,每次都要输入命令,而后才能启动,并且界面还比保持在uwsgi的启动界面,当退出这个界面的时候,就至关于退出了uwsgi进程,从而项目就中止了,因此用起来有点烦。咱们能够用supervisor工具,只要uwsgi进程在supervisor里面是running状态,那只要supervisor不关闭uwsgi进程,uwsgi进程就会一直跑起来。linux

  1,安装

因为supervisor在python3下没法使用,所以只能用python2去下载!!!!!! 退出虚拟环境,切记 deactivate 安装 easy_install supervisor # 若是没有easy_install的话,就yum安装一个setuptools工具就能够用了 yum install python-setuptools

  2,生成配置文件,并添加配置信息

1,生成配置文件 echo_supervisord_conf > /etc/supervisord.conf 2,进入配置文件 vim /etc/supervisord.conf 3,添加配置信息 [program:lufei_drf] #lufei_drf为项目目录 command=/root/Envs/lufei/bin/uwsgi /opt/lufei_drf/uwsgi.ini #lufei为虚拟环境名,

  3,启动及查看

1,启动 supervisord -c /etc/supervisord.conf # 启动supervisor supervisorctl -c /etc/supervisord.conf # 启动和进入supervisor交互模式 2,查看 supervisorctl # 使用此命令后将会进入supervisor交互式管理界面 status # 查看进程运行状态

  4,管理supervisor里面的进程

stop luffy_city # 关闭luffy_city进程 stop all # 关闭全部进程 start luffy_city # 开启luffy_city进程 start all # 开启全部进程 status # 查看全部进程运行状态 supervisorctl status # 能够不用进入交互模式查看

  注:当你按照个人步骤进行的,若是出现supervisor启动有问题,不要慌,把全部的的退出,从新链接以后,基本上就能够用了ios

整个请求流程图以下,手残,望谅解

相关文章
相关标签/搜索