使用Roles模块搭建LNMP架构

使用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 nginxservice: name={{service}}  state=reloaded

在这里插入图片描述

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

vim /etc/ansible/playbook/roles/nginx/tasks/init.yml
- name: disable firewalldservice: name=firewalld  state=stopped  enabled=noignore_errors: True- name: disable selinuxshell: "/usr/sbin/setenforce 0"ignore_errors: true

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

- include: "init.yml"- name: copy nginx yum repo filecopy: src=nginx.repo  dest=/etc/yum.repos.d/- name: install nginxyum: name={{pkg}}  state=latest- name: copy index.phpcopy: src=index.php  dest={{root_dir}}- name: copy nginx template configuration filetemplate: src=default.conf.j2  dest=/etc/nginx/conf.d/default.confnotify: reload nginx- name: start nginxservice: 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 phpservice: name={{service}} state=reloaded

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

/etc/ansible/playbook/roles/php/tasks]# vim main.yml - name: install yum reposhell: "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 phpwith_items:- php72w- php72w-cli- php72w-common- php72w-devel- php72w-embedded- php72w-gd- php72w-mbstring- php72w-pdo- php72w-xml- php72w-fpm- php72w-mysqlnd- php72w-opcacheyum: name={{item}}- name: create php useruser: name={{user_name}}- name: crate web root dirfile: name={{root_dir}} state=directory- name: copy index.phpcopy: src=index.php dest={{root_dir}}- name: modify php configuration filereplace: path=/etc/php.ini  regexp=";date.timezone ="  replace="date.timezone = Asia/Shanghai"notify: reload php- name: modify username and groupname in www.confreplace: path=/etc/php-fpm.d/www.conf  regexp="apache"  replace="{{user_name}}"notify: reload php- name: modify listen addr in www.confreplace: 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.confreplace: path=/etc/php-fpm.d/www.conf  regexp="127.0.0.1"  replace="{{remote_addr}}"notify: reload php- name: start phpservice: 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 mysqlservice: name={{service}} state=reloaded

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

vim /etc/ansible/playbook/roles/mysql/tasks/main.yml - name: remove mariadbshell: yum remove mariadb* -yignore_errors: True- name: install yum reposhell: "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 gpgcheckreplace: path=/etc/yum.repos.d/mysql-community.repo  regexp="gpgcheck=1"  replace="gpgcheck=0"- name: install mysqlyum: name=mysql-server state=latest- name: start mysqlservice: name={{service}} state=started enabled=yes- name: make passwd.shscript: /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 playhosts: webserversremote_user: rootroles:- nginx- name: php playhosts: phpserversremote_user: rootroles:- php- name: mysql playhosts: mysqlserversremote_user: rootroles:- mysql

在这里插入图片描述

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

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

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

相关文章

【Python】jupyter Linux服务器使用

文章目录 环境使用访问 环境 pip install jupyter 使用 在你想访问的目录下执行&#xff1a; jupyter notebook --ip0.0.0.0jupyter 给出提示&#xff1a; [I 2023-07-28 14:32:43.589 ServerApp] Package notebook took 0.0000s to import [I 2023-07-28 14:32:43.597 Ser…

react中的高阶组件理解与使用

一、什么是高阶组件&#xff1f; 其实就是一个函数&#xff0c;参数是一个组件&#xff0c;经过这个函数的处理返回一个功能增加的组件。 二、代码中如何使用 1&#xff0c;高级组件headerHoc 2&#xff0c;在普通组件header中引入高阶组件并导出高阶组件&#xff0c;参数是普…

BUUCTF题目Crypto部分wp(持续更新)

Url编码 题目密文是%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d&#xff0c;根据题目名字使用python的urllib模块解码即可。flag{and 11} from urllib.parse import quote, unquotec r%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d m unquote(c, encodingutf-8) print(m)c2 quot…

Leetcode | DP | 338. 198. 139.

338. Counting Bits 重点在于这张图。 从i1开始&#xff0c;dp的array如果i是2的1次方之前的数&#xff0c;是1 dp[i - 2 ^ 0]; 如果i是2的2次方之前的数&#xff0c;是1 dp[i - 2 ^ 1]; 如果i是2的3次方之前的数&#xff0c;是1 dp[i - 2 ^ 2]; 198. House Robber 如果…

zookeeper学习(三)基础数据结构

数据模型 在 zookeeper 中&#xff0c;可以说 zookeeper 中的所有存储的数据是由 znode 组成的&#xff0c;节点也称为 znode&#xff0c;并以 key/value 形式存储数据。 整体结构类似于 linux 文件系统的模式以树形结构存储。其中根路径以 / 开头。 进入 zookeeper 安装的 …

如何查看 Chrome 网站有没有前端 JavaScript 报错?

