【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/; 
    }

    ......
}
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
当涉及到Python自动化运维学习路线时,以下是一些关键的主题和技能,你可以按照这个路线学习: 1. Python基础知识:首先,你需要掌握Python的基本语法、数据类型、流程控制和函数等基础知识。这将为你后续的学习打下坚实的基础。 2. Linux基础知识:自动化运维通常在Linux环境下进行,因此你需要了解Linux的基本命令、文件系统、权限管理等知识。 3. 网络基础知识:了解网络协议、IP地址、子网掩码、路由等基本概念,以便于理解和操作网络设备。 4. 自动化工具:学习使用一些常见的自动化工具,如Ansible、SaltStack、Puppet等。这些工具可以帮助你自动化配置和管理大量的服务器。 5. Web开发:学习使用Python的Web框架,如Django或Flask,以便于构建自己的Web应用程序或API。 6. 数据库:了解数据库的基本概念和SQL语言,学习使用Python操作数据库,如MySQL或MongoDB。 7. 监控和日志管理:学习使用监控工具,如Zabbix或Nagios,以及日志管理工具,如ELK Stack(Elasticsearch、Logstash和Kibana)。 8. 容器化技术:了解Docker和Kubernetes等容器化技术,学习如何使用它们来部署和管理应用程序。 9. 自动化测试:学习使用Python编写自动化测试脚本,如使用Selenium进行Web应用程序的自动化测试。 10. 安全和故障恢复:了解网络安全的基本原理和常见的攻击方式,学习如何进行安全审计和故障恢复。 这只是一个大致的学习路线,你可以根据自己的兴趣和需求进行调整和扩展。记得不断实践和练习,通过实际项目来巩固所学知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值