• Python项目实践--环境准备02 Centos下的Python+Flask环境部署


    一、Python环境

    1、安装依赖项

    # yum -y install zlib zlib-devel bzip2-devel openssl-devel ncurses ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libuuid-devel libffi-devel

    2、下载代码

    解压并进入代码目录
    tar zxvf xxx

    3、配置

    在 ./configure 操作前,先进行配置
    export LANG=zh_CN.UTF-8
    export LANGUAGE=zh_CN.UTF-8
     
    然后添加配置
    ./configure --prefix=/usr/python

    4、安装

    make
    make install
     
    重新安装清理
    make clean 
    make distclean

    5、加上软链接

    ln -s /usr/python/bin/python3 /usr/bin/python3
    ln -s /usr/python/bin/pip3 /usr/bin/pip3

    二、虚拟环境

    pip install virtualenv
    pip install virtualenvwrapper
     
    如果没有pip则
    pip3 install virtualenv
    pip3 install virtualenvwrapper
     
    配置环境变量
    用vim打开~/.bashrc
    export WORKON_HOME=~/.virtualenvs
    source /usr/bin/virtualenvwrapper.sh 
    或者
    source /usr/python/bin/virtualenvwrapper.sh
    不同的系统virtualenvwrapper.sh的位置可能会不一样
    注意:我安装的时候由于本机没有python,因此都安装到了Python3下
    virtualenv和virtualenvwrapper的路径为
    /usr/python/bin/virtualenv
    /usr/python/bin/virtualenvwrapper.sh
     
    加上软链接
    ln -s /usr/python/bin/virtualenv /usr/bin/virtualenv
    ln -s /usr/python/bin/virtualenvwrapper.sh /usr/bin/virtualenvwrapper.sh
     
    source ~/.bashrc
    执行.bashrc使文件生效
     
    创建PPCMS的虚拟环境(根据实际需要给虚拟环境命名)
    mkvirtualenv --python=/usr/bin/python3  ppcms

    三、Flask环境

    切换到虚拟环境下
    workon  ppcms
     
    安装Flask
    pip install Flask
    pip install pymysql
    pip install flask-sqlalchemy
    pip install pyjwt  # jwt包
    pip install requests
     
    可合并为
    pip install Flask pymysql flask-sqlalchemy pyjwt requests

    四、服务部署

    安装Gunicorn
    pip install gunicorn

    五、Gunicorn启动脚本

    gunicorn 命令启动
    简单地,gunicorn可以通过gunicorn -w 4 -b 127.0.0.1:4000 run:app启动一个Flask应用。其中,
    -w 4是指预定义的工作进程数为4,
    -b 127.0.0.1:4000指绑定地址和端口
    run是flask的启动python文件,app则是flask应用程序实例
     
    对应的gunicorn.py配置文件
    # gunicorn.py
    
    debug = True
    
    daemon = True
    
    bind = '127.0.0.1:8001'      # 绑定ip和端口号
    # backlog = 512                # 监听队列
    chdir = '/data/ppcms/ppcms'  # gunicorn要切换到的目的工作目录
    timeout = 30      # 超时
    # worker_class = 'gevent' # 使用gevent模式,还可以使用sync 模式,默认的是sync模式
    
    # workers = multiprocessing.cpu_count() * 2 + 1    # 进程数
    # threads = 2 # 指定每个进程开启的线程数
    loglevel = 'debug'   # 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
    access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'    # 设置gunicorn访问日志格式,错误日志无法设置
    
    """
    其每个选项的含义如下:
    h          remote address
    l          '-'
    u          currently '-', may be user name in future releases
    t          date of the request
    r          status line (e.g. ``GET / HTTP/1.1``)
    s          status
    b          response length or '-'
    f          referer
    a          user agent
    T          request time in seconds
    D          request time in microseconds
    L          request time in decimal seconds
    p          process ID
    """
    
    pidfile = "/data/log/ppcms.pid"
    accesslog = "/data/log/gunicorn_ppcms_access.log"      # 访问日志文件
    errorlog = "/data/log/gunicorn_ppcms_error.log"        # 错误日志文件
    View Code
     

    六、nginx配置

    upstream到本地指定端口即可。
    location / {
        proxy_pass http://127.0.0.1:8000 ; # 这里是指向gunicorn host的服务地址
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;
    }
     
  • 相关阅读:
    68
    56
    Django manager 命令笔记
    Django 执行 manage 命令方式
    Django 连接 Mysql (8.0.16) 失败
    Python django 安装 mysqlclient 失败
    H.264 SODB RBSP EBSP的区别
    FFmpeg—— Bitstream Filters 作用
    MySQL 远程连接问题 (Windows Server)
    MySQL 笔记
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/12579671.html
Copyright © 2020-2023  润新知