使用Roles模块搭建LNMP架构

news2024/11/16 15:48:58

使用Roles模块搭建LNMP架构

  • 1.Ansible-playbook中部署Nginx角色
  • 2.Ansible-playbook中部署PHP角色
  • 3.Ansible-playbook中部署MySQL角色
  • 4.启动安装分布式LNMP

在这里插入图片描述

1.Ansible-playbook中部署Nginx角色

创建nginx角色所需要的工作目录;

mkdir -p /etc/ansible/playbook/roles/nginx
mkdir -p /etc/ansible/playbook/roles/nginx/defaults
mkdir -p /etc/ansible/playbook/roles/nginx/files
mkdir -p /etc/ansible/playbook/roles/nginx/handlers
mkdir -p /etc/ansible/playbook/roles/nginx/meta
mkdir -p /etc/ansible/playbook/roles/nginx/tasks
mkdir -p /etc/ansible/playbook/roles/nginx/templates
mkdir -p /etc/ansible/playbook/roles/nginx/vars

在这里插入图片描述

在这里插入图片描述

制作/etc/ansible/playbook/roles/nginx/files/index.php网页目录;

vim /etc/ansible/playbook/roles/nginx/files/index.php

<?php
phpinfo();
?>

在这里插入图片描述

制作/etc/ansible/playbook/roles/nginx/files/nginx.repo源;

vim /etc/ansible/playbook/roles/nginx/files/nginx.repo
# nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

在这里插入图片描述
制作/etc/ansible/playbook/roles/nginx/handlers/main.yml文件,加载nginx的配置模板文件;

vim /etc/ansible/playbook/roles/nginx/handlers/main.yml
- name: reload nginx
  service: name={{service}}  state=reloaded

在这里插入图片描述

制作/etc/ansible/playbook/roles/nginx/tasks/init.yml文件;

vim /etc/ansible/playbook/roles/nginx/tasks/init.yml
- name: disable firewalld
  service: name=firewalld  state=stopped  enabled=no
  ignore_errors: True

- name: disable selinux
  shell: "/usr/sbin/setenforce 0"
  ignore_errors: true

在这里插入图片描述
制作/etc/ansible/playbook/roles/nginx/tasks/main.yml文件;

- include: "init.yml"

- name: copy nginx yum repo file
  copy: src=nginx.repo  dest=/etc/yum.repos.d/

- name: install nginx
  yum: name={{pkg}}  state=latest

- name: copy index.php
  copy: src=index.php  dest={{root_dir}}

- name: copy nginx template configuration file
  template: src=default.conf.j2  dest=/etc/nginx/conf.d/default.conf
  notify: reload nginx

- name: start nginx
  service: name={{service}} state=started enabled=yes

在这里插入图片描述
制作/etc/ansible/playbook/roles/nginx/templates/default.conf.j2模板文件;

vim /etc/ansible/playbook/roles/nginx/templates/default.conf.j2 

---修改2到8行-----------
       listen       {{http_port}};
       server_name  {{http_hostname}};
 
       #access_log  /var/log/nginx/host.access.log  main;
 
     location / {
         root   {{root_dir}};

---修改29到36行-----------
    location ~ \.php$ {
         root           {{root_dir}};
         fastcgi_pass   {{http_remote}};
         fastcgi_index  index.php;
         fastcgi_param  SCRIPT_FILENAME  {{root_dir}}$fastcgi_script_name;
        include        fastcgi_params;
     }

在这里插入图片描述
制作/etc/ansible/playbook/roles/nginx/vars/main.yml文件;

http_port: 192.168.80.50:80
http_hostname: www.gzy.com
root_dir: /usr/share/nginx/html
http_remote: 192.168.80.80:9000
pkg: nginx
service: nginx

在这里插入图片描述

在这里插入图片描述

2.Ansible-playbook中部署PHP角色

创建php角色所需要的工作目录;

mkdir -p /etc/ansible/playbook/roles/php
mkdir -p /etc/ansible/playbook/roles/php/defaults
mkdir -p /etc/ansible/playbook/roles/php/files
mkdir -p /etc/ansible/playbook/roles/php/handlers
mkdir -p /etc/ansible/playbook/roles/php/meta
mkdir -p /etc/ansible/playbook/roles/php/tasks
mkdir -p /etc/ansible/playbook/roles/php/templates
mkdir -p /etc/ansible/playbook/roles/php/vars

在这里插入图片描述
在这里插入图片描述

制作/etc/ansible/playbook/roles/php/files/index.php的网页文件;

vim /etc/ansible/playbook/roles/php/files/index.php 

<?php
phpinfo();
?>

在这里插入图片描述
制作/etc/ansible/playbook/roles/php/handlers/main.yml文件;

vim /etc/ansible/playbook/roles/php/handlers/main.yml 

- name: reload php
  service: name={{service}} state=reloaded

在这里插入图片描述
制作/etc/ansible/playbook/roles/php/tasks/main.yml文件;

/etc/ansible/playbook/roles/php/tasks]# vim main.yml 

