抱歉,未找到你想要查询的结果
全部开发者教程

Python 进阶应用教程

Python 进阶应用教程
01 Python 的对象和类 02 Python 类属性和实例属性 03 Python类的构造方法、析构方法、实例方法 04 Python 类的私有属性和私有方法 05 Python 类的继承和多继承 06 Python 类实战 07 Python 中的迭代器实现原理 08 Python 中的迭代器趣味实践 09 Python 中的生成器实现原理 10 Python 中的生成器趣味实践 11 Python 中的错误和异常 12 Python 中的异常处理 13 Python 中的模块 14 Python 标准库之 os 模块 15 Python 标准库之 sys 模块 16 Python 标准库之 math 模块 17 Python 标准库之 random 模块 18 Python 标准库之 Json 模块 19 Python 标准库 datetime 模块 20 Python 中的常用第三方模块 21 Python 中的命名空间 22 Python 中的作用域 23 Python 中的文件 IO 操作 24 Python 基础实战 25 Python 内置函数 26 Python 中使用正则表达式 27 使用 Python 操作 MySQL 数据库 28 使用 Python 操作 Mongo 数据库 29 使用 Python 操作 Redis 数据库 30 使用 Python 发送一封邮件 31 threading 之 Thread 的使用 32 threading 之 Lock 的基本使用 33 Python 生产者消费者模型 34 Python 的内存管理与垃圾回收 35 Python 领域运用:网络爬虫 36 Python 领域运用:Web 开发 37 Python 领域运用:自动化运维 38 Python 领域运用:自动化测试
  • 前端开发

    JavaScript

    JavaScript 入门教程

    本教程带你从初级到高级全面掌握 Javascript 的使用方法

    TypeScript 入门教程

    这是一个很好的简单课程,只需2小时你就可以学习TypeScript基础知识。

    Vue 入门教程

    本教程带您从零开始学习 Vue 框架的使用,让您轻松应对 Vue 项目的开发。

    Ajax 入门教程

    本教程涵盖Ajax的实现原理,及Ajax封装,最后是框架实现方法。

    ES6-10 入门教程

    对比 ES5 进行学习 ES6+,理解 ES6+ 语法背后的思想

    Yarn 入门教程

    Yarn得相关基础知识和高级进阶

    ECharts 入门教程

    从零开始学习 ECharts ,掌握 ECharts 核心内容

    HTML & CSS

    CSS3 入门教程

    本课程从盒模型、文字、颜色、过渡、动画、布局、伪类等方面介绍 CSS3 的使用。

    雪碧图入门教程

    本文详细介绍了雪碧图的由来历史以及各种使用方式

    移动端布局教程

    由于移动互联网的兴起,移动端项目占据了很大一部分比重,本章将详细讲解几种常见布局

    Html5 入门教程

    最新一代的HTML标准,增加了许多实用的特性

    Sass 入门教程

    前端项目中 Sass 的快速入门教程

    HTML 入门教程

    从零讲解 HTML,掌握基础 HTML 知识内容

    canvas 入门教程

    本教程带你从初级到高级全面掌握canvas的使用方法

    uni-app 入门教程

    从零开始学习 uni-app 框架,轻松上手应用开发

  • 服务端相关

    服务器

    Nginx 入门教程

    本教程使您掌握 Nginx 安装、配置、核心模块的详解、实际使用的能力。

    HTTP 入门教程

    从协议原理开始到 Web 服务器以及 Web 安全一网打尽

    Docker 入门教程

    从 Docker 的基础概念开始,从实际问题入手带你学习 Docker

    Shell 入门教程

    本教程由浅入深,系统性的讲解Linux Shell脚本编程。

    Linux 入门教程

    本教程从安装 Linux 开始,囊括 Linux 基础命令操作以及进阶系统管理

    开发工具

    Gradle 入门教程

    本教程使您掌握实际使用gradle进行项目构建、测试、打包、发布的能力。

    Vim 编辑器教程

    课程主要讲解Vim的安装配置,四种模式、基本操作,以及包管理工具和寄存器等内容。

    RESTful 规范教程

    本教程从什么是 REST 开始带你领略 Web 开发中无处不在的规范

    Dreamweaver 教程

    DW 是一款同时具有网页制作和网页管理功能的网站开发工具,可以快速进行网站建设

    Markdown 入门教程

    本课程涵盖 Markdown 的基本及扩展语法。

    Maven 入门教程

    从最基础的安装 Maven 开始到 Maven 在开发中的实际应用

    Eclipse 编辑器教程

    本教程从Eclipse安装开始带你轻松掌握Eclipse常用开发技巧

    GitHub 入门教程

    本教程带你轻松掌握最实用的 GitHub 知识

    Android Studio 编辑器教程

    Android Studio 编程技巧一网打尽

    PyCharm 编辑器教程

    工作经常用到的 PyCharm 编辑器使用技巧一网打尽

    Sublime Text 使用教程

    花里胡哨展示sublime编辑器的各种功能

    Postman 教程

    Postman 由Google 开发用来做接口请求测试,前后端开发人员都可以使用

    Git入门教程

    从入门到精通。

    热门服务端语言

    C 语言入门教程

    本教程从语法基础、进阶知识等各方面详解 C 语言。

    Go 入门教程

    本教程从 Go 语言的基本语法掌握到进阶编程实践

    Kotlin 教程

    从 Kotlin 的基础语法到高级特性一网打尽

    Ruby 入门教程

    本教程从 Ruby 的各种对象开始学习到 Ruby 的实际使用

    ThinkPHP 入门教程

    本教程主要讲解 ThinkPHP 框架如何上手开发应用

  • Java

    基础应用

    Java 入门教程

    深入浅出讲解 Java 语言基础知识,带你入门 Java 语言

    Android 入门教程

    为你解析最实用的 Android 技术,让你平滑上手,顺利进阶,为开发保驾护航

    算法入门教程

    分析讲解常见算法的思想及使用

    数据结构入门教程

    通俗易懂的带你了解 Java 数据结构

    Lambda 表达式教程

    本教程展现了Lambda表达式的基础语法以及在程序中的应用

    Java 并发原理入门教程

    本教程为Java并发原理入门教程,在Java程序开发中占据着举足轻重的地位

    设计模式入门教程

    带你分析最常见的九个设计模式

    Java并发工具

    本课程简洁明了展示最基本的并发工具类相关概念及应用方法。

    JVM 入门教程

    JVM 入门教程,对JVM结构进行分模块讲解,简单易懂。

    RabbitMQ 入门教程

    超系统的RabbitMQ基础知识课程,你还在等什么?

    网络编程入门教程

    Java 网络编程核心要点详解

    后端通用面试教程

    带你系统梳理后端高频面试题,轻松丰富你的校招&社招阶段

    框架应用

    Spring Boot 入门教程

    循序渐进讲解 Spring Boot 企业级应用开发

    Spring 入门教程

    通俗易懂 渐进式讲解 Spring 企业级开发应用

    Hibernate 入门教程

    由浅入深讲解 Hibernate 企业级 JDBC 应用框架

    MyBatis 入门教程

    本教程整理出"百分之二十"的知识,帮你办到"百分之八十"事情

    Spring MVC 入门教程

    通俗易懂讲解 Spring MVC 框架应用

    Swagger 入门教程

    本课程以图文并茂的方式带你学习 Swagger 核心知识和应用剖析

    Zookeeper 入门教程

    由浅入深的 学习 ZooKeeper 的基本使用以及高级使用

    Netty 教程

    由浅入深的讲解 Netty 的核心知识体系,快速上手使用和理解 Netty

    Spring Security

    本课程涵盖了 Spring Security 框架的基本原理和集成方法

    微服务

    Spring Cloud Hystrix

    系统介绍 Hystrix 支持特性与实际应用场景实战

  • Python

    基础应用

    Python 入门语法教程

    本教程带你从 Python 的基础语法开始学习 Python。

    Python 原生爬虫教程

    本教程从爬虫基础知识到进阶技巧到实际应用。

    Python 进阶应用教程

    本教程涵盖 Python 的面向对象、标准库解析、异常处理直至最后的领域应用

    Python 算法入门教程

    用 Python 代码实现常用算法并汲取算法核心思想。

    进阶方向应用

    Django 入门教程

    从 Web 基础到 Django 框架的实际开发应用

    Flask 框架教程

    Flask 框架快速入门实现一个 TodoList 功能

    NumPy 入门教程

    本教程从基础的数据类型开始到 NumPy 的高级应用一网打尽

    Scrapy 入门教程

    从爬虫基础开始到使用 Scrapy 框架抓取各大网站数据

    TensorFlow 入门教程

    通过本教程对 TensorFlow 框架快速入门

    Python 办公自动化教程

    本教程带你使用Python快速操作Excel、Word、PPT,处理各种文件

    Pandas 入门教程

    本教程从基础的数据类型开始到 Pandas 的高级应用一-网打尽

  • 数据库

    MySQL

    MySQL 入门教程

    本教程主要讲解 MySQL 增删改查等基础操作

    SQL 入门教程

    本教程讲解使用 SQL 访问和处理数据系统中的数据的方法。

    MySQL 进阶教程

    那些你还不理解的 MySQL 高阶特性一网打尽

