当前位置: 首页 > news >正文

最新企业网站制作短链接网站

最新企业网站,制作短链接网站,怎么给网站图片加alt,方庄网站建设公司基于 Ansible Playbook 一键部署 LNMP 架构服务器 一、项目概述 本手册旨在详细说明企业内部博客平台 WordPress 的 Ansible 自动化部署方案。该方案基于 LNMP 架构(LinuxNginxMariaDBPHP),通过模块化 Playbook 实现一键部署,同时…

基于 Ansible Playbook 一键部署 LNMP 架构服务器

一、项目概述

本手册旨在详细说明企业内部博客平台 WordPress 的 Ansible 自动化部署方案。该方案基于 LNMP 架构(Linux+Nginx+MariaDB+PHP),通过模块化 Playbook 实现一键部署,同时集成生产环境所需的安全加固措施,确保部署过程标准化、可重复且符合企业安全规范。

本 Playbook 适用于 CentOS 7 操作系统,采用多 Play 结构设计,将部署过程拆分为 5 个独立阶段,便于维护、扩展和团队协作。

二、整体架构与设计思路

1. 技术架构

采用 LNMP 架构组件组合:

  • Linux:CentOS 7 操作系统作为基础环境
  • Nginx:高性能 Web 服务器,处理 HTTP 请求并解析 PHP
  • MariaDB:关系型数据库,存储 WordPress 应用数据
  • PHP-FPM:PHP 进程管理器,处理动态脚本执行

2. 模块化设计

将部署流程拆分为 5 个独立 Play,实现职责分离:

  • Play 1:数据库部署与安全初始化
  • Play 2:PHP 及相关组件部署
  • Play 3:Nginx 服务部署
  • Play 4:WordPress 应用部署与配置
  • Play 5:系统安全加固配置

3. 设计原则

  • 幂等性:所有任务均可重复执行,不会产生意外结果
  • 安全性:遵循最小权限原则,集成多层安全加固措施
  • 可维护性:通过变量集中管理配置项,便于后期调整
  • 可扩展性:模块化结构支持单独升级或替换组件

三、详细部署流程

1. 准备项目目录

[furongwang@controller ~]$ mkdir blog && cd blog[furongwang@controller blog]$ cat > ansible.cfg <<'EOF'
[defaults]
remote_user = furongwang
inventory = ./inventory
vault_password_file=./secret.txt[privilege_escalation]
become = True
become_user = root
become_method = sudo
become_ask_pass = False
EOF[furongwang@controller blog]$ echo blog ansible_host=10.1.8.12 > inventory

2. Play 1:部署数据库并进行安全初始化

功能说明

负责 MariaDB 数据库的安装、启动、安全配置及 WordPress 所需数据库和用户的创建。

核心任务
  • 安装 MariaDB 服务器包
  • 启动服务并设置开机自启
  • 数据库安全初始化:
    • 设置 root 用户密码
    • 删除匿名用户
    • 删除默认 test 数据库
  • 创建 WordPress 专用数据库(webapp_db)
  • 创建数据库用户(webapp_user)并授予必要权限
关键变量
webapp_db_name: "webapp_db"            # WordPress数据库名
webapp_db_user: "webapp_user"          # 数据库访问用户
webapp_db_password: "123456"           # 数据库用户密码
db_root_password: "123456"             # 数据库root密码

准备变量

[furongwang@controller blog]$ mkdir -p host_vars/blog
[furongwang@controller blog]$ cat > host_vars/blog/db.yaml <<EOF
webapp_db_name: "webapp_db"
webapp_db_user: "webapp_user"
webapp_db_password: "123456"
db_root_password: "123456"
EOF[furongwang@controller blog]$ echo 123 > secret.txt[furongwang@controller blog]$ ansible-vault encrypt host_vars/blog/db.yaml
Encryption successful

注意事项

  • 生产环境中密码需使用ansible-vault加密存储
  • 数据库用户仅授予对 webapp_db 的权限,且限制为本地访问
剧本内容

创建play1.yml