- name: install yum repo
  shell: "rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm"
  ignore_errors: True

- name: install php
  with_items:
  - php72w
  - php72w-cli
  - php72w-common
  - php72w-devel
  - php72w-embedded
  - php72w-gd
  - php72w-mbstring
  - php72w-pdo
  - php72w-xml
  - php72w-fpm
  - php72w-mysqlnd
  - php72w-opcache
  yum: name={{item}}

- name: create php user
  user: name={{user_name}}

- name: crate web root dir
  file: name={{root_dir}} state=directory

- name: copy index.php
  copy: src=index.php dest={{root_dir}}

- name: modify php configuration file
  replace: path=/etc/php.ini  regexp=";date.timezone ="  replace="date.timezone = Asia/Shanghai"
  notify: reload php

- name: modify username and groupname in www.conf
  replace: path=/etc/php-fpm.d/www.conf  regexp="apache"  replace="{{user_name}}"
    notify: reload php

- name: modify listen addr in www.conf
  replace: path=/etc/php-fpm.d/www.conf  regexp="127.0.0.1:9000"  replace="{{http_port}}"
  notify: reload php

- name: modify allowed client in www.conf
  replace: path=/etc/php-fpm.d/www.conf  regexp="127.0.0.1"  replace="{{remote_addr}}"
  notify: reload php

- name: start php
  service: name={{service}} state=started enabled=yes

在这里插入图片描述
在这里插入图片描述

制作/etc/ansible/playbook/roles/php/vars/main.yml文件;

vim /etc/ansible/playbook/roles/php/vars/main.yml 

timezone: Asia/Shanghai
user_name: php
http_port: 192.168.80.80:9000
remote_addr: 192.168.80.50
root_dir: /usr/share/nginx/html
service: php-fpm

在这里插入图片描述

3.Ansible-playbook中部署MySQL角色

创建mysql角色所需要的工作目录;

mkdir -p /etc/ansible/playbook/roles/mysql
mkdir -p /etc/ansible/playbook/roles/mysql/defaults
mkdir -p /etc/ansible/playbook/roles/mysql/files
mkdir -p /etc/ansible/playbook/roles/mysql/handlers
mkdir -p /etc/ansible/playbook/roles/mysql/meta
mkdir -p /etc/ansible/playbook/roles/mysql/tasks
mkdir -p /etc/ansible/playbook/roles/mysql/templates
mkdir -p /etc/ansible/playbook/roles/mysql/vars

在这里插入图片描述

制作/etc/ansible/playbook/roles/mysql/handlers/main.yml文件;

vim /etc/ansible/playbook/roles/mysql/handlers/main.yml 

-
name: reload mysql
  service: name={{service}} state=reloaded

在这里插入图片描述
制作/etc/ansible/playbook/roles/mysql/tasks/main.yml文件;

vim /etc/ansible/playbook/roles/mysql/tasks/main.yml 

- name: remove mariadb
  shell: yum remove mariadb* -y
  ignore_errors: True

- name: install yum repo
  shell: "wget https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm && rpm -ivh mysql57-community-release-el7-11.noarch.rpm"
  ignore_errors: True

- name: modify gpgcheck
  replace: path=/etc/yum.repos.d/mysql-community.repo  regexp="gpgcheck=1"  replace="gpgcheck=0"