首页 慕课教程 Python 进阶应用教程 37 Python 领域运用:自动化运维

Python 领域运用:自动化运维

1. 自动化运维简介

1.1 什么是运维

运维是指对硬件和软件进行运营和维护,保障业务能够长期稳定运行。运维,通常属于技术部门,运维、研发与测试同为互联网产品技术支撑的 3 大部门。运维的职责包括:

  • 保障业务长期稳定运行,例如,保障网站服务器 7 x 24 小时不间断的运行
  • 负责服务器的网络设置、网络管理与系统性能优化
  • 保障数据安全可靠,如用户名密码、游戏数据、交易数据等
  • 对软件和硬件进行日常监控与维护,随时解决报警故障
  • 业务程序更新

1.2 自动化运维

系统管理员日常会进行大量的重复性操作,例如安装软件、修改配置文件、创建用户、批量执行命令等等。如果主机数量庞大,单靠人工维护实在让人难以忍受。考虑如下需求:

需求 1: 某大型企业的生产网络里有 100 台思科交换机,最近公司更换了 TACACS (终端访问控制器访问控制系统) 服务器,需要在这 100 台交换机上进行重新配置。

需求 2: 公司的网络安全部门提醒这 100 台思科交换机现有的 IOS 版本有很多安全漏洞,需要尽快升级它们的 IOS 版本。

