【Ansible】Ansible自动化运维工具之playbook剧本搭建LNMP架构
LNMP
- 一、playbooks 分布式部署 LNMP
- 1. 环境配置
- 2. 安装 ansble
- 3. 安装 nginx
- 3.1 准备 nginx 相关文件
- 3.2 编写 lnmp.yaml 的 nginx 部分
- 3.3 测试 nginx
- 4. 安装 mysql
- 4.1 准备 mysql 相关文件
- 4.2 编写 lnmp.yaml 的 mysql 部分
- 4.3 测试 mysql
- 5. 安装 php
- 5.1 编写 lnmp.yaml 的 php 部分
- 5.2 测试 php
- 二、playbooks 集中式部署 LNMP
- 1. 环境配置
- 2. 安装 ansible
- 3. 准备配置文件
- 3.1 nginx
- 3.2 mysql
- 4. 编写 lnmp.yaml 文件
- 5. 测试并用浏览器访问
- 三、role 模块部署 LNMP
- 1. 环境配置
- 2. 安装 ansible
- 3. 配置相关文件
- 3.1 创建目录
- 3.2 准备 nginx 相关文件
- 3.3 准备 php 相关文件
- 3.4 准备 mysql 相关文件
- 4. 启动安装分布式 LNMP
一、playbooks 分布式部署 LNMP
1. 环境配置
ansible服务器 192.168.145.15
nginx 服务器 192.168.145.30
mysql 服务器 192.168.145.45
php 服务器 192.168.145.60
2. 安装 ansble
#管理端安装 ansible
yum install -y epel-release #先安装 epel 源
yum install -y ansible

#配置密钥对验证
ssh-keygen -t rsa
vim /etc/ssh/ssh_config
-----35行,取消注释-----
StrictHostKeyChecking nosshpass -p '123' ssh-copy-id root@192.168.145.30
sshpass -p '123' ssh-copy-id root@192.168.145.45
sshpass -p '123' ssh-copy-id root@192.168.145.60

#配置主机清单
cd /etc/ansiblevim hosts
[nginx]
192.168.145.30
[mysql]
192.168.145.45
[php]
192.168.145.60

#创建一个目录用来存放 playbooks 的文件
cd /etc/ansible/
mkdir playbooks

3. 安装 nginx
3.1 准备 nginx 相关文件
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
#准备nginx源,进行yum安装
cd /opt/
mv nginx.repo /etc/ansible/playbooks/
cd /etc/ansible/playbooks/

#配置 nginx 支持 PHP 解析
cd /etc/nginx/conf.dvim default.conflocation / {root /usr/share/nginx/html;index index.php index.html index.htm;}
......location ~ \.php$ {root html;fastcgi_pass 192.168.145.60:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; # $document_root 和 root 属性一样include fastcgi_params;}cp default.conf /etc/ansible/playbooks/default.conf.j2

#准备php文件
vim /etc/ansible/playbooks/index.php
<?php
phpinfo();
?>
#测试mysql是否能连接成功
vim /etc/ansible/playbooks/test.php
<?php
$link=mysqli_connect('192.168.145.45','root','Admin@123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

3.2 编写 lnmp.yaml 的 nginx 部分
vim lnmp.yaml
- name: nginx playhosts: nginxremote_user: roottasks:- name: disable selinuxcommand: '/sbin/setenforce 0'ignore_errors: true- name: disable firewalldservice: name=firewalld state=stopped- name: copy nginx yum repo filecopy: src=nginx.repo dest=/etc/yum.repos.d/- name: install nginxyum: name=nginx state=latest- name: copy index.phpcopy: src=index.php dest=/usr/share/nginx/html- name: copy nginx template configuration filetemplate: src=default.conf.j2 dest=/etc/nginx/conf.d/default.conf- name: start nginxservice: name=nginx state=started enabled=yes

3.3 测试 nginx
#在ansible服务器运行
cd /etc/ansible/playbooks/
ansible-playbook lnmp.yaml --syntax-check #检查yaml文件的语法是否正确
ansible-playbook lnmp.yaml
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HHMJQfy8-1690849321990)(C:/Users/86138/AppData/Roaming/Typora/typora-user-images/image-20230731130407255.png)]
#在 nginx 服务器查看
systemctl status nginx

