【Python系列-01学习路线-04自动化运维】Flask云效流水线生产环境自动部署

Python的安装与使用

参见无咎的另外一篇文章:Linux生产环境安装Python

Supervisor安装与使用

参见无咎的另外一篇文章:Supervisor使用详解

项目流程配置

以下所出现的xxx为项目名,不再额外申明

目录创建

mkdir -p /opt/pysite/xxx
mkdir -p /opt/pysite/env/xxx
mkdir -p /opt/pysite/sock
mkdir -p /opt/packages

项目uwsgi配置

文件名为xxx_uwsgi.ini
文件放在代码根目录下

[uwsgi]
#http=127.0.0.1:10001  #如果是http,通过proxy_pass http链接
socket=127.0.0.1:10001 #如果是socket,通过nginx配置uwsgi_pass socket链接
wsgi-file=/opt/pysite/xxx/app.py
callable=app
touch-reload=/opt/pysite/xxx/
#最大请求数,最多请求5000次就重启进程,以防止内存泄漏
max-requests=5000
#请求超时时间,超过60秒关闭请求
harakiri=60
#进程的数量
processes=1
#线程数
threads = 2
#记录pid的文件
pidfile=/opt/pysite/sock/xxx.pid
buffer-size = 32768
#日志最大50M
log-maxsize=50000000
#配置虚拟环境路径,如果是在虚拟环境下启动,这个一定要配,不配会有些包找不到,应用会报错。可以在uwsgi.log文件中看报错信息
virtualenv =/opt/pysite/env/xxx
#uwsgi日志文件,如果是通过supervisor托管,daemonize配置需要屏蔽
#daemonize=/home/flask_web/uwsgi.log
#项目更新后,自动加载
python-autoreload=1
#状态检测地址
#stats = 127.0.0.1:9191

supervisord子进程配置文件

给需要管理的子进程(程序)编写一个配置文件,放在/etc/supervisor.d/目录下,以.ini作为扩展名(每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起)。如任意定义一个和脚本相关的项目名称的选项组:

文件名为/etc/supervisord.d/xxx.ini

# supervisor的程序名字
[program:xxx]
# supervisor执行的命令
command=uwsgi --ini /opt/pysite/xxx/xxx_uwsgi.ini
# 项目的目录
directory = /opt/pysite/xxx
# 开始的时候等待多少秒
startsecs=10
# 停止的时候等待多少秒
stopwaitsecs=5
# 自动开始
autostart=true
# 程序挂了后自动重启
autorestart=true
# 输出的log文件
stdout_logfile=/opt/logs/xxx/supervisord.log
# 输出的错误文件
stderr_logfile=/opt/logs/xxx/supervisord.err
stopasgroup=true
killasgroup=true

云效流水线配置

Python 构建上传到仓库

Python 构建

无命令,默认即可

构建物上传
  1. 制品名称:Artifacts_${PIPELINE_ID}
  2. 打包路径:.

注意打包路径是【.】,不是空

主机部署

制品

选择前一步骤所设置的制品名称即可

部署配置
  1. 下载路径:/opt/packages/xxx.tgz
  2. 部署脚本
supervisorctl stop xxx
rm -rf /opt/pysite/xxx/*
tar xf /opt/packages/xxx.tgz -o -C /opt/pysite/xxx/;

#首次部署请先打开,运行一次后注释即可
# cd /opt/pysite/env/xxx
# cd /opt/pysite/env
# virtualenv --python=/usr/bin/python3 xxx
# cd xxx/bin
# source activate

cd /opt/pysite/xxx
#首次部署请先打开,运行一次后注释即可
# pip install -r requirements.txt
# deactivate

supervisorctl start xxx

Supervisor命令说明

常用命令

supervisorctl status        //查看所有进程的状态
supervisorctl stop xxx      //停止xxx应用
supervisorctl start xxx     //启动xxx应用
supervisorctl restart xxx   //重启xxx应用
supervisorctl update        //配置文件修改后使用该命令加载新的配置
supervisorctl reload        //重新启动配置中的所有程序

Nginx配置

server {
    listen       80; # 对外的80端口
    server_name  xxxx;  # 服务器的地址 
    
    #access_log  /var/log/nginx/host.access.log  main; 
    ......
    
    location / {
          include uwsgi_params;
          uwsgi_pass 127.0.0.1:10001;
    }
   
    location /static/ {
      alias /opt/pysite/xxx/; 
    }

    ......
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值