有两种方式实现这样的需求:

  • 手工的方式,使用 ssh 依次登录到这 100 台思科交换机上,输入命令进行配置和升级系统。
  • 自动的方式,编写 Python 脚本,用程序自动登录到 100 台思科交换机上并执行相应的命令。在登录交换机的过程中,脚本会自动的输入用户名和密码。

自动化运维就是把那些传统上需要手工操作进行维护自动化。在上面的例子中,编写程序对 100 台交换机进行配置和升级,就是典型的自动化运维。在计算机专业的招聘网站,能搜索到大量的运维岗位招聘,如下所示:

图片描述

Shell 脚本是实现 Linux 系统自动管理以及自动化运维所必备的工具,除了 Shell,能够用于 Linux 运维的脚本语言还有 Python。

现在越来越多的公司要求运维人员会 Python 自动化开发,在计算机专业的招聘网站中,查询 baidu 发布的运维的招聘要求:

工作职责
- 负责百度运维基础设施(监控 部署 名字服务 容器托管)的稳定高效运行
任职资格
- 熟练掌握 Python/Go/Perl/Shell 至少一门语言

从招聘可以看到,Python 成了运维人员必备的技能,每一个运维人员在熟悉了 Shell 之后,都应该再学习 Python 语言。

2. 运维的基础知识

运维人员需要掌握掌握互联网常用的中间件维护、管理,例如 nginx、docker、mysql、redis 和 mongodb等。

2.1 nginx 简介

Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由于它的内存占用少、启动快、高并发能力强,在互联网项目中广泛应用。中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx 服务器的反向代理服务是其最常用的重要功能,当下流行的技术架构如下所示:

图片描述

  • 整个系统由两部分构成:
    • nginx 反向代理服务器
    • 多个应用服务器
  • 客户端将请求发送到 nginx 反向代理服务器
  • ngnix 根据请求的参数和配置将请求转发给应用服务器
  • nginx 从应用服务器获取数据后,在返回给客户端

通常 ngnix 作为整个应用的入口,运维人员需要熟练掌握 nginx 的配置和优化。

2.2 docker 简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到其它 Linux 系统上。

把一个应用部署到生产环境中,需要进行各种安装和配置:

  • 安装各种依赖包
  • 安装相关的应用程序并进行配置,例如 nginx、mysql 等

配置非常繁琐、容易出错,使用 docker 可以有效的解决问题:

  • 开发者可以打包他们的应用以及依赖包到一个可移植的镜像
  • 在生产环境下拉取一份镜像(已经配置好各种依赖包),直接运行镜像

Docker 对于显著的降低了应用部署的工作量,是运维人员必须掌握的技术。

2.3 mysql 简介

mysql 是一个关系型数据库管理系统。目前 mysql 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 mysql 作为网站数据库。

mysql 的重要特性包括:

  • 使用 C 和 C++ 编写,源代码的可移植,支持Linux、BSD 和 Windows 等多种操作系统。
  • 为多种编程语言提供了 API。这些编程语言包括C、C++、Java、PHP、Python等。
  • 支持多线程,充分利用CPU资源,支持多用户。
  • 优化的SQL查询算法,有效地提高查询速度。
  • 提供多语言支持,常见的编码如中文的GB

