云效(阿里云)流水线 + 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:
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 基础环境搭建 --备忘的更多相关文章
- Ubuntu下nginx+uwsgi+flask的执行环境搭建
选择web framwork是个非常艰难的事情, 主要分为轻量级和重量级框架. 因为没有搭建站点这样的须要, 所以回避SSH, Django这样的框架, 而选择一个轻量级框架. 自己也比較青睐pyth ...
- Centos+nginx+uwsgi+Python多站点环境搭建
前言 新公司的第一个项目,服务器端打算用python作为restful api.所以需要在Centos上搭建nginx+fastcgi+python的开发环境,但后面网上很多言论都说uwsgi比fas ...
- CentOS+nginx+uwsgi+Python 多站点环境搭建
转载:http://www.cnblogs.com/xiongpq/p/3381069.html 环境: CentOS X64 6.5 nginx 1.5.6 Python 2.7.5 正文: 一:安 ...
- 在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境 项目运行环境 阿里云(单核CPU, 1G内存, Ubuntu 14.04 x64 带宽1Mbps), 具体购买和ssh连接阿 ...
- 小程序应用的Python服务器部署高配,依然是腾讯云秒杀阿里云!
上一篇文章,“小程序创业最低配置部署,腾讯云折扣秒杀阿里云!”介绍了小程序项目启动时的最低配置服务器选择,但当项目良好发展时,还是要把服务器配置调整到标准水平,承受住日益增长的流量访问. 随着Pyth ...
- 奇点云 x 阿里云 | 联合发布综合体数字化转型与数据创新解决方案
2019年7月25日下午,在阿里云峰会上海站,奇点云入选阿里云首批联合解决方案合作伙伴,并联合发布了“综合体数字化转型与数据创新解决方案”,共同探索综合体的智能服务. 关于综合体的数字化转型,奇点云联 ...
- 一次请求中,经过 nginx+uWSGI+flask应用程序搭建服务的执行过程
Flask框架有自带的http server,但是缺点非常明显,并发能力,及时响应非常差,只适合开发时自测使用. 在我接触过的项目中,生产环境使用nginx+uWSGI+flask应用程序进行部署服务 ...
- nginx+uwsgi+flask 服务器配置
注:每个机器,软件版本可能不一样,虽然网上有很多类似的帖子,但是我在搭建的时候遇到了不少的坑,此文仅供参考. 请求流程: 1.安装uwsgi uwsgi是一个应用服务器,非静态文件的网络请求就必须通过 ...
- Ubuntu下使用Nginx+uWSGI+Flask(初体验)
Ubuntu 18.04,Nginx 1.14.0, uWSGI 2.0.17.1,Flask, 前言 Windows不支持uWSGI!为了上线自己的项目,只能选择Linux. 自己前面开发了一个Fl ...
随机推荐
- 安装gcc,g++
安装gcc.g++ sudo apt-get install make gcc g++ 查看g++版本 g++ --version
- zen-Coding在Notepad++中的使用
zen-Coding是一款快速编写HTML,CSS(或其他格式化语言)代码的编辑器插件,这个插件可以用缩写方式完成大量重复的编码工作,是web前端从业者的利器. zen-Coding插件支持多种编辑器 ...
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2017/07/12/sc11-docker/ 本文出自方志朋的博客 一.docker简介 ...
- iOS圆角view的Swift实现(利用Core Graphics绘制)
iOS圆角view的Swift实现(利用Core Graphics绘制) 因为app的列表用用到了圆形图片的头像,所以去探究并思考了一下这个问题.首先这个问题有两个方向的解决方案: 把图片弄成圆形的. ...
- linux定时任务及练习
第1章 定时任务 1.1 什么是定时任务 相当于闹钟每天叫你起床 设定一个时间去做某件事 1.2 系统定时任务 [root@zeq ~]# ll -d /etc/cron* drwxr-xr-x. 2 ...
- 使用poi将excel转换为html,适用本身有导出excel的而现在需要添加网页打印的功能
PoiExcelToHtmlUtil.java import org.apache.poi.POIXMLDocumentPart; import org.apache.poi.hssf.usermod ...
- php-5.6.26源代码 - opcode执行
文件 php-5.6.26/Zend/zend_vm_execute.h ZEND_API void execute_ex(zend_execute_data *execute_data TSRMLS ...
- 2.1 <script>元素【JavaScript高级程序设计第三版】
向 HTML 页面中插入 JavaScript 的主要方法,就是使用<script>元素.这个元素由 Netscape 创造并在 Netscape Navigator 2 中首先实现.后来 ...
- 关于ZYNQ-700是否支持大容量SD卡汇报
关于ZYNQ-700是否支持大容量SD卡 不支持. 下午问了客服的FAE给的答案是不清楚,我自己调研了一下为什么. 调查结果: 1. 大容量的SD卡为什么不支持? SD2.0规范中(SDHC)硬件支持 ...
- 笔记-scrapy-item
笔记-scrapy-item 1.总述 爬虫数据保存用,一般情况下无需过多处理,引用并使用Field方法即可. 2.使用 常规使用: import scrapy class Product(scrap ...