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 nginxyum:name: nginx
#下载nginx- name: copy nginx filecopy:src: /opt/nginx.confdest: /etc/nginx/
#将配置好的nginx.从文件copy到目标节点- name: Download WordPressget_url:url: https://wordpress.org/latest.tar.gzdest: /opt/latest.tar.gz- name: Extract WordPresscommand: "tar -xf /opt/latest.tar.gz -C /usr/share/nginx/html/"- name: Set permissions for WordPresscommand: "chmod -R 777 /usr/share/nginx/html/wordpress"
#下载wordpress,解压,放入html下,提供访问- name: start nginxservice:name: nginxstate: 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 mariadbyum: name:- mariadb - mariadb-server
#下载mariadb和其server- name: start itservice: 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 installyum:name: https://rpms.remirepo.net/enterprise/remi-release-7.rpmvalidate_certs: no
#添加 REMI 存储库,validate_certs: no表示禁用 SSL 证书验证,不然安全机制会禁止下载- name: remi startcommand:cmd: yum-config-manager --enable remi-php71
#启动remi仓库- name: php installyum:name:- php- php-fpm- php-mysqlnd.x86_64
#下载php、php-fpm和php和mysql扩展- name: php startservice:name: php-fpmstate: started
#启动php-fpm

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

vim /etc/ansibel/roles/site.yml- hosts: 20.0.0.61remote_user: rootroles:- 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.mzph.cn/news/354941.shtml

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

相关文章

pivot 与 unpivot 函数是SQL05新提供的2个函数

pivot 与 unpivot 函数是SQL05新提供的2个函数 ------------------------------------------------------------------------------ pivot函数: create table test(id int,name varchar(20),quarter int,profile int)insert into test values(1,a,1,1000)insert i…

python SimpleHTTPServer 快速共享文件

简单介绍 通过一个python命令快速共享文件给他人。 操作步骤 1、打开cmd命令行,切换到需要共享文件的目录,执行命令 python -m SimpleHTTPServer 。 2、打开浏览器,在地址栏中输入http://10.10.11.164:8000或者http://localhost:8000/可以看到…

mysql数据库设计实现工作流_工作流activiti部署到数据库(1)

1.工作流定义(workflow):指"业务过程的部分或整体在计算机应用环境下的自动化".普通框架要有一个请假单,要有一个字段来标识请假单的状态,至少有三个,还有请假单的状态是走到那个经理审批还是老板审批,这个时候不便管理.BPM:业务流程管理框架,是用来管理流程的框架.B…

abd.exe 需要下java吗_Abd.exe文件下载|

abd.exe在哪个位置?abd.exe是一款很重要的电脑文件,如果这个文件丢失了,电脑部分程序将会无法正常运行,所以大家应该重视这类文件,小编已经将这个文件打包好了,欢迎大家来当易网下载。exe文件简介EXE File …

Spark面对OOM问题的解决方法及优化总结 (转载)

Spark面对OOM问题的解决方法及优化总结 (转载) 转载地址: http://blog.csdn.net/yhb315279058/article/details/51035631 Spark中的OOM问题不外乎以下两种情况map执行中内存溢出shuffle后内存溢出map执行中内存溢出代表了所有map类型的操作,包括&#xf…

通过此注释改善您的JUnit体验

JUnit可能是所有Java项目中90%的一部分。 令人兴奋的是,我们很快将拥有支持Java 8的JUnit 5 。 我们最近在博客上发表了一项改进 。 回到JUnit 4领域,有一个小技巧,我只能建议您进行所有单元测试。 只需在此处添加这个小注释&…

jdeveloper_JDeveloper中的Java反编译器

jdeveloperJava Decompiler是一个独立的图形实用程序,显示“ .class”文件的Java源代码。 下面是Java Decompiler程序的快照 您可以从这里下载该程序 我将说明如何在Jdeveloper中将此程序用作外部工具 Java Decompiler和Jdeveloper之间的集成 您可以将此程序添加…

文件上传 java 完美,vue+java实现文件上传(excel等),会出现跨域问题,直接用form表单提交就不会有问题了(new FormData())...

vuejava实现文件上传(excel等),会出现跨域问题,直接用form表单提交就不会有问题了(new FormData())地址:https://www.cnblogs.com/muscles/p/9503103.html一:首先说一下什么是跨域,跨域就是解决浏览器同源策略的问题。…