您可以按照以下步骤在Chrome中查看网站是否存在前端JavaScript报错&#xff1a; 步骤1&#xff1a;打开Chrome浏览器并访问网站 首先&#xff0c;打开Chrome浏览器并访问您想要检查JavaScript报错的网站。 步骤2&#xff1a;打开开发者工具 在Chrome浏览器中&#xff0c;按…

【机器学习】Gradient Descent for Logistic Regression

Gradient Descent for Logistic Regression 1. 数据集&#xff08;多变量&#xff09;2. 逻辑梯度下降3. 梯度下降的实现及代码描述3.1 计算梯度3.2 梯度下降 4. 数据集&#xff08;单变量&#xff09;附录 导入所需的库 import copy, math import numpy as np %matplotlib wi…

OpenFeign 个性化_注解配置_日志_请求拦截_请求透传_FastJson解析

相关组件概念 Ribbon&#xff1a; Ribbon 是 Netflix开源的基于 HTTP 和 TCP 等协议负载均衡组件&#xff1b;Ribbon 可以用来做客户端负载均衡&#xff0c;调用注册中心的服务&#xff1b; Feign&#xff1a; Feign 是 Spring Cloud 组件中的一个轻量级 RESTful 的 HTTP 服务客…

CompletableFuture 详解

目录 简单介绍 常见操作 创建 CompletableFuture new 关键字 静态工厂方法 处理异步结算的结果 简单介绍 CompletableFuture 同时实现了 Future 和 CompletionStage 接口。 public class CompletableFuture<T> implements Future<T>, CompletionStage<T…

Android 11.0 系统限制上网系统之iptables用IOemNetd实现app上网白名单的功能实现

1.前言 在10.0的系统rom定制化开发中,对于系统限制网络的使用,在system中netd网络这块的产品需要中,会要求设置app上网白名单的功能, liunx中iptables命令也是比较重要的,接下来就来在IOemNetd这块实现app上网白名单的的相关功能,就是在 系统中只能允许某个app上网,就是…

springboot通过接口执行本地shell脚本

首先创建springboot项目 shell脚本 #!/bin/shecho Hello World&#xff01;然后编写执行shell脚本的util类 import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List;pub…

selenium-web自动化测试

一、selenium环境部署 1.准备chrome浏览器&#xff08;其他浏览器也行&#xff09; 2.准备chrome驱动包 步骤一&#xff1a;查看自己的谷歌浏览器版本(浏览器版本和驱动版本一定要对应) 步骤二&#xff1a;下载对应的驱动包, 下载路径 : ChromeDriver - WebDriver for Chrom…

初识IDA工具

工具 IDA工具 链接&#xff1a;https://pan.baidu.com/s/1Zgzpws6l2M5j1wkCZHrffw 提取码&#xff1a;ruyu 里面有安装密码&#xff1a; PassWord:qY2jts9hEJGy 里面分析32位和64位启动快捷方式 打开IDA工具&#xff0c;拖入so文件 ARM AND THUMB MODE SWITCH INSTRUCTION…

PyTorch BatchNorm2d详解

通常和卷积层&#xff0c;激活函数一起使用

视频传输网安全防护体系

在电脑、手机信息安全保护得到广泛关注和普及的今天&#xff0c;监控摄像头等设备的安全防护仍为大众所忽略&#xff0c;大量视频监控网络的前端设备和数据没有任何保护&#xff0c;完全暴露在互联网中。 前端IP接入设备与后端业务系统处于直连状态&#xff0c;一旦有攻击者或…

vue3项目中数字滚动效果

前言&#xff1a; 目前大多数新的vue项目都采用了vue3去写&#xff0c; 在最近的项目中&#xff0c;需要展示数字滚动的效果&#xff0c;我就想到了之前用多的vue-count-to数字滚动插件&#xff0c;发现这个插件只使用于vue2项目&#xff0c;在vue3项目中并不试用。。。由于自己…

spring boot项目整合spring security权限认证

一、准备一个spring boot项目 1、引入基础依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.sp…

自定义类型讲解

&#x1f495;痛苦难道是白忍受的吗&#xff1f;&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;自定义类型讲解 一.结构体 定义&#xff1a; 数组&#xff1a;多组相同类型元素的集合 结构体&#xff1a;多组不同类型元素的集合-->管理多组不同类型数据…

计算机视觉实验:人脸识别系统设计

实验内容 设计计算机视觉目标识别系统&#xff0c;与实际应用有关&#xff08;建议&#xff1a;最终展示形式为带界面可运行的系统&#xff09;&#xff0c;以下内容选择其中一个做。 1. 人脸识别系统设计 (1) 人脸识别系统设计&#xff08;必做&#xff09;&#xff1a;根据…

tinkerCAD案例:24. Ruler - Measuring Lengths 标尺 -量勺

tinkerCAD案例&#xff1a;24. Ruler - Measuring Lengths 标尺 - 测量长度 Project Overview: 项目概况&#xff1a; A machine shop, where any idea can become a reality, can cost millions and million of dollars. Still, the most important tool in the shop is the…