利用ansible playbook部署LNMP架构

接:ansible批量运维管理-CSDN博客

由于host01主机环境不纯净,决定弃用host01主机,编写剧本时要确保环境纯洁

(只做实验用途一台控制)

[root@ansible-server ~]# vim /etc/ansible/hosts 
[webserver]
host02

1、在ansible端下载nginx源码包、编写index.php,以及lamp.yml文件

[root@ansible-server ~]# mkdir  playbook
[root@ansible-server ~]# cd playbook/
[root@ansible-server playbook]# vim  index.php
[root@ansible-server playbook]# cat index.php 
<?php
phpinfo();
?>
[root@ansible-server playbook]#
[root@ansible-server playbook]# wget -c  https://nginx.org/download/nginx-1.26.0.tar.gz
--2024-05-08 14:35:02--  https://nginx.org/download/nginx-1.26.0.tar.gz

正在解析主机 nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:5c0:2600::6, ...
正在连接 nginx.org (nginx.org)|3.125.197.172|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 206 Partial Content
长度:1244118 (1.2M),剩余 294449 (288K) [application/octet-stream]
正在保存至: “nginx-1.26.0.tar.gz”

nginx-1.26.0.tar.gz             100%[+++++++++++++++++++++++++++++++++++++++++=============>]   1.19M  18.2KB/s  用时 16s     

2024-05-08 14:35:19 (18.2 KB/s) - 已保存 “nginx-1.26.0.tar.gz” [1244118/1244118])

[root@ansible-server playbook]# ls
index.html  index.php  nginx-1.26.0.tar.gz
[root@ansible-server playbook]# 

#解压nginx,并拷贝一份配置文件到playbook目录下
[root@ansible-server playbook]# tar -xvf nginx-1.26.0.tar.gz  -C /usr/local/
[root@ansible-server playbook]# cp /usr/local/nginx-1.26.0/conf/nginx.conf  ./
[root@ansible-server playbook]# 

修改nginx.conf目录让其支持php页面

 [root@ansible-server playbook]# vim nginx.conf 
 43         location / {
 44             root   html;
 45             index  index.php index.html index.htm;
 46         } 
 65         location ~ \.php$ {
 66             root          /var/www/html;
 67             fastcgi_pass   127.0.0.1:9000;
 68             fastcgi_index  index.php;
 69             fastcgi_param  SCRIPT_FILENAME               $document_root$fastcgi_script_name;
 70             include        fastcgi_params;
 71         }

 安装php,复制一份配置文件,需要修改其配置文件

[root@ansible-server ~]# yum -y install  php*
[root@ansible-server ~]# cp /etc/php-fpm.d/www.conf  ./playbook/
[root@ansible-server ~]# cd ./playbook/
[root@ansible-server playbook]# vim www.conf
 24 user = nginx  //改为nginx
 25 ; RPM: Keep a group allowed to write in log dir.
 26 group = nginx    //改为nginx
 38 listen = 127.0.0.1:9000    //listen改为本地IP加9000端口

 编写lnmp.yml文件