运维人员需要熟练掌握管理、检查、优化 mysql 数据库操作的管理工具。

2.4 redis 简介

redis 是一个高性能的 key-value 数据库。redis 是非关系型数据库,将数据存储在内存中,访问的速度很快,能够显著的提高运行效率;与之相比,mysql 是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,访问速度较慢。

redis 的配置文件位于 redis 安装目录下,文件名为 redis.conf,通过修改 redis.conf 文件或使用 CONFIG set 命令来修改配置。

redis 提供了大量的配置选项,例如:

  • maxmemory bytes
    • 指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key
  • vm-enabled no
    • 指定是否启用虚拟内存机制,VM 机制将访问量较少的页即冷数据 swap 到磁盘上,将访问多的页面由磁盘 swap 到内存中

3. 为什么用 Python 进行运维

现阶段,掌握 Python 开发语言已经成为高级运维工程师的必备技能,其原因如下:

3.1 复杂的系统管理

在大型的互联网公司中,网络包含有成千上万台服务器,shell 脚本语言适合简单的系统管理工作,遇到复杂的自动化任务需要用专门的开发语言。Python 由于语法简单、拥有强大的第三方库,是完成复杂自动化任务的首选编程语言。

3.2 方便定制需求

存在有大量的自动化运维工具,但是现有的运维软件如 puppet、saltstack、zabbix 和 nagio 多为通用的软件,不可能完全适用公司的所有需求,当需要做定制、做二次开发的时候,如果掌握 Python 编程语言即可轻松完成需求,实现一个定制的运维工具:

  • 利用 Python 的第三方库,可以满足绝大部分自动化运维的需求
  • 利用 Python 强大的 WEB 框架,能够快速开发出一个运维管理的 WEB 界面,

3.3 帮助调试优化程序

在开发环境中,可能没有充分测试程序的性能;而在生产环境中,一个业务上线了,通过监控发现: CPU 使用过高、内存占用过大。

如果运维人员完全不懂开发,只能定位到进程级别,即找到占用资源过多的进程,然后将问题交给开发人员处理。如果运维人员掌握一门编程语言、懂开发,能够深入到业务代码,帮助调试、优化开发人开发的程序。

4. 常用的自动化运维模块

Python 的第三方模块提供了自动化运维所需的功能,如:监控系统资源、网络配置等,常用的模块如下:

  1. psutil

psutil 是一个跨平台库能够实现获取系统运行的进程和系统利用率(内存,CPU,磁盘,网络等),主要用于系统监控,分析和系统资源及进程的管理。

  1. dnspython

dnspython 是一个 DNS 工具包,可以用于查询、传输并动态更新 DNS 区域信息,在系统管理方面,可以利用查询功能来实现 DNS 服务监控以及解析结果的校验。

  1. smtplib

smtplib 是一个发送电子邮件的工具包,它对 smtp 协议进行了简单的封装。当监控系统发现问题时,通过调用 smtplib 发送报警邮件。

  1. IPy

IPy 提供了对地址进行处理的功能,主要提供了包括网段、网络掩码、广播地址、子网数、IP类型的处理等功能。

  1. pycurl

cURL 是一个利用 URL 语法在命令行下工作的文件传输工具,cURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。

pycurl 是一个用 C 语言写的 libcurl Python实现,可以理解为 linux 下 curl 命令功能的 Python 封装。

  1. scapy

scapy 是一个由 Python 编写的数据包处理程序,它能够对数据包进行伪造或解包,提供发送数据包、包嗅探、应答和反馈等功能,目前很多优秀的网络扫描攻击工具都使用了这个模块。

  1. ansible

ansible 是一个综合的自动化运维工具,基于 Python 开发,集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible 提供了二次开发的接口,可以编写 python 脚本请求 ansible 的 接口,开发自己的运维工具。

  1. saltstack

saltstack 是一种基于 C/S 架构的集中化管理平台,管理端称为 Master,客户端称为 Minion。saltstack 具备配置管理、远程执行、监控等功能,saltstack 本身是基于 Python 语言开发实现,结合了轻量级的消息队列软件 ZeroMQ 与 Python 第三方模块构建。

通过部署 SaltStack 环境,运维人员可以在成千上万台服务器上做到批量执行命令,根据不同的业务特性进行配置集中化管理、分发文件、采集系统数据及软件包的安装与管理等。

saltstack 提供了二次开发的接口,可以编写 python 脚本请求 saltstack 的 接口,开发自己的运维工具。

  • 划线
  • 写笔记
  • 复制

0/1000

· 最近更新于 请填写更新时间
使用手机查看
最近更新
向你推荐
更多
索引目录

AltStyle によって変換されたページ (->オリジナル) /