一、开发环境搭建

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 基础环境搭建 --备忘的更多相关文章

  1. Ubuntu下nginx+uwsgi+flask的执行环境搭建

    选择web framwork是个非常艰难的事情, 主要分为轻量级和重量级框架. 因为没有搭建站点这样的须要, 所以回避SSH, Django这样的框架, 而选择一个轻量级框架. 自己也比較青睐pyth ...

  2. Centos+nginx+uwsgi+Python多站点环境搭建

    前言 新公司的第一个项目,服务器端打算用python作为restful api.所以需要在Centos上搭建nginx+fastcgi+python的开发环境,但后面网上很多言论都说uwsgi比fas ...

  3. CentOS+nginx+uwsgi+Python 多站点环境搭建

    转载:http://www.cnblogs.com/xiongpq/p/3381069.html 环境: CentOS X64 6.5 nginx 1.5.6 Python 2.7.5 正文: 一:安 ...

  4. 在阿里云服务器上配置CentOS+Nginx+Python+Flask环境

    在阿里云服务器上配置CentOS+Nginx+Python+Flask环境 项目运行环境 阿里云(单核CPU, 1G内存, Ubuntu 14.04 x64 带宽1Mbps), 具体购买和ssh连接阿 ...

  5. 小程序应用的Python服务器部署高配,依然是腾讯云秒杀阿里云!

    上一篇文章,“小程序创业最低配置部署,腾讯云折扣秒杀阿里云!”介绍了小程序项目启动时的最低配置服务器选择,但当项目良好发展时,还是要把服务器配置调整到标准水平,承受住日益增长的流量访问. 随着Pyth ...

  6. 奇点云 x 阿里云 | 联合发布综合体数字化转型与数据创新解决方案

    2019年7月25日下午,在阿里云峰会上海站,奇点云入选阿里云首批联合解决方案合作伙伴,并联合发布了“综合体数字化转型与数据创新解决方案”,共同探索综合体的智能服务. 关于综合体的数字化转型,奇点云联 ...

  7. 一次请求中,经过 nginx+uWSGI+flask应用程序搭建服务的执行过程

    Flask框架有自带的http server,但是缺点非常明显,并发能力,及时响应非常差,只适合开发时自测使用. 在我接触过的项目中,生产环境使用nginx+uWSGI+flask应用程序进行部署服务 ...

  8. nginx+uwsgi+flask 服务器配置

    注:每个机器,软件版本可能不一样,虽然网上有很多类似的帖子,但是我在搭建的时候遇到了不少的坑,此文仅供参考. 请求流程: 1.安装uwsgi uwsgi是一个应用服务器,非静态文件的网络请求就必须通过 ...

  9. Ubuntu下使用Nginx+uWSGI+Flask(初体验)

    Ubuntu 18.04,Nginx 1.14.0, uWSGI 2.0.17.1,Flask, 前言 Windows不支持uWSGI!为了上线自己的项目,只能选择Linux. 自己前面开发了一个Fl ...

随机推荐

  1. 使用QT开发GoogleMap瓦片显示和下载工具(1)——QT开发环境准备

    由于是第一次使用qt,光是QT的安装和调试就费了好大功夫,汗一个,下面记录下过程和遇到的问题的解决方法吧. 下载QT 直接Google搜索“QT”,进入官网http://qt-project.org/ ...

  2. js中关于假值和空数组的总结

    先上x==y运算符的算法细节: 如果x不是正常值(比如抛出一个错误),中断执行. 如果y不是正常值,中断执行. 如果Type(x)与Type(y)相同,执行严格相等运算x === y. 如果x是nul ...

  3. 简单介绍Spring是什么?

    对于面试者回答什么是Spring,这个问题占6分分值,分值点分布:1.Spring的核心是一个轻量级(Lightweight)的容器(Container).2.Spring是实现IoC(Inversi ...

  4. P2375 动物园

    入口 题目的大意就是输出以任意一个字符结尾,既是前缀,又是后缀,且长度不超过总长度的一半的方案书的乘积. 考虑使用kmp 在处理失配数组的同时,处理出来以每个字符结尾的时的,能有多少个前缀和后缀相同的 ...

  5. C#继承的多态性

    C#继承的多态性 当一个类A派生出新类B时,这个基类A在新类B中可以表现为不同的类型:用作它自己的类型.基类型,或者在实现接口时用作接口类型,我们将这种情况称为多态性. C#中的每种类型都是多态性的, ...

  6. Webpack4 学习笔记二 CSS模块转换

    前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 webpack 打包css模块 webpack是js模块打包器, 如果在入口文件引入css文件或其它的less.sass等文件,需要 ...

  7. 使用session处理用户搜索后数据的上一页和下一页跳转

    搜索语句界面: /*单一检索:此处为一个下拉列表的检索*/ if(isset($_POST['submit']) && $_POST['submit'] == '点击搜索') { if ...

  8. Delphi的Edit控件中只能输入数字且只能输入一个小数点

    使用这种功能必须使用 OnKeyPress 事件,该事件是在窗体中获得键盘输入的焦点,并且在用户按键时发生.OnKeyPress 事件中有个重要参数:Key.Key 参数为Char 型,它能够获得用户 ...

  9. 搞定 mybatis generator 三步走

    基于idea 编辑器下maven项目使用mybatis generator快速生成持久层 添加插件:插件网址:http://www.mybatis.org/generator/running/runn ...

  10. Servlet学习笔记07——什么是cookie,session?

    7)cookie的路径问题 a.什么是cookie路径问题? 浏览器在向服务器上的某个地址发送请求时, 会查看cookie的路径是否与该地址匹配,只有 匹配的cookie才会被发送. b.cookie ...