---
- name: Play 1. 部署数据库并进行安全初始化hosts: bloggather_facts: yesbecome: yestasks:- name: 安装MariaDB服务器yum:name: mariadb-server,python2-PyMySQLstate: present- name: 启动MariaDB服务并设置开机自启service:name: mariadbstate: startedenabled: yes- name: 数据库安全初始化 - 设置 root@localhost 密码shell: mysqladmin password {{ db_root_password }}ignore_errors: yes- name: 数据库安全初始化 - 设置其他 root@other 密码mysql_user:name: rootpassword: "{{ db_root_password }}"host: "{{ item }}"state: presentlogin_user: rootlogin_password: "{{ db_root_password }}"with_items:- "{{ ansible_fqdn }}"- 127.0.0.1- ::1- name: 数据库安全初始化 - 删除匿名用户mysql_user:name: ""host_all: yesstate: absentlogin_user: rootlogin_password: "{{ db_root_password }}"- name: 数据库安全初始化 - 删除test数据库mysql_db:name: teststate: absentlogin_user: rootlogin_password: "{{ db_root_password }}"- name: 创建WordPress专用数据库mysql_db:name: "{{ webapp_db_name }}"state: presentlogin_user: rootlogin_password: "{{ db_root_password }}"- name: 创建数据库用户并授权(仅本地访问)mysql_user:name: "{{ webapp_db_user }}"password: "{{ webapp_db_password }}"priv: "{{ webapp_db_name }}.*:ALL"host: "localhost"state: presentlogin_user: rootlogin_password: "{{ db_root_password }}"

3. Play 2:部署 PHP 及相关组件

功能说明

安装 PHP 解释器、PHP-FPM 进程管理器及 WordPress 所需的 PHP 扩展模块。

核心任务
  • 安装 PHP 核心组件:php、php-fpm
  • 安装必要扩展:php-mysqlnd(数据库连接)、php-gd(图片处理)等
  • 启动 PHP-FPM 服务并设置开机自启
扩展说明
  • php-mysqlnd 替代传统 php-mysql,提供更好的性能和兼容性
  • 所有扩展均为 WordPress 运行必需组件,确保功能完整性
剧本内容

创建play2.yml

---
- name: Play 2. 部署PHP及相关组件hosts: blogbecome: yestasks:- name: 安装PHP、PHP-FPM及依赖扩展yum:name:- php- php-fpm- php-mysqlnd  # 替代php-mysql,适配新版PHP- php-gd       # 处理图片上传- php-xml      # XML解析支持- php-mbstring # 多字节字符串支持state: present- name: 启动PHP-FPM服务并设置开机自启service:name: php-fpmstate: startedenabled: yes

4. Play 3:部署 Nginx 服务

功能说明

安装并启动 Nginx 服务,作为 Web 服务器处理 HTTP 请求。

核心任务
  • 安装 EPEL 源(Nginx 依赖)
  • 安装 Nginx 服务
  • 启动服务并设置开机自启
前置条件

需先安装 EPEL 源,因为 Nginx 不在 CentOS 默认 yum 源中

剧本内容

创建play3.yml

---
- name: Play 3. 部署Nginx服务hosts: blogbecome: yestasks:- name: 安装EPEL源(Nginx依赖)yum:name: epel-releasestate: present- name: 安装 Nginxyum:name: nginxstate: present- name: 启动Nginx服务并设置开机自启service:name: nginxstate: startedenabled: yes

5. Play 4:部署博客应用(WordPress)

功能说明

下载并部署 WordPress 应用程序,配置数据库连接,设置 Web 服务器和 PHP 运行环境。

核心任务
  • 提前下载好网站文件
  • 解压并部署到网站根目录
  • 配置数据库连接信息到 wp-config.php
  • 调整 PHP-FPM 运行用户为 nginx
  • 创建 Nginx 虚拟主机配置
  • 设置网站目录权限
关键配置
  • 网站根目录:/usr/share/nginx/html
  • Nginx 虚拟主机配置:/etc/nginx/conf.d/wordpress.conf
  • PHP-FPM 配置文件:/etc/php-fpm.d/www.conf
注意事项
  • 采用文件校验确保 WordPress 源码完整性
  • 统一 PHP-FPM 和 Nginx 运行用户为 nginx,避免权限冲突
剧本内容

创建play4.yml

