美文网首页Python学习
pyenv+pipenv+flask+gunicorn+ngin

pyenv+pipenv+flask+gunicorn+ngin

作者: 小钟钟同学 | 来源:发表于2019-07-31 11:18 被阅读6次

    因为新的项目是基于flask来搭建的一个后台服务,而当前的环境是基于python3.5的。而最新的这个服务是基于python3.6的。所有有必要的进行新环境的安装和虚拟环境的搭建。相关的 详细的:pyenv+pipenv的使用可以参考:
    https://www.jianshu.com/p/89483a9350fb
    以下的相关的笔记,仅为个人的记录使用。

    本来打算事使用uwsgi部署的,但是再配置的过程中出现无法找到解析器的问题,相关的虚拟环境的解析器的位置我也加上,可是还是不行,所以暂时不考虑

    yum search vim uwsgi-plugin-python
    

    一 :pyenv篇

    1:pyenv的安装:

    $ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
    

    2:pyenv配置:

    [root@localhost ~]# nano ~/.zshrc 
    

    添加对于的内容为:

    export PATH=$HOME/.pyenv/bin:$PATH
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    

    完成后直接进行保存退订,再执行生效的命令

    [root@localhost ~]# source ~/.zshrc
    [root@localhost ~]#
    

    然后再编辑 ~/.bash_profile 文件

    [root@localhost ~]# nano ~/.bash_profile
    

    添加以下的脚本:

    export PYENV_ROOT="/root/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    if command -v pyenv 1>/dev/null 2>&1; then
      eval "$(pyenv init -)"
    fi
    

    3:pyenv安装检查:

    [root@localhost ~]# pyenv doctor
    Cloning /root/.pyenv/plugins/pyenv-doctor/bin/.....
    
    BUILD FAILED (CentOS Linux 7 using python-build 1.2.13)
    
    Problem(s) detected while checking system.
    
    See https://github.com/pyenv/pyenv/wiki/Common-build-problems for known solutions.
    [root@localhost ~]# 
    

    4:pyenv版本:

    [root@localhost ~]#  pyenv -v
    pyenv 1.2.13
    [root@localhost ~]# 
    

    二:pipenv篇

    1:pipenv安装

    有必要的情况下升级一下当前pip
    pip install --upgrade pip
    安装:
    pip install pipenv
    

    2:pipenv配置

    为项目创建虚拟环境
    说明:默认的情况,虚拟环境创建目录是在:~/.local/share/virtualenvs
    如果是需要指定再每个项目根目录下创建和保持虚拟环境目录(.venv)的话,需要再 .bashrc 或 .bash_profile 中配置配置 相关的信息:

    export PIPENV_VENV_IN_PROJECT =1
    

    然后执行下 source~/.bashrc或者 source~/.bash_profile即可生效!

    3:pipenv 安装虚拟环境

    设置当前的项目使用的py版本
    # pyenv local 3.6.6 
    ce 到你的项目下
    pipenv --python 3.6.6 创建基于3.6.6虚拟环境
    

    4:激活 pipenv

    ce 到你的项目下
    pipenv shell
    
    运行 pipenv下运行项目
    
    pipenv run flask starter.py 
    
    

    三:pipenv 安装 gunicorn

    pipenv install  gunicorn
    

    四:上传项目(最好事包含了Pipfile,从git上传)

    pipenv install  gunicorn
    

    四:使用gunicorn 运行 flask项目

    PS:(starter: 是应用实例的入口py文件,app:是应用实例对象 5003  是配置的端口,)
    pipenv run gunicorn -w 4 -b 0.0.0.0:5003 starter:app
    

    五:使用nginx代理转发到这个5003 端口上

    upstream xxxxxxx_api {
        server 127.0.0.1:5003 weight=1 max_fails=0 fail_timeout=12s;
    }
    
    
    server {
        listen      5002;
        charset     utf-8;
        root        /data/www/xxx-xx---xxx;
        server_name xxxxxxx;
        
    
        location /favicon.ico {  
            log_not_found off;
            access_log off;
        } 
        
    
        
        location / {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Credentials' 'true';
            index  login.html Index.html index.html;
        }
        
        location ~* ^/(v1|cms|api)/ {
            proxy_pass    http://lin_cms_flask_36_api;
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Credentials' 'true';
            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_connect_timeout      300; #nginx跟后端服务器连接超时时间(代理连接超时)
            proxy_send_timeout         300; #后端服务器数据回传时间(代理发送超时)
            proxy_read_timeout         300; #连接成功后,后端服务器响应时间(代理接收超时)
        }
        
        access_log  off;
    }
    

    六:使用supervisor 管理进程

    [program:xxxx_5000]
    command=pipenv run gunicorn -w 4 -b 0.0.0.0:5003 starter:app    ; supervisord将要执行的运行python服务的命令
    directory=/data/www/xxxxxxx
    stdout_logfile=/data/logs/supervisord/xxxxxxx_supervisord.log    ; supervisord当前这个test服务运行产生的日志存储路径,方便我们查看运行情况
    socket-timeout=3
    autostart=true
    autorestart=true
    redirect_stderr=true
    stopsignal=QUIT
    
    

    相关文章

      网友评论

        本文标题:pyenv+pipenv+flask+gunicorn+ngin

        本文链接:https://www.haomeiwen.com/subject/doaarctx.html