雲效(阿裏雲)流水線 + 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/pip3ls
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 基礎環境搭建 --備忘