php private方法,php如何调用private方法

php调用private方法:首先定义一个parent类;然后在类的内部使用私有函数;接着实例化parent类,让其变成一个对象并赋值给“$obj”即可。将一个类实例化后就变成对象,私有函数只能在类内部使用,不能在类外&…

java flux api,SpringBoot学习系列-WebFlux REST API 全局异常处理

本文内容为什么要全局异常处理?WebFlux REST 全局异常处理实战小结摘录:只有不断培养好习惯,同时不断打破坏习惯,我们的行为举止才能够自始至终都是正确的。一、为什么要全局异常处理?前后端分离开发,一般提…

mvvm 后端_ZK实际应用:MVVM –与ZK客户端API一起使用

mvvm 后端在以前的文章中,我们已经使用ZK的MVVM实现了以下功能: 将数据加载到表中 使用表单绑定保存数据 删除条目并以编程方式更新视图 ZK MVVM和ZK MVC实现方式之间的主要区别是,我们不直接在controller(ViewModel&#xff0…

微信分享朋友圈固定缩略图 php,微信转发或分享朋友圈带缩略图、标题和描述的实现方法...

自己做博客以来,很早之前分享过文章至朋友圈,那个时候分享过去的文章自动获取页面的比例适合的图片为所缩略图:后期就很少分享至朋友圈, 近来分享文章给朋友后,发现不带缩略图和简介了,觉得这样很不好看&am…

java监控rabbitMq服务状态,SpringCloud-Turbine【RabbitMQ服务监控】

前面我们介绍了通过turbine直接聚合多个服务的监控信息,实现了服务的监控,但是这种方式有个不太好的地方就是turbine和服务的耦合性太强了,针对这个问题,我们可以将服务的监控消息发送到RabbitMQ中,然后turbine中Rabbi…

jpa 查询 列表_终极JPA查询和技巧列表–第1部分

jpa 查询 列表我们可以在Internet上找到一些JPA“如何做”,在本博客的此处,教您如何使用JPA执行多项任务。 通常,我看到有人问有关使用JPA进行查询的问题。 通常,为了回答此类问题,提供了几个链接以尝试找到该问题的解…

windows下php swoole扩展,Windows 下安装 swoole 图文教程(php)

Windows 下安装 swoole 具体步骤:Swoole,原本不支持在Windows下安装的,所以我们要安装Cygwin来使用。在安装Cygwin下遇到了很多坑,百度经验上的文档不是很全,所以我把自己安装Cygwin和Swoole写下来相当于对自己的沉淀吧。首先准备…

新CalendarFX视图:MonthGridView!

我和我的团队最近开始为CalendarFX创建新视图,其最初目标是在垂直列中显示整年。 该视图的名称是MonthGridView。 像往常一样,编码时目标略有变化。 该视图现在可以显示任意数量的月份,并且可以在前面或后面添加额外的月份。 现在&#xff0c…

php如何和c进行数据交换,PHP与 后台c交换数据 | 学步园

为什么要用json跟XML相比,JSON的优势在于格式简洁短小,特别是在处理大量复杂数据的时候,这个优势便显得非常突出。从各浏览器的支持来看,JSON解决了因不同浏览器对XML DOM解析方式不同而引起的问题。目前,JSON已经成为…

硒测试的干净架构

在这篇博客文章中,我想介绍一种具有最佳设计模式的Selenium测试的简洁架构:页面对象,页面元素(通常称为HTML包装器)和自行开发的非常小巧的框架。 该体系结构不限于示例中使用的Java,也可以以任何其他语言应…

ThinkPHP5 封装邮件发送服务(可发附件)

1、Composer 安装 phpmailer 1composer require phpmailer/phpmailer2、ThinkPHP 中封装邮件服务类 我把它封装在扩展目录 extend/Mail.php 文件里,内容如下: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748…

密码学笔记——eval(function(p,a,c,k,e,d) 加密破解

密码学笔记——eval(function(p,a,c,k,e,d) 的加密破解 例题: 小明某天在看js的时候,突然看到了这么一段代码,发现怎么也理不出代码逻辑,你能帮帮他吗? 格式:SimCTF{} eval(function(p,a,c,k,e,d){efunctio…