1. 程式人生 > >雲效(阿裏雲)流水線 + nginx + uWsgi + flask + python3 基礎環境搭建 --備忘

雲效(阿裏雲)流水線 + nginx + uWsgi + flask + python3 基礎環境搭建 --備忘

3.6 分享圖片 fff urn art conf con write sqlite

一、開發環境搭建

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: venv\Scripts\pip install flask venv\Scripts\pip install flask-login venv\Scripts\pip 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

雲效(阿裏雲)流水線 + nginx + uWsgi + flask + python3 基礎環境搭建 --備忘