• Linux之部署前后端分离项目


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

      一、创建一个虚拟环境

      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目录下

      二、数据库导入

      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;

      三、运行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

      如果项目代码没问题的话,是可以在浏览器上正常访问的

       四、使用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

      五、使用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前端项目

      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文件:

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

      这样就可以把整个项目运行起来了。记得平滑启动nginx和启动uwsgi

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

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

      七、superviosr守护进程工具

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

      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启动有问题,不要慌,把所有的的退出,重新连接之后,基本上就可以用了

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

  • 相关阅读:
    momentjs时间格式插件
    TagCanvas 插件
    Vue2.0 探索之路——生命周期和钩子函数的一些理解
    vue.js学习:1.0到2.0的变化(区别)
    dom操作节点之常用方法
    javascript 中 x offsetX clientX screenX pageX的区别
    Vuex详解笔记2
    Vuex详解笔记1
    Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#<Object>‘的解决方法
    CSS技巧和经验列表
  • 原文地址:https://www.cnblogs.com/12345huangchun/p/10732848.html
走看看 - 开发者的网上家园