---
- name: Play 4. 部署博客应用(WordPress)hosts: blogbecome: yesvars:blog_vhost: blog.furongwang.cloudwp_version: "4.9.4"wp_install_dir: "/usr/share/nginx/html/{{ blog_vhost }}/wordpress"tasks:- name: 创建虚拟主机站点目录file:path: /usr/share/nginx/html/{{ blog_vhost }}state: directory- name: 解压WordPress至网站根目录unarchive:src: "wordpress-{{ wp_version }}-zh_CN.zip"dest: /usr/share/nginx/html/{{ blog_vhost }}owner: nginxgroup: nginxcreates: "{{ wp_install_dir }}"- name: 复制WordPress配置样本command: cp {{ wp_install_dir }}/wp-config-sample.php {{ wp_install_dir }}/wp-config.phpargs:creates: "{{ wp_install_dir }}/wp-config.php"- name: 配置数据库连接信息lineinfile:path: "{{ wp_install_dir }}/wp-config.php"regexp: "{{ item.regexp }}"line: "{{ item.line }}"loop:- { regexp: "define\\('DB_NAME', 'database_name_here'\\);", line: "define('DB_NAME', '{{ webapp_db_name }}');" }- { regexp: "define\\('DB_USER', 'username_here'\\);", line: "define('DB_USER', '{{ webapp_db_user }}');" }- { regexp: "define\\('DB_PASSWORD', 'password_here'\\);", line: "define('DB_PASSWORD', '{{ webapp_db_password }}');" }- name: 配置PHP-FPM运行用户和组为nginxlineinfile:path: /etc/php-fpm.d/www.confregexp: "{{ item}} = "line: "{{ item }} = nginx"loop:- user- groupnotify: 重启PHP-FPM服务  # 配置变更后触发重启- name: 配置 nginx 对接 phpcopy:src: php.confdest: /etc/nginx/default.d/php.conf- name: 创建Nginx虚拟主机配置template:src: vhost-wordpress.conf.j2dest: /etc/nginx/conf.d/vhost-wordpress.confnotify: 重启Nginx服务handlers:- name: 重启Nginx服务service:name: nginxstate: restarted- name: 重启PHP-FPM服务service:name: php-fpmstate: restarted

配置nginx对接php

[furongwang@controller blog]$ cat > php.conf <<'EOF'
location ~ \.php$ {try_files $uri =404;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;
}
EOF

准备虚拟站点模版

[furongwang@controller blog]$ cat > vhost-wordpress.conf.j2 <<EOF
server {listen       80;server_name  {{ blog_vhost }};root         {{wp_install_dir }};index index.php index.html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;# log fileaccess_log  /var/log/nginx/access-{{ blog_vhost }}.log;error_log /var/log/nginx/error-{{ blog_vhost }}.log;
}
EOF

6. Play 5:安全加固配置

功能说明

对整个系统和应用环境进行安全加固,符合生产环境安全要求。

核心任务
  • 防火墙配置:开放 80 端口
  • Nginx 安全加固:隐藏版本信息
  • PHP 安全加固:禁用危险函数
  • 输出部署完成信息
安全措施说明
  • 防火墙仅开放必要端口,限制网络访问
  • SELinux 保持开启状态,通过上下文配置实现安全访问控制
  • 禁用 PHP 危险函数(如 exec、system 等)防止命令注入攻击
  • 隐藏 Nginx 版本信息,减少信息泄露
剧本内容

创建play5.yml

---
- name: Play 5. 安全加固配置hosts: blogbecome: yesvars:wp_install_dir: "/usr/share/nginx/html"tasks:- name: 启动防火墙service:name: firewalldenabled: yesstate: started- name: 防火墙开放80端口(HTTP)firewalld:service: httppermanent: yesimmediate: yesstate: enabled- name: Nginx安全加固 - 隐藏版本信息lineinfile:path: /etc/nginx/nginx.confinsertafter: '^http {'line: '    server_tokens off;'notify: 重启Nginx服务- name: PHP安全加固 - 禁用危险函数lineinfile:path: /etc/php.iniregexp: '^disable_functions ='line: 'disable_functions = exec,passthru,shell_exec,system,proc_open,popen'notify: 重启PHP-FPM服务- name: 输出部署完成信息debug:msg: "WordPress部署完成,访问地址: http://{{ ansible_facts['default_ipv4']['address'] }}"handlers:- name: 重启Nginx服务service:name: nginxstate: restarted- name: 重启PHP-FPM服务service:name: php-fpmstate: restarted

四、执行与验证

