ansible-playbook实操之一键搭建lnmp+wordpress

目录

1、架构和准备:

2、配置nginx角色:

3、配置mariadb角色:

4、配置php角色:

5、配置完之后,写脚本调用roles

6、配置完之后浏览器搭建wordpress:


1、架构和准备:

操控节点:20.0.0.22 ansible

搭建节点:20.0.0.61

关闭防火墙和安全机制

在主节点ansible中配置roles

cd /etc/ansible/roles
mkdir nginx mariadb php
mkdir nginx/tasks
mkdir mariadb/tasks
mkdir php/tasks

2、配置nginx角色:

cd /etc/ansible/roles/nginx/tasks
vim main.yml

- name: install nginx
  yum:
    name: nginx
#下载nginx

- name: copy nginx file
  copy:
    src: /opt/nginx.conf
    dest: /etc/nginx/
#将配置好的nginx.从文件copy到目标节点

- name: Download WordPress
  get_url:
    url: https://wordpress.org/latest.tar.gz
    dest: /opt/latest.tar.gz

- name: Extract WordPress
  command: "tar -xf /opt/latest.tar.gz -C /usr/share/nginx/html/"

- name: Set permissions for WordPress
  command: "chmod -R 777 /usr/share/nginx/html/wordpress"
#下载wordpress,解压,放入html下,提供访问

- name: start nginx
  service:
    name: nginx
    state: started
#启动nginx

nginx的配置文件放在/opt下面:

在原先nginx.conf的基础上加入:

location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
}
location / {
            root   html;
            index  index.html index.htm index.php;
        }

FastCGI是一种用于连接Web服务器(如Nginx、Apache等)与应用程序(如PHP、Python、Ruby等)的通信协议。它的作用是提供一种高效、可靠、灵活的方式来处理动态网页内容的请求,使Web服务器能够与动态应用程序进行交互。

location ~ \.php$ { ... }:这是一个正则表达式匹配的location块,用于匹配以.php为后缀的请求。

root html;:设置服务器根目录为html,即将从这个目录开始查找文件。

fastcgi_pass 127.0.0.1:9000;:设置FastCGI服务器的地址和端口号。

在这里,FastCGI服务器设置为本地地址(127.0.0.1)的9000端口。通常,这是PHP-FPM的监听地址和端口。

fastcgi_index index.php;:指定当请求目录时默认访问的文件名。

在这里,如果请求目录时,默认访问的文件为index.php。

fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;:

设置FastCGI参数SCRIPT_FILENAME的值,指定PHP脚本的文件路径。

$fastcgi_script_name是FastCGI服务器传递给PHP-FPM的变量,

表示当前请求的脚本路径。这里将根目录设置为/usr/local/nginx/html,

以匹配Nginx配置文件中root指令的值。

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;:

这是另一种设置SCRIPT_FILENAME的方式,使用了$document_root变量。

$document_root表示Nginx中root指令指定的值,即服务器根目录。

这里将$document_root$fastcgi_script_name设置为SCRIPT_FILENAME的值,

以便传递给PHP-FPM。

include fastcgi_params;:包含fastcgi_params文件中的FastCGI参数。

这里使用include指令,将fastcgi_params中的内容合并到当前配置中。

3、配置mariadb角色:

vim /etc/ansible/roles/mariadb/tasks/main.yml

- name: install mariadb
  yum: 
    name:
     - mariadb 
     - mariadb-server
#下载mariadb和其server

- name: start it
  service: name=mariadb state=started
#启动mariadb

下载完mariadb之后要进入mysql中给wordpress创数据库和给权限。

ansible不支持交互式的命令,所以只能远程登录mysql操作:

但远程的前提是数据库中给权限:

所以这里mariadb给权限,貌似不能远程操作。。。

这里我们坐高铁去现场给权限:

进入容器给权限:

create database wordpress;
grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by '123456';
flush privileges;

给完权限打车回家,继续远程:

4、配置php角色:

wordpress6.4.2需要最少php7.0以上才能支持

yum仓库中的php版本太低

这里我们利用remi仓库下载php7.1.1:

vim /etc/ansible/roles/php/tasks/main.yml

- name: remi install
  yum:
    name: https://rpms.remirepo.net/enterprise/remi-release-7.rpm
    validate_certs: no
#添加 REMI 存储库,validate_certs: no表示禁用 SSL 证书验证,不然安全机制会禁止下载

- name: remi start
  command:
    cmd: yum-config-manager --enable remi-php71
#启动remi仓库

- name: php install
  yum:
    name:
      - php
      - php-fpm
      - php-mysqlnd.x86_64
#下载php、php-fpm和php和mysql扩展

- name: php start
  service:
    name: php-fpm
    state: started
#启动php-fpm

5、配置完之后,写脚本调用roles

vim /etc/ansibel/roles/site.yml

- hosts: 20.0.0.61
  remote_user: root
  roles:
   - nginx
   - mariadb
   - php

启动ansible-playbook

cd /etc/ansibel/roles
ansible-playbook site.yml

6、配置完之后浏览器搭建wordpress:

http://20.0.0.61/wordpress/index.php

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

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

相关文章

Echarts社区推荐

Apache Echarts官方示例中,有的demo并不能完全符合我们的需求,下面推荐几个Echarts社区,以便快速搭建项目。 1. isqqw 官方地址 :https://www.isqqw.com/ 2. makepie 官方地址 :https://www.makeapie.cn/echarts 3. P…

20231224解决outcommit_id.xml1 parser error Document is empty的问题

