一、开发环境搭建
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