[root@ansible-server playbook]# vim lnmp.yml 
[root@ansible-server playbook]# cat lnmp.yml   
# 定义要应用 playbook 的主机组,这里为 'webserver'  
- hosts: webserver  
  tasks:  
  
    # 安装编译 nginx 和其他依赖所需的软件包  
    - name: "安装依赖包环境"  
      yum:  
        name: "{{ item }}"  # 使用变量来迭代安装多个软件包  
        state: installed   # 确保软件包处于已安装状态  
      with_items:  
        - gcc             # C 编译器  
        - make            # 编译工具  
        - gcc-c++         # C++ 编译器  
        - pcre            # Perl Compatible Regular Expressions  
        - pcre-devel      # PCRE 开发库  
        - zlib            # 压缩和解压缩库  
        - zlib-devel      # Zlib 开发库  
        - openssl         # OpenSSL 加密库  
        - openssl-devel   # OpenSSL 开发库  
        - php             # PHP 解释器  
        - php-gd          # PHP GD 库  
        - php-mysqlnd     # PHP MySQL Native Driver  
        - php-fpm         # PHP FastCGI 进程管理器  
        - mariadb         # MariaDB 客户端  
        - mariadb-server  # MariaDB 服务器  
  
    # 从本地文件系统中传输并解压 nginx 安装包到远程服务器  
    - name: "传输并解压安装包"  
      unarchive:  
        src: /root/playbook/nginx-1.26.0.tar.gz  # 本地路径下的 nginx 安装包  
        dest: /usr/local                        # 解压到的目标目录  
        
  
    # 创建一个名为 'nginx' 的系统用户,不使用 shell 且不创建主目录  
    - name: "创建nginx用户"  
      user:  
        name: nginx             # 用户名  
        state: present          # 确保用户存在  
        shell: /sbin/nologin    # 不为用户分配 shell  
        create_home: no         # 不为用户创建主目录  
  
    # 编译并安装 nginx  
    - name: "编译安装nginx"  
      shell: |                       # 使用  | 来表示多行 shell 命令
        cd /usr/local/nginx-1.26.0 &&  # 进入 nginx 解压后的目录  
        ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module &&  # 配置安装选项  
        make &&  # 编译  
        make install  # 安装  
  
    # 分发 nginx 的配置文件到远程服务器  
    - name: "分发nginx配置文件"  
      copy:  
        src: /root/playbook/nginx.conf          # 本地配置文件路径  
        dest: /usr/local/nginx/conf/nginx.conf  # 远程服务器上的目标路径  
  
    # 分发主页面文件到远程服务器的 web 根目录  
    - name: "分发主页面"  
      copy:  
        src: /root/playbook/index.php      # 本地主页面文件路径  
        dest: /var/www/html/index.php      # 远程服务器上的目标路径 
        
   # 分发php文件  
    - name: "php文件"
      copy:
        src: www.conf
        dest: /etc/php-fpm.d/www.conf
  
    # 启动 nginx 服务  
    - name: "启动nginx"  
      shell: /usr/local/nginx/sbin/nginx    # 使用 nginx 的可执行文件启动服务  
  
    # 重启 MariaDB 服务  
    - name: "启动MySQL"  
      service:  
        name: mariadb  # 服务名  
        state: restarted  # 重启服务  
  
    # 重启 php-fpm 服务  
    - name: "启动php-fpm"  
      service:  
        name: php-fpm        # 服务名  
        state: restarted     # 重启服务  
  
    # 关闭防火墙和 SELinux 
    - name: "关闭防火墙和SELinux"
      block:
        - shell: systemctl stop firewalld   # 停止防火墙服务
          ignore_errors: yes                 # 如果防火墙没有运行,忽略错误
        - name: "尝试将SELinux设置为宽容模式"
          shell: setenforce 0
          ignore_errors: yes  # 如果SELinux已经被禁用,忽略错误 
        
[root@ansible-server playbook]# ansible-playbook lnmp.yml --syntax-check

playbook: lnmp.yml  
#检查语法没有问题运行
[root@ansible-server playbook]# 

开始执行剧本文件(中途如出现安装错误,检查本地仓库)

[root@ansible-server playbook]# ansible-playbook lnmp.yml 

PLAY [webserver] *****************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************
ok: [host02]

TASK [安装依赖包环境] ************************************************************************************************************************
ok: [host02] => (item=gcc)
ok: [host02] => (item=make)
ok: [host02] => (item=gcc-c++)
ok: [host02] => (item=pcre)
ok: [host02] => (item=pcre-devel)
ok: [host02] => (item=zlib)
ok: [host02] => (item=zlib-devel)
ok: [host02] => (item=openssl)
ok: [host02] => (item=openssl-devel)
ok: [host02] => (item=php)
ok: [host02] => (item=php-gd)
ok: [host02] => (item=php-mysqlnd)
ok: [host02] => (item=php-fpm)
ok: [host02] => (item=mariadb)
ok: [host02] => (item=mariadb-server)

TASK [传输并解压安装包] **********************************************************************************************************************
ok: [host02]

TASK [创建nginx用户] *************************************************************************************************************************
ok: [host02]

TASK [编译安装nginx] *************************************************************************************************************************
changed: [host02]

TASK [分发nginx配置文件] *********************************************************************************************************************
ok: [host02]

TASK [分发主页面] ****************************************************************************************************************************
ok: [host02]

TASK [php文件] *******************************************************************************************************************************
ok: [host02]

TASK [启动nginx] *****************************************************************************************************************************
changed: [host02]

TASK [启动MySQL] *****************************************************************************************************************************
changed: [host02]

TASK [启动php-fpm] ***************************************************************************************************************************
changed: [host02]

TASK [shell] *********************************************************************************************************************************
changed: [host02]