4. 安装 mysql
4.1 准备 mysql 相关文件
#安装 mysql 5.7
cd /etc/yum.repos.d
wget -相关文章:
【Ansible】Ansible自动化运维工具之playbook剧本搭建LNMP架构
LNMP 一、playbooks 分布式部署 LNMP1. 环境配置2. 安装 ansble3. 安装 nginx3.1 准备 nginx 相关文件3.2 编写 lnmp.yaml 的 nginx 部分3.3 测试 nginx4. 安装 mysql4.1 准备 mysql 相关文件4.2 编写 lnmp.yaml 的 mysql 部分4.3 测试 mysql5. 安装 php5.1 编写 lnmp.yaml 的 …...
Spring中的事务
一、为什么需要事务? 事务定义 将一组操作封装成一个执行单元(封装到一起),要么全部成功,要么全部失败。 为什么要用事务? 比如转账分为两个操作: 第一步操作: A 账户 -100 元…...
38 非法地址访问的 segment fault 的调试
前言 在前面一篇文章 coredump 的生成和使用 中, 我们看到 "测试用例2 - 非法地址访问" 产生了一个 segment fault 我们这里 就来调试一下 这个 segment fault 是怎么回事 测试用例 #include "stdio.h"int main(int argc, char** argv) {int x 2; i…...
c++中c_str()的用法详解
c_str()就是将C的string转化为C的字符串数组!!! C中没有string,所以函数c_str()就是将C的string转化为C的字符串数组,c_str()生成一个const char *指针,指向字符串的首地址。 下文通过3段简单的代码比较分析…...
谈谈关于新能源汽车的话题
新能源汽车是指使用新型能源替代传统燃油的汽车,主要包括纯电动汽车、插电式混合动力汽车和燃料电池汽车等。随着环境污染和能源安全问题的日益突出,新能源汽车已经成为全球汽车行业的发展趋势。下面我们来谈谈关于新能源汽车的话题。 首先,新…...
EventBus 开源库学习(二)
整体流程阅读 EventBus在使用的时候基本分为以下几步: 1、注册订阅者 EventBus.getDefault().register(this);2、订阅者解注册,否者会导致内存泄漏 EventBus.getDefault().unregister(this);3、在订阅者中编写注解为Subscribe的事件处理函数 Subscri…...
4_Apollo4BlueLite电源管理
1.Cortex-M4 Power Modes Apollo4BlueLite支持以下4种功耗模式: ▪ High Performance Active (not a differentiated power mode for the Cortex-M4) ▪ Active ▪ Sleep ▪ Deep Sleep (1)High Performance Mode 高性能模式不是arm定…...
Pytorch入门学习——快速搭建神经网络、优化器、梯度计算
我的代码可以在我的Github找到 GIthub地址 https://github.com/QinghongShao-sqh/Pytorch_Study 因为最近有同学问我如何Nerf入门,这里就简单给出一些我的建议: (1)基本的pytorch,机器学习,深度学习知识&a…...
举例说明typescript的Exclude、Omit、Pick
一、提前知识说明:联合类型 typescript的联合类型是一种用于表示一个值可以是多种类型中的一种的类型。我们使用竖线(|)来分隔每个类型,所以number | string | boolean是一个可以是number,string或boolean的值的类型。…...
记录一次Linux环境下遇到“段错误核心已转储”然后利用core文件解决问题的过程
参考Linux 下Coredump分析与配置 在做项目的时候,很容易遇到“段错误(核心已转储)”的问题。如果是语法错误还可以很快排查出来问题,但是碰到coredump就没办法直接找到问题,可以通过设置core文件来查找问题࿰…...
WPF中自定义Loading图
纯前端方式,通过动画实现Loading样式,如图所示 <Grid Width"35" Height"35" HorizontalAlignment"Center" VerticalAlignment"Center" Name"Loading"><Grid.Resources><DrawingBrus…...
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
一、实际工作中需要对转换选项细化内容 在昨天我们实现了最简单的半角字符和全角字符相互转换功能,就是将英文字母、阿拉伯数字、标点符号、空格全部进行转换。 在实际工作中,我们有时只想英文字母、阿拉伯数字、标点符号、空格之中的一两类进行转换&a…...
叮咚买菜财报分析:叮咚买菜第二季度财报将低于市场预期
来源:猛兽财经 作者:猛兽财经 卖方分析师对叮咚买菜第二季度财报的预测 尽管叮咚买菜(DDL)尚未明确披露第二季度财报的具体日期,但根据其以往的业绩公告,猛兽财经认为叮咚买菜很有可能会在8月的第二周发布…...
设计模式行为型——中介者模式
目录 什么是中介者模式 中介者模式的实现 中介者模式角色 中介者模式类图 中介者模式代码实现 中介者模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是中介者模式 中介者模式(Mediator Pattern)属于行为型模式,是用来降低…...
Vue——formcreate表单设计器自定义组件实现(二)
前面我写过一个自定义电子签名的formcreate表单设计器组件,那时初识formcreate各种使用也颇为生疏,不过总算套出了一个组件不是。此次时隔半年又有机会接触formcreate,重新熟悉和领悟了一番各个方法和使用指南。趁热打铁将此次心得再次分享。…...
人脸验证(Face verification) 和 人脸识别(Face recognition) 的区别
人脸验证(Face verification) 和 人脸识别(Face recognition) 的区别 Face verification 和 Face recognition 都是人脸识别的技术,但是它们的应用和目的不同。 Face verification(人脸验证)是指通过比对两张人脸图像,判断它们是…...
前端如何打开钉钉(如何唤起注册表中路径与软件路径不关联的软件)
在前端唤起本地应用时,我查询了资料,在注册表中找到腾讯视频会议的注册表情况,如下: 在前端代码中加入 window.location.href"wemeet:"; 就可以直接唤起腾讯视频会议,但是我无法唤起钉钉 之所以会这样&…...
数据可视化入门指南
数据可视化是一种将抽象的数值和数据转换为易于理解的图像的方法。它可以帮助人们更好地理解数据的含义,并且可以揭示数据中可能被忽视的模式和趋势。本文将为你提供一个简单的数据可视化入门指南。 为什么数据可视化重要? 在我们的生活中,数…...
React 18 响应事件
参考文章 响应事件 使用 React 可以在 JSX 中添加 事件处理函数。其中事件处理函数为自定义函数,它将在响应交互(如点击、悬停、表单输入框获得焦点等)时触发。 添加事件处理函数 如需添加一个事件处理函数,需要先定义一个函数…...
面试总结-c++
1该吹牛逼吹牛逼。在自己能说出个所以然的情况下,该吹就吹,不吹没工作,吹了有希望。 比如 c组长,确有其事,但是挺唬人。说自己在北京定居也是侧面吹牛逼,证明自己的能力。还有媳妇在研究所。 2.对自己做过…...
OpenClaw语音交互:千问3.5-9B实现的自然语言控制
OpenClaw语音交互:千问3.5-9B实现的自然语言控制 1. 为什么需要语音交互的自动化助手 去年冬天的一个深夜,我正在赶制一份紧急报告。双手忙着整理数据,眼睛盯着屏幕,却突然需要打开另一个参考文档。那一刻我突然想:如…...
抖音批量下载终极指南:免费无水印下载器完整使用教程
抖音批量下载终极指南:免费无水印下载器完整使用教程 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…...
如何快速掌握Le Git Graph:浏览器扩展核心功能与架构全解析
如何快速掌握Le Git Graph:浏览器扩展核心功能与架构全解析 【免费下载链接】le-git-graph Browser extension to add git graph to GitHub website. 项目地址: https://gitcode.com/gh_mirrors/le/le-git-graph Le Git Graph是一款强大的浏览器扩展…...
Golang反射实战:如何用结构体标签实现JSON自动解析(附避坑指南)
Golang反射实战:如何用结构体标签实现JSON自动解析(附避坑指南) 在Golang开发中,处理JSON数据是日常工作中最常见的任务之一。无论是构建RESTful API、处理配置文件,还是与前端进行数据交互,JSON都扮演着关…...
Small插件化框架终极指南:从Bundle到Launcher的完整架构解析
Small插件化框架终极指南:从Bundle到Launcher的完整架构解析 【免费下载链接】Small A small framework to split app into small parts 项目地址: https://gitcode.com/gh_mirrors/smal/Small Small是一个轻量级的插件化框架,旨在将应用程序拆分…...
【Kafka系列·入门第五篇】Kafka实操进阶:Topic/Partition管理 + 消息可靠性配置
大家好,接续上一篇《Kafka实操入门:环境部署(Windows/Linux) 简单消息收发》,今天我们进入Kafka实操进阶环节——重点讲解Topic与Partition的日常管理、消息可靠性配置,以及新手常遇到的实操故障排查方法。…...
OpenClaw监控方案:Qwen3-4B模型API健康检查自动化
OpenClaw监控方案:Qwen3-4B模型API健康检查自动化 1. 为什么需要模型API监控 上周我的个人自动化流程突然中断了整整8小时——直到第二天早上查看日志才发现是Qwen3-4B模型API服务崩溃了。这个教训让我意识到:本地部署的大模型也需要像云服务一样建立健…...
WGAN-GP实战指南:从梯度惩罚到高质量数字图像生成
1. 为什么需要WGAN-GP:从GAN的痛点说起 第一次用传统GAN生成手写数字时,我盯着屏幕上一团模糊的像素点发呆——这跟我想象中的"以假乱真"相差甚远。后来才发现,这其实是GAN训练中典型的模式崩溃现象。传统GAN使用JS散度作为损失函数…...
PyCharm Community 版新手一站式安装与配置指南
1. PyCharm Community版是什么? PyCharm Community版是JetBrains公司推出的免费Python集成开发环境(IDE),专为个人开发者和小型项目设计。我第一次接触这个工具时,发现它比想象中要强大得多 - 代码自动补全、错误检查、…...
Dify开发AI智能体的费用
Dify 的计费逻辑与 Coze 有显著不同,它最大的特点是“开源免费”与“云端订阅”并存。由于它不强制绑定大模型,你的总支出通常由“平台费 模型流量费”两部分组成。以下是截至 2026 年 4 月的详细费用拆解:1. 部署模式决定基础费用开源社区版…...
