【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.对自己做过…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