1. 执行方法

  • 将上文准备完成的play1.yml、play2.yml、play3.yml、play4.yml、play5.yml 合并为一个文件:deploy_wordpress_multi_play.yml
  • 检查语法,删除多余的 “—”三短横杠开头行
  • 执行文件
[furongwang@controller blog]$ ansible-playbook -i inventory deploy_wordpress_multi_play.yml

运行结果例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 验证步骤

  • 检查服务状态:

    # 登录lnmp客户端
    # 检查Nginx状态
    [furongwang@node2 ~]$ systemctl status nginx# 检查PHP-FPM状态
    [furongwang@node2 ~]$ systemctl status php-fpm# 检查MariaDB状态
    [furongwang@node2 ~]$ systemctl status mariadb
    
  • 验证网站访问:
    通过浏览器访问输出的 IP 地址,应能看到 WordPress 安装页面

  • 检查文件权限:

    [furongwang@node2 ~]$ ls -ld /usr/share/nginx/html
    # 应显示权限为755,属主和属组为nginx
    

在这里插入图片描述

  • 权限错误时,使用chmod命令和chown命令进行调整

五、维护与扩展

1. 版本升级

  • WordPress 升级:修改wp_version变量为目标版本
  • 组件升级:调整对应 yum 包的状态为 latest(需谨慎测试)

2. 配置调整

  • 数据库参数:修改 Play 2 中的相关变量
  • 网站目录:修改wp_install_dir变量并同步调整相关路径配置
  • 端口配置:修改 Nginx 虚拟主机配置中的 listen 参数

3. 故障排查

  • 查看服务日志:

    # Nginx日志
    tail -f /var/log/nginx/error.log# PHP-FPM日志
    tail -f /var/log/php-fpm/www-error.log# MariaDB日志
    tail -f /var/log/mariadb/mariadb.log
    
  • 检查 Playbook 执行输出,定位失败任务

  • 验证 SELinux 上下文:ls -Z /usr/share/nginx/html

六、总结

​ 本文详细介绍了基于 Ansible Playbook 自动化部署 LNMP(Linux+Nginx+MariaDB+PHP)架构的 WordPress 博客平台的完整方案。通过模块化设计,将部署流程拆分为五个独立的 Play,分别负责数据库初始化、PHP 环境配置、Nginx 服务部署、WordPress 应用安装及系统安全加固,确保部署过程标准化、可重复且安全可靠。

http://www.dtcms.com/a/606663.html

相关文章:

  • 建设部标准规范网站网页设计与制作教程考试试卷
  • 基于Python+OpenCV实现双目立体视觉的图像匹配与测距
  • duckdb使用详解
  • 【愚公系列】《MCP协议与AI Agent开发》010-MCP协议标准与规范体系(协议消息结构设计)
  • 3、日常脚本:文件去重(删除重复文件)
  • 物流公司网站方案wordpress搭建系统
  • 个人做负面网站犯法不ui设计行业的现状和发展前景
  • 亚马逊部分退款计划:卖家降本增效新策略
  • 外包公司企业网站学习做网站难吗
  • 分布式环境下的一致性与幂等性
  • 【OpenCV + VS】 使用 OpenCV 实现实时人脸检测
  • 聊城手机网站建设电话达内网站开发视频教程
  • MySQL JOIN 机制与多表查询优化:驱动表选择、连接算法与执行计划解析
  • AI代码开发宝库系列:特征工程
  • WordPress全站广告巩义市建设局网站
  • 信誉好的顺德网站建设如何用百度平台营销
  • Apache Cloudberry 孵化报告(202508-202510)
  • 【2025 JAVA面试题】 常见几个具体问题
  • dedecms大气金融企业网站模板八年级信息所用软件做网站
  • C语言编译器手机| 如何选择适合的C语言编译器应用
  • Java 并发踩坑:高并发库存扣减丢失更新,从悲观锁到分布式锁的终极方案
  • 杭州建设网站职称人才工作专题wordpress 插件手机
  • lancedb create_scalar_index 创建索引
  • Python 网络编程
  • Java后端常用技术选型 |(四)微服务篇
  • Vue3 + Vite项目=》babel转义兼容低版本实现+vite 分包处理方案
  • 【GIS入门】GeoTIFF栅格地理数据格式介绍和基础概念详解
  • 网站开发与设计模板百度seo网站排名
  • 校园网站建设总结flash网站系统
  • openlayer省市县json