• Linux环境上部署Flask


    [该文章只涉及个人部署的简单流程,读者可通过其它途径了解详细部署流程]

    依个人部署项目可预先安装好需要的环境,这里已提前安装好LNMP环境

    1.安装Python环境

      安装virtualenv环境
      配置环境变量
      配置虚拟环境保存的路径,执行sh文件生成 mkvirtualenv 等命令

    source virtualenvwrapper.sh

    2.配置Git
      yum install git
      将远程仓库拉去到本地

    3.安装项目依赖包
      pip install -i https://pypi.douban.com/simple/ -r requirements.txt

    4.修改项目配置文件
      config 数据库连接配置、默认路径等
      数据库迁移,生成数据库迁移脚本,实现模型 <===> 数据库表 之间的映射

      尝试启动服务

    5.安装和使用uwsgi 对应的应用服务:gunicorn
      是一个应用服务器,非静态文件的网络请求必须通过该应用完成,当然也可以充当静态文件服务器(不推荐使用,而推荐使用Nginx)
      uwsgi是用Python编写,因此可通过 pip install uwsgi 安装,且必须安装在系统级别的Python的环境中

      *****通过 uwsgi 部署项目时 请求流程
      Client <===> Nginx <===> uwsgi <===> Django/Flask等服务

      尝试启动:
        uwsgi --http :8080 --module bbs.wsgi --virtualenv=/applications/python/env/bbs-env

      编写配置文件

    [uwsgi]
    # 服务器上是通过uwsgi来启动项目,也就是说启动了uwsgi,也就启动了项目
    socket=127.0.0.1:8001
    # 项目目录
    chdir=/applications/python/bbs
    
    # Python 虚拟环境的路径
    home=/applications/python/env/bbs-env
    
    # flask程序的启动文件,通常在本地是通过运行 python manage.py runserver 来启动项目的
    wsgi-file=/applications/python/bbs/server.py
    # 程序内启用的application变量名
    callable=app
    
    http = :9001
    
    # 启动uwsgi的用户名和用户组
    uid=root
    gid=root
    
    # 设置socket权限
    chmod-socket=666
    
    # 启用主进程
    master=true
    # 自动移除unix Socket和pid文件当服务停止的时候
    vacuum=true

    6.安装和使用Nginx
      作用:
        动静分离 (静态资源:js/cs/图片等文件)
        反向代理
        负载均衡
      安装以及配置好环境变量,并这是Nginx开机自启动

      配置Nginx配置文件并且启动

    7.supervisor配置
      管理uwsgi,可在uwsgi发生意外时自动重启应用服务
      安装,且必须安装在系统级别的Python的环境中 pip3 install git+https://github.com/Supervisor/supervisor
      创建配置文件 bbssupervisor.conf

    [program:bbs]
    command = uwsgi --ini /applications/conf/uwsgi/flask.bbs.ini
    
    directory = /applications/python/bbs
    
    startsecs = 0
    stopwaitsecs = 0
    autostart = true
    autorestart = true
    
    stdout_logfile = /applications/python/bbs/bbssupervisor.log
    stderr_logfile = /applications/python/bbs/bbssupervisor.err
    
    [supervisord]
    loglevel = info
    
    [inet_http_server]
    port = :9001
    username = admin
    password = admin123
    
    # 配置通过 supervisorctl 管理的配置项
    [supervisorctl]
    serverurl = http://127.0.0.1:9001
    username = admin
    password = admin123
    
    # 必须指定的 查看官方文档
    [rpcinterface:supervisor]
    supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

      通过 supervisord 启动 uwsgi
        supervisord -c bbssupervisor.conf

      通过以上启动了supervisor之后,可使用supervisorctl 管理 supervisor
        supervisorctl -c bbssupervisor.conf
      管理台常用命令:
        status
        start pargram_name
        restart pargram_name
        reload
        quit

    001 简单压力测试:    ab Apache旗下的压力测试工具
      yum install httpd-tools -y
    
    [root@AL~]# ab -n 100000 -c 100 url
    一次一百个请求
    ab -n 1000 -c 100 http://47.101.180.183/
    
    002 安装 supervisor 出错:        
    
    [root@AL bbs]# pip3 install supervisor
    Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
    Collecting supervisor
    Downloading http://mirrors.aliyun.com/pypi/packages/ba/65/92575a8757ed576beaee59251f64a3287bde82bdc03964b89df9e1d29e1b/supervisor-3.3.5.tar.gz (421kB)
    100% |████████████████████████████████| 430kB 19.7MB/s 
    Complete output from command python setup.py egg_info:
    Supervisor requires Python 2.4 or later but does not work on any version of Python 3. You are using version 3.6.5 (default, Mar 16 2019, 12:35:52)
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]. Please install using a supported version.
    
    ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-o5f3s_ep/supervisor/    
    
    解决:
      pip3 install git+https://github.com/Supervisor/supervisor
  • 相关阅读:
    FTP与HTTP上传文件的对比
    【FTP】Wireshark学习FTP流程
    【CSS】div
    浏览器URL中“#” “?” &“”作用
    【EF】vs2017中没有EF模型
    C# List的使用
    C# Dictionary使用
    Git/GitHub的一些问题
    PHP中的break与continue
    css使文字垂直水平居中
  • 原文地址:https://www.cnblogs.com/mdzzbojo/p/10570715.html
Copyright © 2020-2023  润新知