ansible自动化运维工具上部署lnmp架构

2023-11-09

ansible自动化运维工具上部署lnmp架构

准备四台服务器,一台安装ansible,进行管理与控制;一台安装mysql,存放数据;一台安装nginx,实现反向代理;最后安装php。

CentOS7 IP 运用
192.168.228.20 nginx
192.168.228.21 mysql数据库
192.168.228.23 php
192.168.228.30 ansible运维工具

ansible安装

yum源安装
[root@arongya ~]# cd /etc/yum.repos.d/
[root@arongya yum.repos.d]# curl -o CentOS7-Base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:-100  1572  100  1572    0     0   5815      0 --:--:-- --:--:-- --:--:--  5865
[root@arongya yum.repos.d]# rm -rf CentOS-*
[root@arongya yum.repos.d]# ls
CentOS7-Base-163.repo
[root@arongya yum.repos.d]# sed -i 's/\$releasever/7/g' /etc/yum.repos.d/CentOS7-Base-163.repo 
[root@arongya yum.repos.d]# sed -i 's/^enable=.*/enable=1/g' /etc/yum.repos.d/CentOS7-Base-163.repo 
[root@arongya yum.repos.d]# yum -y install epel-release

安装ansible
[root@arongya ~]# yum -y install ansible ansible-doc

查看ansible的版本
[root@arongya ~]# ansible --version
ansible 2.6.3
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]

配置ssh