TASK [尝试将SELinux设置为宽容模式] ***********************************************************************************************************
fatal: [host02]: FAILED! => {"changed": true, "cmd": "setenforce 0", "delta": "0:00:00.004292", "end": "2024-05-08 18:12:11.728180", "msg": "non-zero return code", "rc": 1, "start": "2024-05-08 18:12:11.723888", "stderr": "setenforce: SELinux is disabled", "stderr_lines": ["setenforce: SELinux is disabled"], "stdout": "", "stdout_lines": []}
...ignoring

PLAY RECAP ***********************************************************************************************************************************
host02                     : ok=13   changed=6    unreachable=0    failed=0    skipped=0    rescued=0    ignored=1   

[root@ansible-server playbook]# 

 打开浏览器访问测试

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/609025.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

盲盒一番赏小程序:探索未知,开启神秘宝藏之旅

开启神秘之门&#xff0c;探索未知的乐趣 在繁忙的生活中&#xff0c;我们渴望一丝丝未知带来的惊喜与乐趣。盲盒一番赏小程序&#xff0c;正是为了满足您这种探索未知的欲望而诞生。它不仅仅是一个购物平台&#xff0c;更是一个充满神秘与惊喜的宝藏世界。 精选好物&#xf…

AI视频教程下载:给企业管理层和商业精英的ChatGpt课程

课程内容大纲&#xff1a; 1-引言 2-面向初学者的生成性人工智能 3-与ChatGPT一起学习提示101 详细介绍了如何使用ChatGPT的六种沟通模式&#xff0c;并提供了各种实际应用场景和示例&#xff1a; **Q&A模式&#xff08;问题与答案模式&#xff09;**&#xff1a; - 这…

如何在mac电脑安装 Android SDK

