zoukankan      html  css  js  c++  java
  • 云效(阿里云)流水线 + nginx + uWsgi + flask + python3 基础环境搭建 --备忘

     

    一、开发环境搭建

    1、安装python3


    yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz mkdir /usr/local/python3 tar -xvJf Python-3.6.5.tar.xz cd Python-3.6.5 ./configure --prefix=/usr/local/python3 make && make install ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
    ls

    2、安装虚拟环境venv

    python3:
    已默认安装
    
    python2:
    mac:sudo easy_install virtualenv
    Ubuntu: apt-get install python-virtualenv
    windows:pip install virtualenv

    3、创建虚拟环境

    python3 -m venv venv

    4、在虚拟环境中安装flask

    $ venv/bin/pip install flask
    $ venv/bin/pip install flask-login
    $ venv/bin/pip install flask-openid
    ......
    windows: venvScriptspip install flask venvScriptspip install flask-login venvScriptspip install flask-openid
    ......

    5、创建测试代码 run.py

    #!venv/bin/python3
    from flask import Flask  
    app = Flask(__name__)  
     
    @app.route('/')  
    def hello_world():  
        return 'Hello flask! <br/> -- cosmokey'  
      
    if __name__ == '__main__':  
        app.run() 

    6、修改run.py权限并运行

    chmod a+x run.py
    ./run.py

    7、安装uWsgi

    venv/bin/pip3 install uWsgi

    8、新建uwsgi.ini并配置 

    [uwsgi]
    http=127.0.0.1:8000                  #http协议,可通过地址栏查看
    uwsgi-socket=127.0.0.1:8001          #nginx转发使用地址
    wsgi-file=./run.py
    callable=app
    touch-reload=/home/www/test-cloud    #监控目录,如果发生变化会自动重启

    9、测试运行

    venv/bin/uwsgi --ini uwsgi.ini

    10、将代码签入到code.aliyun.com对应代码库中

    #

    二、ECS服务器

    1、申请ECS服务器

    2、安装python3

    3、使用venv创建虚拟环境(如有需要)ps:此比操作必须早于代码拷贝或不拷贝代码中虚拟环境,不然环境会出现创问题

    mkdir /home/www/testweb
    cd /home/www/testweb
    python3 -m venv venv

    4、从code.aliyun.com获取最新代码

    #可通过云霄自动发布,具体配置请参见下文
    #或手动clone代码

    5、安装uWsgi ps:如使用了虚拟环境,则需要在虚拟环境中安装一次

    venv/bin/pip3 install uWsgi

    6、安装Nginx

    mkdir /home/temp
    cd /home/temp
    wget -c https://nginx.org/download/nginx-1.14.0.tar.gz
    tar -zxvf nginx-1.14.0.tar.gz
    cd nginx-1.14.0
    ./configure
    make && make install
    ls

    7、修改配置文件

    #打开环境配置文件
    vim ~/.bashrc
    
    #结尾添加
    export PATH=$PATH:/usr/local/nginx/sbin/
    
    #保存并关闭后刷新环境
    source ~/.bashrc

    8、修改nginx配置文件,位置:/usr/local/nginx/conf/nginx.conf

    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8001;
        ......
    }

    9、启动uwsgi守护进程

    venv/bin/uwsgi --ini uwsgi.ini -d log.log

    10、测试uwsgi启动情况

    curl http://127.0.0.01:8000

    11、启动nginx

    nginx

    12、查看效果

    13、修改代码后签入查看效果

     

    三、云效(阿里云)-- 基础配置

    1、申请云效并建立项目  && 应用

    2、关联主机--生成命令

    3、关联主机--ECS运行命令

    4、检查是否加入成功

     5、进入应用配置环境

    1)进入项目

    2)配置发布路径、执行用户

    3)关联机器

    6、修改流水线,删除不必要的环节 

    7、运行流水线  ps:该项目配置成 “成员在push后会自动触发流水线”

    8、发布时更新配置信息 && 私密配置

    1)新建config.ini文件

    [baseconfig]
    db = 123
    dbpass = dbpass

    2)添加configparser类库

    venv/bin/pip3 install configparser

    3)修改run.py

    #!venv/bin/python3
    from flask import Flask  
    import configparser
    
    app = Flask(__name__)  
    
    cf=configparser.ConfigParser()
    cf.read("config.ini")
    value=cf.get('baseconfig','db') 
    dbpass=cf.get('baseconfig','dbpass') 
    
    @app.route('/')  
    def hello_world():  
        return 'Hello cloud! <br />' 
                + "db=" + value +'<br />' 
                + "dbpass=" + dbpass +'<br />' 
                +'-- cosmokey'  
      
    if __name__ == '__main__':  
        app.run() 

    4)增加build.py

    #!venv/bin/python3
    print("build.py start")
    
    import configparser
    import os
    
    cf=configparser.ConfigParser()
    cf.read("config.ini")
    
    #读取自定义配置
    export_1 = os.getenv('ENV_DBCONTEXT')
    cf.set('baseconfig','db',export_1)
    cf.write(open("config.ini",'w'))
    
    #读取私密配置
    filename = 'rdc_security_config.properties' 
    pos = []
    
    with open(filename, 'r') as file_to_read:
        while True:
            lines = file_to_read.readline() 
            if not lines:
                break
            pass
            p_tmp, E_tmp = lines.split('=')
            if p_tmp == "dbpass":
                cf.set('baseconfig','dbpass',E_tmp)
            pass
        pass
    
    cf.write(open("config.ini",'w'))
    print("build.py end")

    5)更新test-cloud.release,增加build.command

    build.command = python3 build.py

    6)更改构建环节,增加参数

    7)增加私密配置

    8)本地测试结果

    8)签入 && 查看编译日志

    9)远程测试结果

    参考资料:

    http://www.pythondoc.com/flask-mega-tutorial/helloworld.html#flask 

    https://www.cnblogs.com/FZfangzheng/p/7588944.html

    https://help.aliyun.com/document_detail/51678.html?spm=a2c4g.11186623.6.539.oYZnJ2

  • 相关阅读:
    Java关键字instanceof
    java中equals和==的区别
    Servlet、Filter、Listener总结
    struts2 拦截器配置
    Struts2技术详解
    构建Java并发模型框架
    基于MINA框架快速开发网络应用程序
    Spring的IOC原理
    Spring AOP原理及拦截器
    JAVA三大框架SSH和MVC
  • 原文地址:https://www.cnblogs.com/comsokey/p/rdc_aliyun.html
Copyright © 2011-2022 走看看