20231224解决outcommit_id.xml1 parser error Document is empty的问题 2023/12/24 18:13 在开发RK3399的Android10的时候,出现:rootrootrootroot-X99-Turbo:~/3TB/Rockchip_Android10.0_SDK_Release$ make installclean PLATFORM_VERSION_CODENAMEREL…

形态学处理

形态学处理的相关内容 (1)基于图像形态进行处理的一般方法 (2)这些处理方法基本是对二进制图像进行处理 (3)卷积核决定着图像处理后的结果 形态学图像处理 (1)腐蚀(…

测试C#使用AForge从摄像头获取图片

百度“C# 摄像头”关键词,从搜索结果来看,使用OpenCV、AForge、window动态链接库获取摄像头数据的居多,本文学习基于Aforge.net连接摄像头并从摄像头获取图片的基本方法。   AForge相关包(尤其是相关的控件)主要针对…

【AIPRM】-高效管理Prompt模板,让你与众多AI互动更加流畅

关于AIPRM 链接: AIPERM AIPRM:Google 推出的AI提示管理工具。它提供多样化的Prompt模板,能帮助你与各种AI进行更加高效的互动。 登录 在主页点击“免费安装”–>Add to Chrome。 安装完成后,你在新的ChatGPT界面里面,能…

【四】记一次关于架构设计从0到1的讨论

记一次关于架构设计从0到1的讨论 简介: 在一次面试中和面试官讨论起来架构设计这个话题,一聊就不知不觉一个小时了,感觉意犹未尽。现在回想起来感觉挺有意思的,古人说独学而无友则孤陋而寡闻,的确是这样的&#xff0c…

基于SSM的搬家预约系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的搬家预约系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring Spri…

css的定位

为什么需要定位? 场景: 某个元素可以自由的在一个盒子内移动位置,并且压住其他盒子当我们滚动窗口的时候,盒子是固定屏幕某个位置的。 这二个需求,使用标准流和浮动的方式是无法实现的或者是不容易实现,所以…

date-fns v3 发布——这个由 200 个函数组成的 JavaScript 日期处理套件

date-fns v3 发布——这个由 200 个函数组成的 JavaScript 日期处理套件已经在 TypeScript 中重写,重新引入了 String 日期参数,在 Node 上支持 ESM,并且所有函数现在都可以通过命名导出导出。 经过几个月的开发,v3 终于出来了&a…

手写Vue2源码

手写Vue2 使用rollup搭建开发环境 使用rollup打包第三方库会比webpack更轻量,速度更快 首先安装依赖 npm init -ynpm install rollup rollup-plugin-babel babel/core babel/preset-env --save-dev然后添加 rollup 的配置文件 rollup.config.js import babel f…

react 路由v6

这里是区别:V5 vs V6 这里是官网:可以查看更多高级属性 一、基本使用: 1、配置文件 src/routes/index import React from "react";const Home React.lazy(() > import("../Pages/Home")); const About React.laz…

探索 HTTP 请求的世界:get 和 post 的奥秘(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

html之如何设置音频和视频

文章目录 前言一、音频标签:audio1.audio简介2.常用属性controlsautoplayloop代码演示: 二、视频标签:video1.video2.常用的视频元素controlsautoplayloop代码演示: 总结视频元素总结音频元素总结 前言 html中插入音频和视频的方…

超维空间S2无人机使用说明书——51、使用yolov8进行目标跟踪

引言:为了提高yolo识别的质量,提高了yolo的版本,改用yolov8进行物体识别,同时系统兼容了低版本的yolo,包括基于C的yolov3和yolov4,以及yolov7。 简介,为了提高识别速度,系统采用了G…

14章总结

一.lambda表达式 1.lambda表达式简介 lambda表达式不能独立执行,因此必须实现函数式接口,并且会返回一个函数式接口的对象。 语法: ()->结果表达式 参数->结果表达式 (参数1,参数2,...,参数n)->…

老鹰目标检测数据集VOC格式60张

老鹰是天空中的王者,它们拥有极佳的飞行能力。它们能以惊人的速度在天空中翱翔,尤其擅长高空俯冲捕食。老鹰的视力非常敏锐,能够准确地发现地面上的猎物,并迅速下落抓取。它们的爪子强而有力,足以击倒比自己体型庞大的…

顶级旗舰ET9出道,蔚来还是那个「最不计成本」的中国车品牌

作者 |张祥威 编辑 |德新 2008年,李斌和新浪的曹国伟几人一起喝酒,发了第一条微博,「天冷带围巾,心冷发微博」,一晚上涨了2000多个粉丝,他偶尔还会针砭时事,很快积累了最早一波粉丝。 创立蔚来…

各种边缘检测算子的比较研究

边缘检测算子比较研究 文章目录 边缘检测算子比较研究一、引言1.1 边缘检测的重要性1.2 研究背景与意义1.3 研究目的和论文结构 二、文献综述2.1 边缘检测概述2.2 Roberts、Prewitt、Sobel、Laplacian 和 Canny 算子的理论基础和历史2.2.1 **Roberts算子:**2.2.2 **…

全部没有问题 (一.5)

java mooc练习 基础练习: 进阶练习: final 赋值一次 局部 必须赋值 抽象类 多态测试 package com.book;public class moocDraft1 {static int variable1;public void fatherMethod(moocDraft1 a){System.out.println(variable);}public static void…

leetcode——背包问题汇总

本章来汇总一下leetcode中做过的背包问题,包括0-1背包和完全背包。 背包问题的通常形式为:有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。求解将哪些物品装入背包里物品价值总和最大。0-1背包和…
最新文章