自动化运维工具Ansible之LNMP实践环境部署
时间:2022-07-26
本文章向大家介绍自动化运维工具Ansible之LNMP实践环境部署,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Ansible-实战指南-LNMP环境部署,并使用zabbix监控
主机规划
系统初始化:必要的系统初始化
基础组件包括:zabbix监控,mariadb(用于存放zabbix监控信息)
业务组件包括:MySQL、memcached、nginx、PHP、haproxy、keepalived
添加用户账号
说明:
1、 运维人员使用的登录账号;
2、 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放;
3、 该用户也被 ansible 使用,因为几乎所有的生产环境都是禁止 root 远程登录的(因此该 yun 用户也进行了 sudo 提权)。
1 # 使用一个专门的用户,避免直接使用root用户
2 # 添加用户、指定家目录并指定用户密码
3 # sudo提权
4 # 让其它普通用户可以进入该目录查看信息
5 useradd -u 1050 -d /app yun && echo '123456' | /usr/bin/passwd --stdin yun
6 echo "yun ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
7 chmod 755 /app/
备注:记得在管理机 172.16.1.180 上实现对其他机器的免密登录。
Ansible 配置清单Inventory
1 [yun@ansi-manager ansible_info]$ cat hosts_key
2 # 业务组件分组
3 [manageservers]
4 172.16.1.180:22
5
6 [keepalivedserver]
7 172.16.1.181
8 172.16.1.182
9
10 [proxyservers]
11 172.16.1.18[1:2]:22
12
13 [webservers]
14 172.16.1.183 ansible_ssh_port=22
15 172.16.1.184 ansible_ssh_port=22
16 172.16.1.185 ansible_ssh_port=22
17
18 [memservers]
19 172.16.1.185
20
21 [dbservers]
22 172.16.1.183
23 172.16.1.184
24 172.16.1.185
25
26 [dbservers_master]
27 172.16.1.183
28
29 [dbservers_slave]
30 172.16.1.184
31 172.16.1.185
32
33
34 # 基础组件分组
35 ## 数据库组件分组
36 [zabbixdbserver]
37 172.16.1.180
38
39 ## 基础业务组件分组
40 [zabbixserver]
41 172.16.1.180
系统架构
实战项目GitHub地址
该项目已经放在了GitHub上,地址如下:
https://github.com/zhanglianghhh/ansible-example-lnmp
如需要请自行访问或下载。
项目任务分解
获取需求并拿到机器的时候,这时需要我们做如下分析:
1、主机规划:每台主机用于部署什么模块【本文第一节实际已经规划好了】
2、普通用户创建与提权:如果机器是公司统一初始化的,那么可以不创建普通用户,只需提权即可。
3、ansible管理机到其他机器的免密登录。
4、具体任务分解:包括机器必要的初始化、基础组件部署与业务组件部署。如果公司对机器做了统一的初始化,那么视情况而定。
## 系统初始化
1、基础镜像源与epel镜像源
2、必要的包安装
3、指定环境变量,如:为history命令添加时间信息;操作命令记录到系统日志
4、用户名、主机添加背景色,用于生产环境,这样可以减少人为的误操作
5、别名配置,如:alias grep='grep --color=auto'
6、内核参数修改,生产中视情况而定
7、创建web站点用户 www。
8、创建必要的目录,如:软件包存放目录,后期运维脚本存放目录
## 基础组件部署
1、yum 安装mariadb,用于存放监控信息
2、yum 安装zabbix server
3、yum 安装zabbix agent
## 业务组件部署
1、MySQL 数据库部署
2、MySQL 主从实现
3、memcached 部署
4、nginx 部署
5、PHP 部署
6、nginx、PHP整合,nginx、PHP、MySQL整合,nginx、PHP、memcached整合
7、haproxy 部署
8、keepalived 部署
项目编写与后续验证步骤
请参见:
https://github.com/zhanglianghhh/ansible-example-lnmp
这里包含:涉及目录与文件说明;服务部署;停止服务【因为是个人电脑通过虚拟机实现的】;服务验证。
为了避免重复这里就不单独说了,参见上面地址即可。
———END——— 如果觉得不错就关注下呗 (-^O^-) !
- 一行Spark代码的诞生记(深度剖析Spark架构)
- Ray:AI的分布式系统
- Spring Boot 中使用 MongoDB 增删改查
- 来人啊给我炸了那个Java虚拟机No.46
- 机器学习虾扯淡之Logistic回归No.44
- 大数据计数原理1+0=1这你都不会算(一)No.47
- 机器学习虾扯蛋之SVD奇异值分解No.48
- 提高Spark姿势水平 No.73
- 好好玩的螺旋算法No.69
- linux学习第四十篇:访问日志不记录静态文件,访问日志切割,静态元素过期时间
- linux学习第四十一篇:配置防盗链,访问控制Directory,访问控制FilesMatch
- linux学习第四十二篇:限定某个目录禁止解析php, 限制user_agent,PHP相关配置
- 简易但不简单的配置中心No.79
- linux学习第四十三篇:LNMP架构介绍,mysql安装,php安装,Nginx介绍
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- java之子类对象实例化过程
- java之instanceof操作符
- java之Object类
- springboot开发之引入资源并实现跳转到登录界面
- java之==操作符和equals操作符
- LeetCode | 24.两两交换链表中的节点
- java之单例设计模式
- Nginx | Nginx的介绍和安装
- 真特么激动第一个爬虫----爬取豆瓣电影top250
- LeetCode | 141.环形链表
- LeetCode | 20.有效的括号
- springboot开发之实现登录功能
- springboot开发之国际化(中英文切换)
- LeetCode | 225.用队列实现栈
- springboot开发之显示员工信息