- name: install mysql
  yum: name=mysql-server state=latest

- name: start mysql
  service: name={{service}} state=started enabled=yes

- name: make passwd.sh
  script: /etc/ansible/playbook/roles/mysql/files/passwd.sh

在这里插入图片描述
制作/etc/ansible/playbook/roles/mysql/vars/main.yml文件;

vim /etc/ansible/playbook/roles/mysql/vars/main.yml 

service: mysqld.service

在这里插入图片描述

4.启动安装分布式LNMP

vim /etc/ansible/playbook/lnmp.yml 

- name: nginx play
  hosts: webservers
  remote_user: root
  roles:
  - nginx

- name: php play
  hosts: phpservers
  remote_user: root
  roles:
  - php


- name: mysql play
  hosts: mysqlservers
  remote_user: root
  roles:
  - mysql

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

剖析 Kubernetes 控制器:Deployment、ReplicaSet 和 StatefulSet 的功能与应用场景

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

【kubernetes】k8s单master集群环境搭建及kuboard部署

k8s入门学习环境搭建 学习于许大仙: https://www.yuque.com/fairy-era k8s官网 https://kubernetes.io/ kuboard官网 https://kuboard.cn/ 基于k8s 1.21.10版本 前置环境准备 一主两从&#xff0c;三台虚拟机 CPU内存硬盘角色主机名IPhostname操作系统4C16G50Gmasterk8s-mast…

JSON动态生成表格

<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><script>var fromjava"{\"total\":3,\"students\":[{\"name\":\"张三\",\&q…

哔哩哔哩缓存转码|FFmpeg将m4s文件转为mp4|PHP自动批量转码B站视频

window下载安装FFmpeg 打开ffMpeg官网选择window>Windows builds from gyan.dev 打开https://www.gyan.dev/ffmpeg/builds/ 这里是上面提取的下载链接如果过期不能用自己去官网下 配置FFmpeg环境变量 上面下载的FFmpeg是绿色软件&#xff0c;下载解压到你的常用软件安装目…

配置IPv6 over IPv4 GRE隧道示例

组网需求 如图1&#xff0c;两个IPv6网络分别通过SwitchA和SwitchC与IPv4公网中的SwitchB连接&#xff0c;客户希望两个IPv6网络中的PC1和PC2实现互通。 其中PC1和PC2上分别指定SwitchA和SwitchC为自己的缺省网关。 图1 配置IPv6 over IPv4 GRE隧道组网图 配置思路 要实现I…

【LeetCode每日一题合集】2023.7.24-2023.7.30(TODO Lazy 线段树)

文章目录 771. 宝石与石头代码1——暴力代码2——位运算集合⭐&#xff08;英文字母的long集合表示&#xff09; 2208. 将数组和减半的最少操作次数&#xff08;贪心 优先队列&#xff09;2569. 更新数组后处理求和查询⭐⭐⭐⭐⭐&#xff08;线段树&#xff09;2500. 删除每行…

这所985很保护一志愿,每年招150+!非常稳定!

一、学校及专业介绍 中国海洋大学&#xff08;Ocean University of China&#xff0c;OUC&#xff09;&#xff0c;位于山东省青岛市&#xff0c;是中华人民共和国教育部直属的综合性全国重点大学&#xff0c;位列国家“双一流”、“985工程”、“211工程”重点建设高校。 1.1…

CHI中的error处理

Error Handling Error types 包含两种sub-packet级别的error, 和两种packe级别的error; Packet level error Data Error, DERR □ 访问的地址是正确的&#xff0c;但是访问的数据有错误&#xff1b;通常是在数据崩溃的时候使用&#xff0c;例如ECC&#xf…

三分钟白话RocketMQ系列—— 核心概念

目录 关键字摘要 Q1&#xff1a;RocketMQ是什么&#xff1f; Q2: 作为消息中间件&#xff0c;RocketMQ和kafka有什么区别&#xff1f; Q3: RocketMQ的基本架构是怎样的&#xff1f; Q4&#xff1a;RocketMQ有哪些核心概念&#xff1f; 总结 RocketMQ是一个开源的分布式消…