[root@arongya ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:WOMTPDiX24K9QKRWBRl9mTwXah1/3GisIwy2c23lXmk root@arongya
The key's randomart image is:
+---[RSA 2048]----+
|      =*.. oo.   |
|     +.o..*o.+ o.|
|    o + @.oo. * +|
|   . . X @ . = ..|
|      + S = = .E.|
|       . * o o.. |
|        .     .  |
|                 |
|                 |
+----[SHA256]-----+
[root@arongya .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.228.20
[root@arongya .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.228.21
[root@arongya .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.228.23

将要配置nginx、mysql、php的被控主机的IP添加到ansible主机清单

[root@arongya ~]# vim /etc/ansible/hosts 
[root@arongya ~]# tail -8 /etc/ansible/hosts 
[nginx]
192.168.228.20

[mysql]
192.168.228.21

[php]
192.168.228.23

运用ping模块检查指定节点机器是否连接

[root@arongya ~]# ansible all -m ping
192.168.228.20 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
192.168.228.23 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
192.168.228.21 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

关闭主控机器的防火墙和selinux

[root@arongya ~]# systemctl stop firewalld
[root@arongya ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@arongya ~]# setenforce 0
[root@arongya ~]# sed -i "/^SELINUX/s/enforcing/disabled/g" /etc/selinux/config

通过ansible连接到192.168.228.20配置nginx安装(本地也要安装nginx,步骤略)

环境准备

关闭防火墙和selinux
[root@arongya ~]# ansible 192.168.228.20 -m shell -a 'systemctl is-active firewalld'
192.168.228.20 | SUCCESS | rc=0 >>
active

[root@arongya ~]# ansible 192.168.228.20 -m service -a 'name=firewalld state=stopped'
192.168.228.20 | SUCCESS => {
    "changed": true, 
    "name": "firewalld", 
    "state": "stopped", 
    "status": {
...以下内容略

[root@arongya ~]# ansible 192.168.228.20 -m service -a 'name=firewalld enabled=no'
192.168.228.20 | SUCCESS => {
    "changed": true, 
    "enabled": false, 
    "name": "firewalld", 

[root@arongya ~]# ansible 192.168.228.20 -a 'setenforce 0'
192.168.228.20 | SUCCESS | rc=0 >>

[root@arongya ~]# ansible 192.168.228.20 -m shell -a 'sed -i "/^SELINUX/s/enforcing/disabled/g" /etc/selinux/config'
 [WARNING]: Consider using the replace, lineinfile or template module rather than running sed.  If you need to use
command because replace, lineinfile or template is insufficient you can add warn=False to this command task or set
command_warnings=False in ansible.cfg to get rid of this message.

192.168.228.20 | SUCCESS | rc=0 >>

创建系统组和用户

[root@arongya ~]# ansible 192.168.228.20 -m group -a 'name=nginx system=yes state=present'
192.168.228.20 | SUCCESS => {
    "changed": true, 
    "gid": 996, 
    "name": "nginx", 
    "state": "present", 
    "system": true
}
[root@arongya ~]# ansible 192.168.228.20 -m shell -a 'grep nginx /etc/group'
192.168.228.20 | SUCCESS | rc=0 >>
nginx:x:996:

[root@arongya ~]# ansible 192.168.228.20 -m user -a 'name=nginx group=996  uid=996 system=yes create_home=no shell=/sbin/nologin state=present'
192.168.228.20 | SUCCESS => {
    "changed": true, 
    "comment": "", 
    "create_home": false, 
    "group": 996, 
    "home": "/home/nginx", 
    "name": "nginx", 
    "shell": "/sbin/nologin", 
    "state": "present", 
    "system": true, 
    "uid": 996
}
[root@arongya ~]# ansible 192.168.228.20 -m shell -a 'grep nginx /etc/passwd'
192.168.228.20 | SUCCESS | rc=0 >>
nginx:x:996:996::/home/nginx:/sbin/nologin

安装依赖环境

[root@arongya ~]# ansible 192.168.228.20 -m shell -a 'yum -y install pcre-devel openssl openssl-devel gd-devel'

[root@arongya ~]# ansible 192.168.228.20 -m shell -a 'yum -y groups mark install "Development Tools" '

[root@arongya ~]# ansible 192.168.228.20 -m shell -a 'yum grouplist'

创建日志存放目录以及更改存放日志目录属组和属主

[root@arongya ~]# ansible 192.168.228.20 -a 'mkdir -p /var/log/nginx'
 [WARNING]: Consider using the file module with state=directory rather than
running mkdir.  If you need to use command because file is insufficient you can
add warn=False to this command task or set command_warnings=False in
ansible.cfg to get rid of this message.

192.168.228.20 | SUCCESS | rc=0 >>


[root@arongya ~]# ansible 192.168.228.20 -a 'chown -R nginx.nginx /var/log/nginx'
 [WARNING]: Consider using the file module with owner rather than running
chown.  If you need to use command because file is insufficient you can add
warn=False to this command task or set command_warnings=False in ansible.cfg to
get rid of this message.

192.168.228.20 | SUCCESS | rc=0 >>


[root@arongya ~]# ansible 192.168.228.20 -a 'ls -ld /var/log/nginx'
192.168.228.20 | SUCCESS | rc=0 >>
drwxr-xr-x. 2 nginx nginx 6 Sep 10 14:53 /var/log/nginx

下载nginx

[root@arongya ~]# ansible 192.168.228.20 -m shell -a 'cd /usr/src/ && yum -y install wget && wget http://nginx.org/download/nginx-1.12.0.tar.gz '

编译安装

[root@arongya ~]# ansible 192.168.228.20 -m shell -a 'cd /usr/src/ && tar xf nginx-1.12.0.tar.gz -C /usr/src/'
192.168.228.20 | SUCCESS | rc=0 >>


[root@arongya ~]# ansible 192.168.228.20 -m shell -a 'ls /usr/src/ -l'
192.168.228.20 | SUCCESS | rc=0 >>
total 960
drwxr-xr-x. 2 root root      6 Nov  5  2016 debug
drwxr-xr-x. 3 root root     35 Jul 12 19:54 kernels
drwxr-xr-x. 8 1001 1001    158 Apr 12  2017 nginx-1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ansible自动化运维工具上部署lnmp架构 的相关文章

  • HDFS PB级数据无感迁移实践

    文章目录 前言 数据无感迁移的挑战 数据无感迁移实践 数据迁移的踩坑和填坑 问题1 DistCp build copy list阶段OutOfMemory问题 问题2 DistCp的map task failure 问题3 DistCp长尾
  • Redis基础_缓存相关知识

    redis缓存 1 为什么使用redis 2 使用redis有什么缺点 3 单线程的redis为什么这么快 4 redis的数据类型 以及每种数据类型的使用场景 5 redis的过期策略以及内存淘汰机制 6 redis和数据库双写一致性问题
  • STL 中 partition 算法的使用

    背景 STL 中包含一些分组有关的算法 需要引用有文件 include partition 概述 使用输入的比较函数对指定范围的元素重新排序 把结果为 true 的元素放在结果为 false 的元素之前 并返回两部分数据的分界位置的迭代器
  • jmeter如何测试一个get请求

    目录 1 配置测试计划 1 1 创建线程组 1 2 创建GET的HTTP请求取样器 模拟GET请求 1 3 添加查看结果树和聚合报告 2 执行压测并查看结果 2 1 验证接口 2 2 执行压力测试 使用jmeter测试一个http的get请
  • PAT 1002

    include
  • HTML5 WebSocket长连接

    HTML5 WebSocket实现长连接 先介绍一下WebSocket WebSocket的概念 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议 WebSocket 使得客户端和服务器之间的数据
  • java异常分类

    一 异常父类 Throwable 有两个子类 1 Error 严重问题 2 Exception 非严重问题 二 Exception 1 运行时异常 是RuntimeException以及RuntimeException的子类 2 非运行时异
  • Java中将json字符串导出为json文件【详细步骤】

    一 概述 请根据具体需求具体改动 此代码需要将前端的数据查询出来 然后进行json字符串的转化 getCatalogId id 方法是根据id查出来的内容然后再进行转换成json字符串 也可以直接传入json字符串进行测试 二 代码 Api
  • 案例-使用MapReduce实现join操作

    哈喽 各位小伙伴们中秋快乐 好久没更新新的文章啦 今天分享如何使用mapreduce进行join操作 在离线计算中 我们常常不只是会对单一一个文件进行操作 进行需要进行两个或多个文件关联出更多数据 类似与sql中的join操作 今天就跟大家
  • 【行业了解】天眼查、企查查、启信宝、爱企查

    行业了解 天眼查 企查查 启信宝 爱企查 前言 今天写 行业分析 矿泉水行业 的时候 简单从两个三方平台获取信息 不过毕竟是第三方平台 我不了解的话我心里不放心 于是简单了解一下查企业的第三方平台 11月22写 企业分析 索菲亚 的时候用了
  • 睿智的目标检测37——TF2搭建SSD目标检测平台(tensorflow2)

    睿智的目标检测37 TF2搭建SSD目标检测平台 tensorflow2 学习前言 什么是SSD目标检测算法 源码下载 SSD实现思路 一 预测部分 1 主干网络介绍 2 从特征获取预测结果 3 预测结果的解码 4 在原图上进行绘制 二 训
  • 2019最好用的谷歌扩展工具

    Extensions Manager 安装地址 https chrome google com webstore detail extensions manager aka sw lpleipinonnoibneeejgjnoeekmbop
  • Calendar获取想要的日期

    获取当前天的前n天 getTodayPreNDay int n 取得月第一天 getFirstDateOfMonth Date date 取得月最后一天 getLastDateOfMonth Date date 获取当前的季度 getSea
  • combineReducers()用法详解

    https www cnblogs com aurora ql p 14110920 html
  • Linux文件与目录的复制、删除与移动(cp、rm、mv)

    cp 复制文件或目录 cp adfilprsu 源文件 目标文件 cp options 源文件1 源文件2 目录 选项与参数 a 相当于 dr preserve all的意思 至于dr参考下面说明 d 若源文件为链接文件的属性 link f
  • 【转】常用性能计数器

    CPU 性能计数器说明 CPU 1 System Total Processor Time 平均CPU利用率 指处理器执行非闲置线程时间的百分比 测量处理器繁忙的时间 这个计数器设计成用来作为处理器活动的主要指示器 可以选择单个CPU实例
  • 无锁环形缓冲RingBuffer的原理及Java实现

    在多线程环境下为了保证线程安全 往往需要加锁 例如读写锁可以保证读写互斥 读读不互斥 有没有一种数据结构能够实现无锁的线程安全呢 答案就是使用RingBuffer循环队列 在Disruptor项目中就运用到了RingBuffer RingB
  • HTTP响应报文应答状态码及含义

    本应答报文状态码是老猿结合多方资料收集综合后并加以老猿自己的理解进行说明的应答报文状态码 应该是最新最全解释最详尽的 供大家参考
  • linux服务器查找大文件及删除文件后磁盘空间没有得到释放

    1 查询服务器中大于1G的文件 find type f size 1G 这条命令是查询自 根目录下所有大小超过1G的文件 查询的大小可以根据需要改变 如下 相关查询 查询服务器中大于100M的文件 find type f size 100M
  • ubuntu重新设置root密码

    方法一 如果用户具有sudo权限 那么直接可以运行如下命令 sudo su root passwd 直接更改root密码 sudo passwd root 有关sudo su的区别 1 共同点 都是root用户的权限 2 不同点 su仅仅取

随机推荐

  • 训练PyTorch模型遇到显存不足的情况怎么办

    在跑代码的过程中 遇到了这个问题 当前需要分配的显存在600MiB以下 RuntimeError CUDA out of memory Tried to allocate 60 00 MiB GPU 0 10 76 GiB total ca
  • minist图片多分类问题-单层神经网络

    采用打单层隐藏层 使用TensorFlow框架 构建的分类神经网络 入门级小项目 供深度学习 TensorFlow 初学者参考 usr bin env python coding utf 8 In 导入package 读取数据 import
  • DBeaver——一款替代Navicat的数据库可视化工具

    对于很多开发者来说 Navicat这个软件并不陌生 相信这个彩虹色图标的软件 有效的帮助了你的开发工作 从前上学的时候 我都是用的都是从网上找来的密钥进行破解的 但是一直在寻找有没有一个能找到一个免费的能完美替代Navicat的工具 今天就
  • 2.5mnist手写数字识别之优化算法精讲(百度架构师手把手带你零基础实践深度学习原版笔记系列)

    2 5mnist手写数字识别之优化算法精讲 百度架构师手把手带你零基础实践深度学习原版笔记系列 目录 2 5mnist手写数字识别之优化算法精讲 百度架构师手把手带你零基础实践深度学习原版笔记系列 设置学习率 学习率的主流优化算法 设置学习
  • 机器学习——决策树剪枝

    目录 一 决策树剪枝策略 1 1剪枝目的 1 2剪枝策略 1 3判断决策树泛化性能是否提升的方法 二 预剪枝 prepruning 2 1概述 2 2预剪枝优缺点 2 3代码实现 三 后剪枝 postpruning 3 1概述 3 2后剪枝
  • MinIo 安装及其集成到java中上传下载图片信息

    MinIo 安装及其集成到java中上传下载图片信息 win 下安装 下载链接 https min io download windows 下载好后cmd打开控制台 输入 minio exe server D MinIo data 注 D
  • [轻量级RTSP服务]Linux

    背景 随着国产操作系统的推进 传统行业对Linux平台的呼声和需求越来越大 之前几年 我们发布了Linux平台运营商级的RTSP转RTMP推送模块 RTMP推送模块和RTSP RTMP播放模块 前段时间 有开发者问我们 是不是可以在Linu
  • eclipse中springboot项目如何打包成jar文件

    eclipse中springboot项目如何打包成jar包 前提 第一步 清除项目中之前的打包内容 第二步 打jar包 第三步 测试 4 注意事项 前提 在项目的pom xml中配置相关的内容 其中finalName中内容表示jar war
  • 树莓派mqtt协议连接阿里云物联网平台,手机端获取数据并控制

    树莓派C语言mqtt协议连接阿里云物联网平台 一 阿里云后台配置树莓派设备 阿里云添加链接描述 注册 登录 打开控制台 选择产品与服务 物联网平台 进入后 选择设备管理 产品 点击创建产品 产品名称随便写 品类自定义 直连设备 其他默认 最
  • 【设计模式】建造者模式

    建造者模式 Builder Pattern 使用多个简单的对象一步一步构建成一个复杂的对象 这种类型的设计模式属于创建型模式 它提供了一种创建对象的最佳方式 一个 Builder 类会一步一步构造最终的对象 该 Builder 类是独立于其
  • 【概率论与数理统计】猴博士 笔记 p15-16 一、二维连续型求概率

    一维连续型求概率 题型如下 解题步骤如下 其实就是求积分 举例1的例子 例2 解 例3 解 注意 要把Y变为X计算 且要分类讨论y是否大于0 例4 解 去掉max和min的方法 去掉多余项的方法 假设要求AB两项同时发生的概率 当多余项 A
  • kafka使用_使用多线程增加kafka消费能力

    原创 小姐姐味道 微信公众号ID xjjdog 欢迎分享 转载请保留出处 前提 本例适合那些没有顺序要求的消息主题 kafka通过一系列优化 写入和读取速度能够达到数万条 秒 通过增加分区数量 能够通过部署多个消费者增加并行消费能力 但还是
  • order by产生的 Using temporary的优化

    今天遇到一个慢查询的sql sql如下 EXPLAIN SELECT tas f year tc pk id tas f sex tas f rank score tas f age tas f km five tas f km ten t
  • filter过滤器实现权限访问控制以及同一账号只能登录一台设备

    需求 如题目所意 未登录用户不能浏览访问项目内部的资源 对访问的请求和响应进行拦截 且一个用户只能在一台设备登录 权限访问控制功能可以通过过滤器或者拦截器去实现 在这里我用的是过滤器 过滤器可以过滤全部action请求 拦截器则更有针对性
  • unity通过键盘控制物体移动,大小的缩放

    拖动距离 private float distance 10 缩放量 float scale 0 2f 通过键盘 Q 或者 E 控制物体的缩放 通过键盘 w s a d 控制物体上下左右的移动 private void Update if
  • PWM实现线性调光

    1 PWM调光原理 PWM全称为脉宽调制技术 是通过高精度的计数器对方波的占空比进行编码 就是这个东西 其实很好理解 高电平的时候才会做功 低电平的时候肯定不亮啊 PWM就是调制高电平的占比 其实一般是低电平才有效 因为会外接一个12V的电
  • XFocus Windows Internet 服务器安全配置

    Windows 2003版本区别 1 Windows Server 2003 Standard Edition 标准版 针对中小型企业的核心产品 他也是支持双路处理器 4GB的内存 它除了具备 Windows Server 2003 Web
  • Revit SDK下载地址

    20190325更新 共享了如下sdk REVIT 2014 SDK exe REVIT2015SDK SubscriptionRelease msi REVIT 2016 SDK msi Revit 2017 1 SDK Update O
  • 树莓派OpenWrt SD扩展问题

    树莓派OpenWrt磁盘扩展 1 查看问题 前几天给树莓派4B刷了OpenWrt当做软路由来使用 发现树莓派的SD卡空间没有完全被使用 有一部分未分区 已用大概只有2GB df h查看 2 fdisk 命令查看磁盘 3 按p查看分区情况 发
  • ansible自动化运维工具上部署lnmp架构

    ansible自动化运维工具上部署lnmp架构 ansible安装 通过ansible连接到192 168 228 20配置nginx安装 本地也要安装nginx 步骤略 安装mysql 安装PHP ansible自动化运维工具上部署lnm