1、在 Mac 电脑上安装 Android SDK 的步骤如下: 前往 Android 开发者网站下载 Android SDK 打开 Android 开发者网站 (https://developer.android.com/studio) 打开下载好的 Android SDK 安装包 2、解压 Android SDK 安装包 打开下载好的 Android SDK 安装包 将 android-…

Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件

目录 1. 前言 2. 部署Node服务 2.1. 前置环境安装 2.2. 将Node服务加入集群 3. 部署JNI网络插件 4. 测试集群 5. 总结 1. 前言 我们在上一篇文章完成了Matster结点的部署&#xff0c;这次我们接着来部署Node服务&#xff0c;注意&#xff0c;我Node服务是部署在另外两台…

0509_IO4

练习1&#xff1a; 创建一对父子进程&#xff1a; 父进程负责向文件中写入 长方形的长和宽 子进程负责读取文件中的长宽信息后&#xff0c;计算长方形的面积 1 #include <stdio.h>2 #include <string.h>3 #include <stdlib.h>4 #include <sys/types.h>…

kafka系列三:生产与消费实践之旅

在本篇技术博客中&#xff0c;我们将深入探索Apache Kafka 0.10.0.2版本中的消息生产与消费机制。Kafka作为一个分布式消息队列系统&#xff0c;以其高效的吞吐量、低延迟和高可扩展性&#xff0c;在大数据处理和实时数据流处理领域扮演着至关重要的角色。了解如何在这一特定版…

如何安全高效地进行分公司文件下发?

确保分公司文件下发过程中的保密性和安全性&#xff0c;是企业信息安全管理的重要组成部分。以下是一些关键步骤和最佳实践&#xff1a; 权限管理&#xff1a;确保只有授权的人员可以访问文件。使用权限管理系统来控制谁可以查看、编辑或下载文件。 加密传输&#xff1a;在文…

前端面试题 | 常考题整理

本文为面试中出现的高频次考题&#xff0c;具体还是要看所有题。 目录 css 1、☆介绍下 BFC 及其应用 3、☆浮动清除 17、☆说几个未知宽高元素水平垂直居中方法 js 9、☆箭头函数与普通函数的区别是什么&#xff1f;构造函数可以使用 new 生成实例&#xff0c;那么箭头…

Spark云计算平台Databricks使用,SQL

创建workspace&#xff1a;Spark云计算平台Databricks使用&#xff0c;创建workspace和Compute计算集群&#xff08;Spark集群&#xff09;-CSDN博客 1 创建schema 选择Calalog&#xff0c;点击Create schema 输入名字&#xff0c;Storage location选择workspace&#xff0c;数…

Meilisearch vs Elasticsearch

2个搜索引擎的比较&#xff08;官方说法&#xff09;&#xff1a;Meilisearch vs Elasticsearch Elasticsearch 做为老牌搜索引擎&#xff0c;功能基本满足&#xff0c;但复杂&#xff0c;重量级&#xff0c;适合大数据量。 MeiliSearch 设计目标针对数据在 500GB 左右的搜索需…

SpringCloudAlibaba:5.1Sentinel的基本使用

概述 简介 Sentinel是阿里开源的项目&#xff0c;提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 官网 https://sentinelguard.io/zh-cn/ Sentinel的历史 2012 年&#xff0c;Sentinel 诞生&#xff0c;主要功能为入口流量控制。 2013-2017 年…

宝塔面板如何删除一个站点

我们一般的网站都是PHPMySQL开发的&#xff0c;所以删除站点&#xff0c;就要先删数据库&#xff0c;再删网站目录 注意&#xff1a;一点要确保无用的再删 删除站点目录

【C++】CentOS环境搭建-编译安装Boost库(附CMAKE编译文件)

【C】环境搭建-编译安装Boost库 Boost库简介Boost库安装通过YUM安装&#xff08;版本较低 V1.53.0&#xff09;通过编译安装&#xff08;官网最新版本1.85.0&#xff09;1.安装相关依赖2.查询官网下载最新安装包并解压3.编译Boost4.安装Boost库到系统路径 Boost库验证 Boost库简…

通义千问2.5正式发布,能力升级,全面赶超GPT4

简介 在人工智能的大潮中&#xff0c;大模型的竞争愈发激烈。今日&#xff0c;阿里云发布了其最新的通义千问2.5大模型&#xff0c;引起了业界的广泛关注。这款模型不仅在性能上全面赶超了GPT-4&#xff0c;还在多个基准测评中取得了优异的成绩&#xff0c;展现了国产AI技术的…

如何把公章盖在电子档文件上?

将公章盖在电子档文件上&#xff0c;尤其是确保其法律效力和安全性&#xff0c;通常涉及以下步骤&#xff1a; 准备工作 获取合法的电子公章&#xff1a;确保你拥有公司或机构正式授权的电子公章图像&#xff0c;且该图像经过了必要的加密或数字签名处理&#xff0c;以确保其…

LPDDR5电路设计的新功能

最近因为需要使用到LPDDR5&#xff0c;快速地浏览了JEDEC标准文档&#xff0c;发现与前几代相比出现了一些新的电路设计功能&#xff0c;总结为如下三点&#xff1a; 1. CK/WCK/RDQS时钟方案&#xff1b; 2. 电源的PDN设计目标&#xff1b; 3. DQ, DMI和RDQS的Rx端DFE均衡技术。…

五一超级课堂---Llama3-Tutorial(Llama 3 超级课堂)---第一节 Llama 3 本地 Web Demo 部署

课程文档&#xff1a; https://github.com/SmartFlowAI/Llama3-Tutorial 课程视频&#xff1a; https://space.bilibili.com/3546636263360696/channel/collectiondetail?sid2892740&spm_id_from333.788.0.0 操作平台&#xff1a; https://studio.intern-ai.org.cn/consol…

大模型入门(六)—— RLHF微调大模型

一、RLHF微调三阶段 参考&#xff1a;https://huggingface.co/blog/rlhf 1&#xff09;使用监督数据微调语言模型&#xff0c;和fine-tuning一致。 2&#xff09;训练奖励模型 奖励模型是输入一个文本序列&#xff0c;模型给出符合人类偏好的奖励数值&#xff0c;这个奖励数值…

亚马逊云科技中国峰会:与你开启云计算与前沿技术的探索之旅

亚马逊云科技中国峰会&#xff1a;与你开启云计算与前沿技术的探索之旅 Hello,我是科技博主Maynor&#xff0c;非常高兴地向你们推荐亚马逊云科技中国峰会&#xff0c;这是一场将于 5 月 29 日至 30 日在上海世博中心举办的科技盛会&#xff0c;如果你对云计算、行业发展新趋势…

IDEA 使用maven编译,控制台出现乱码问题的解决方式

前言 使用idea进行maven项目的编译时&#xff0c;控制台输出中文的时候出现乱码的情况。 通常出现这样的问题&#xff0c;都是因为编码格式不一样导致的。既然是maven出的问题&#xff0c;我们在idea中查找下看可以如何设置文件编码。 第一种方式 在pom.xml文件中&#xff…