• Linux之项目的部署


      

    前期准备

    python3解释器

    uwsgi wsgi(web服务网关接口,就是一个实现了python web应用的协议)

    virtualenvwrapper

    路飞的代码

    vue的代码

    nginx (一个是nginx对静态文件处理的优秀性能,一个是nginx的反向代理功能,以及nginx的默认80端口,访问nginx的80端口,就能反向代理到应用的8000端口)

    mysql

    redis 购物车订单信息

    supervisor 进程管理工具

    1.部署环境准备,准备python3和虚拟环境解释器,virtualenvwrapper
      pip3 install -i https://pypi.douban.com/simple virtualenvwrapper
    2.修改python3的环境变量,写入到/etc/profile中
      PATH=/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/ruby/bin/:/root/bin
    3.修改~/.bashrc
      写入变量

    4.新建一个虚拟环境 s15vuedrf
      mkvirtualenv s15vuedrf

    5.准备前后端代码
      wget https://files.cnblogs.com/files/pyyu/luffy_boy.zip
      wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip
      如果代码在本地,传到服务器 使用 lrzsz 和xftp工具

    6.解压缩代码
      unzip luffy_boy.zip
      unzip 07-luffy_project_01.zip

    7.从vue前端代码搞起
      1.准备node打包环境
        wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz
      2.解压缩node包,配置环境变量,使用npm和node命令
      3.检测node和npm
        node -v
        npm -v
      4.安装vue项目所需的包
        cd /opt/s15vuedrf/07-luffy_project_01
        输入npm install
        npm run build
        这两条都正确配置之后,就会生成一个 dist 静态文件目录,整个项目的前端内容和index.html都在这里了
      5.等待nginx加载这个 dist文件夹

    部署后端代码所需的环境

    1.激活虚拟环境
      workon 进入虚拟环境
    2.通过一条命令,导出本地的所有软件包依赖
      pip3 freeze > requirements.txt
    3.将这个requirements.txt 传至到服务器,在服务器的新虚拟环境中,安装这个文件,就能安装所有的软件包了
      pip3 install -r requirements.txt
      
    这个文件内容如下:项目所需的软件包都在这里了
      [root@web02 opt]# cat requirements.txt
        certifi==2018.11.29
        chardet==3.0.4
        crypto==1.4.1
        Django==2.1.4
        django-redis==4.10.0
        django-rest-framework==0.1.0
        djangorestframework==3.9.0
        idna==2.8
        Naked==0.1.31
        pycrypto==2.6.1
        pytz==2018.7
        PyYAML==3.13
        redis==3.0.1
        requests==2.21.0
        shellescape==3.4.1
        urllib3==1.24.1
        uWSGI==2.0.17.1

    4.准备uwsgi 支持高并发的启动python项目(注意uwsgi不支持静态文件的解析,必须用nginx去处理静态文件)
      1.安装uwsgi
        pip3 install -i https://pypi.douban.com/simple uwsgi

      2.学习uwsgi的使用方法
        通过uwsgi启动一个python web文件
        uwsgi --http :8000 --wsgi-file s15testuwsgi.py
        --http 指定http协议
        --wsgi-file 指定一个python文件

        通过uwsgi启动django项目,并且支持热加载项目,不重启项目,自动生效 新的 后端代码

        uwsgi --http :8000 --module s15drf.wsgi --py-autoreload=1

        --module 指定找到django项目的wsgi.py文件


    5.使用uwsgi的配置文件,启动项目
      1.创建一个uwsgi.ini配置文件,写入参数信息
        touch uwsgi.ini

    配置文件如下

    [uwsgi]
    # Django-related settings
    # the base directory (full path)
    #指定项目的绝对路径的第一层路径!!!!!!!!!!!!!!!!!!!!!!!!
    chdir = /opt/s15vuedrf/luffy_boy/
    
    # Django's wsgi file
    # 指定项目的 wsgi.py文件!!!!!!!!!!!!
    # 写入相对路径即可,这个参数是以 chdir参数为相对路径
    module = luffy_boy.wsgi
    
    # the virtualenv (full path)
    # 写入虚拟环境解释器的 绝对路径!!!!!!
    home = /root/Envs/s15vuedrf
    # process-related settings
    # master
    master = true
    # maximum number of worker processes
    #指定uwsgi启动的进程个数    
    processes = 1
    
    #这个参数及其重要!!!!!!
    #这个参数及其重要!!!!!!
    #这个参数及其重要!!!!!!
    #这个参数及其重要!!!!!!
    # the socket (use the full path to be safe
    #socket指的是,uwsgi启动一个socket连接,当你使用nginx+uwsgi的时候,使用socket参数
    socket = 0.0.0.0:9000
    
    #这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
    #这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
    #这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
    #这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
    #这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
    #http = 0.0.0.0:8000
    
    # ... with appropriate permissions - may be needed
    # chmod-socket = 664
    # clear environment on exit
    vacuum = true

    6.使用uwsgi配置文件启动项目
    uwsgi --ini uwsgi.ini

    supervisor进程管理工具

    1.将linux进程运行在后台的方法有哪些
      第一个,命令后面加上 & 符号
      python manage.py runserver &

      第二个 使用nohup命令

      第三个使用进程管理工具

    2.安装supervisor,使用python2的包管理工具 easy_install ,注意,此时要退出虚拟环境!!!!
      如果没有命令,使用以下命令,安装
      yum install python-setuptools
      easy_install supervisor

    3.通过命令,生成一个配置文件,这个文件就是写入你要管理的进程任务
      echo_supervisord_conf > /etc/supervisor.conf

    4.编辑这个配置文件,写入操作 django项目的 命令
      vim /etc/supervisor.conf
      直接到最底行,写入以下配置
      [program:luffyproject]  #项目名
      command=/root/Envs/p1/bin/uwsgi --ini /etc/uwsgi_nginx.ini  

       #  首先进入到虚拟环境下cdvirtualenv  进入到虚拟环境的目录在pwd就是路径,后面ini 是自己配置的uwsgi的配置文件路径


    5.启动supervisord服务端,指定配置文件启动
      supervisord -c /etc/supervisor.conf

    6.通过supervisorctl管理任务
      supervisorctl -c /etc/supervisor.conf

    7.supervisor管理django进程的命令如下
      supervisorctl直接输入命令会进入交互式的操作界面
      > stop s15luffy
      > start s15luffy
      > status s15luffy


    8.启动luffy的后端代码

    nginx静态文件处理

    配置nginx步骤如下
      1.编译安装nginx
      2.nginx.conf配置如下

    #第一个server虚拟主机是为了找到vue的dist文件, 找到路飞的index.html
      server {
        listen 80;
        server_name 192.168.13.79;
        #当请求来自于 192.168.13.79/的时候,直接进入以下location,然后找到vue的dist/index.html 
        location / {
          root /opt/s15vuedrf/07-luffy_project_01/dist;
          index index.html;
          }
        }
    #由于vue发送的接口数据地址是 192.168.13.79:8000 我们还得再准备一个入口server
      server {
        listen 8000;
        server_name 192.168.13.79;
        #当接收到接口数据时,请求url是 192.168.13.79:8000 就进入如下location
        location / {
        #这里是nginx将请求转发给 uwsgi启动的 9000端口
        uwsgi_pass 192.168.13.79:9000;
        # include 就是一个“引入的作用”,就是将外部一个文件的参数,导入到当前的nginx.conf中生效
        include /opt/nginx112/conf/uwsgi_params;
        }
      }

    3.启动nginx
      ./sbin/nginx 直接启动
    此时可以访问 192.168.13.79 查看页面结果

     总结:

    启动路飞项目,这个项目用的是sqllite,因此安装mysql自行选择

    redis必须安装好,存放购物车的数据

  • 相关阅读:
    qemumips环境搭建跳坑指南
    Redisson 的分布式锁
    一场由CompletableFuture和ExecutorService引发的血案
    SpringFactoriesLoader,解析METAINF/spring.factories的工具
    Dubbo线程池
    postman通过脚本Tests设置全局cookie
    解决is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for autoproxying)
    SpringBoot之ObjectProvider类
    关于开发springbootstarter单元测试的一些总结
    @Configuration属性proxyBeanMethods详解
  • 原文地址:https://www.cnblogs.com/qq631243523/p/10230298.html
Copyright © 2020-2023  润新知