iOS--Runloop

Runloop概述 一般来说&#xff0c;一个线程一次只能执行一个任务&#xff0c;执行完成后线程就会退出。就比如之前学OC时使用的命令行程序&#xff0c;执行完程序就结束了。 而runloop目的就是使线程在执行完一次代码之后不会结束程序&#xff0c;而是使该线程处于一种休眠的状…

初步了解c#编程语言--(1)

初识c#编程语言 一、见识c#语言编写的各类应用程序 关于用c#语言编写的各类应用程序有以下几种&#xff1a; 1.Console 在编写Console程序时&#xff0c;要注意创建项目时&#xff0c;是选择控制台应用程序&#xff08;Console Application&#xff09;&#xff0c;在这里…

【计算机视觉】BLIP:源代码示例demo(含源代码)

文章目录 一、Image Captioning二、VQA三、Feature Extraction四、Image-Text Matching 一、Image Captioning 首先配置代码&#xff1a; import sys if google.colab in sys.modules:print(Running in Colab.)!pip3 install transformers4.15.0 timm0.4.12 fairscale0.4.4!g…

linux(进程)[6]

管理概念 先描述&#xff0c;再组织 进程 启动一个软件就相当于启动了一个进程 Linux下执行一条命令就在系统层面创建了一个进程&#xff01;&#xff01; 如何管理 进程对应的代码和数据 进程对应的PCB结构体 PCB&#xff08;process control block&#xff09; 在Linu…

Java反射机制的详细讲解

目录 1.反射机制是什么&#xff1f; 2.反射机制能干什么&#xff1f; 3.反射相关的类 ​编辑 4.Class类(反射机制的起源 ) 5.反射机制相关的API 1.(重要)常用获得类相关的方法 2.常用获得类中属性相关的方法(以下方法返回值为Field相关 3.(了解)获得类中注解相关的方法…

iOS开发-实现3DTouch按压App快捷选项shortcutItems及跳转功能

iOS开发-实现3DTouch按压App快捷选项shortcutItems及跳转功能 App的应用图标通过3D Touch按压App图标&#xff0c;会显示快捷选项&#xff0c;点击选项可快速进入到App的特定页面。 这里用到了UIApplicationShortcutItem与UIMutableApplicationShortcutItem 一、效果图 这里…

VS附加到进程调试

操作&#xff1a; 要附加到进程中调试外部可执行文件&#xff0c;您需要使用Visual Studio的“调试附加”功能。以下是附加到进程中调试外部可执行文件的步骤&#xff1a; 打开您要调试的源代码文件或可执行文件。打开Visual Studio。选择“调试”菜单&#xff0c;然后选择“…

三种无监督学习方法用于肿瘤病理图像预测任务

这里写自定义目录标题 BYOLBYOL描述基本思路示意图合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必…

大数据_Hadoop_Parquet数据格式详解

之前有面试官问到了parquet的数据格式&#xff0c;下面对这种格式做一个详细的解读。 参考链接 &#xff1a; 列存储格式Parquet浅析 - 简书 Parquet 文件结构与优势_parquet文件_KK架构的博客-CSDN博客 Parquet文件格式解析_parquet.block.size_davidfantasy的博客-CSDN博…

day16 | 513.找树左下角的值 112.路径总和 106.从中序与后序遍历序列构造二叉树

文章目录 一、找树左下角的值二、路径总和三、从中序与后序遍历序列构造二叉树 一、找树左下角的值 513.找树左下角的值 暴力解法 class Solution { public:int findBottomLeftValue(TreeNode *root){// 第一眼想到的就是层序遍历&#xff0c;取最后一层的第一个值即可queue…

Vue系列第六篇:axios封装,登录逻辑优化,404页面实现,Go语言跨域处理

第五篇利用vue实现了登录页面&#xff0c;用go语言开发了服务端并最后在nginx上进行了部署。本篇将axios封装&#xff0c;登录逻辑优化&#xff0c;404页面实现。 目录 1.前端 1.1代码结构 1.2源码 2.服务端 2.1源码 3.运行效果 4.注意事项 4.1webpack.config.js和vue…