目录
操控节点: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
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中的内容合并到当前配置中。
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;
给完权限打车回家,继续远程:
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
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
http://20.0.0.61/wordpress/index.php