找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 30|回复: 0

Ubuntu 24.04 部署 WordPress 实战:Apache、PHP-FPM 与 MariaDB 配置及故障排查

[复制链接]

5

主题

0

回帖

21

积分

管理员

积分
21
发表于 昨天 11:31 | 显示全部楼层 |阅读模式
Ubuntu 24.04 部署 WordPress 实战:Apache、PHP-FPM 与 MariaDB 配置及故障排查

一、项目背景

之前在 VMware 虚拟机中搭建过 WordPress 测试环境,这次准备将网站部署到云服务器上。为了方便后续维护、学习 Linux 运维以及对外发布博客,选择 Ubuntu 作为服务器操作系统,使用 Apache 提供 Web 服务,PHP-FPM 解析 PHP 文件,MariaDB 存储 WordPress 网站数据。
本次部署不仅涉及 WordPress 本身,还遇到了 Apache 模块未启用、PHP-FPM 未正确关联、PHP 缺少 MySQL 扩展以及数据库密码管理等问题。本文记录整体部署过程与常见故障的排查方法。
二、部署环境规划

项目配置
操作系统Ubuntu Server 24.04 LTS
Web 服务器Apache 2.4
PHP 运行方式PHP-FPM
PHP 版本8.3(以实际安装版本为准)
数据库MariaDB
WordPress 目录/var/www/wordpress
Apache 主配置目录/etc/apache2/
PHP-FPM 配置目录/etc/php/8.3/fpm/
数据库名称wordpress
数据库用户wpuser
说明:以上为规划环境。正式操作前,需要通过命令确认实际系统、PHP 版本和数据库版本,不能直接假设所有软件包均已安装。
三、安装基础软件

3.1 更新系统软件包

sudo apt updatesudo apt upgrade -y检查系统版本:
cat /etc/os-releaseuname -r3.2 安装 Apache、PHP-FPM 和 MariaDB

sudo apt install -y apache2 mariadb-server \php-fpm php-mysql php-curl php-gd \php-mbstring php-xml php-zip php-intl php-bcmath如果明确使用 PHP 8.3,也可以安装对应版本的软件包:
sudo apt install -y php8.3-fpm php8.3-mysql启动 Apache 和 MariaDB:
sudo systemctl enable --now apache2 mariadb启动 PHP-FPM:
sudo systemctl enable --now php8.3-fpm检查服务状态:
systemctl is-active apache2systemctl is-active mariadbsystemctl is-active php8.3-fpm如果某个服务返回 inactive 或 failed,应先查看服务日志,不要直接进入下一步。
四、下载并部署 WordPress

4.1 下载 WordPress

进入临时目录:
cd /tmp下载 WordPress 官方压缩包:
curl -fLO https://wordpress.org/latest.tar.gz解压:
tar -xzf latest.tar.gz4.2 放置网站文件

创建网站目录并复制文件:
sudo mkdir -p /var/www/wordpresssudo cp -a /tmp/wordpress/. /var/www/wordpress/检查目录内容:
ls -la /var/www/wordpress/正常情况下,可以看到以下文件和目录:
  • index.php
  • wp-admin
  • wp-content
  • wp-includes
  • wp-config-sample.php

4.3 设置文件权限

sudo chown -R www-data:www-data /var/www/wordpresssudo find /var/www/wordpress -type d -exec chmod 755 {} \;sudo find /var/www/wordpress -type f -exec chmod 644 {} \;注意:不要为了快速解决权限问题而直接执行 chmod -R 777。这会让文件获得过于宽松的访问权限,增加安全风险。
五、配置 Apache 与 PHP-FPM

5.1 了解 Apache 配置目录

Ubuntu 与 CentOS 的 Apache 配置路径有所不同。
配置用途UbuntuCentOS 常见路径
主配置文件/etc/apache2/apache2.conf/etc/httpd/conf/httpd.conf
虚拟主机配置/etc/apache2/sites-available//etc/httpd/conf.d/
已启用站点/etc/apache2/sites-enabled/通常由配置文件直接加载
错误日志/var/log/apache2/error.log/var/log/httpd/error_log
服务名称apache2httpd
Ubuntu 使用 a2enmod、a2ensite 等命令管理模块和站点配置。
5.2 启用必要的 Apache 模块

sudo a2enmod rewritesudo a2enmod proxysudo a2enmod proxy_fcgisudo a2enmod setenvif启用 PHP-FPM 配置:
sudo a2enconf php8.3-fpm检查模块:
apache2ctl -M | grep -E 'rewrite|proxy|proxy_fcgi'正常情况下,应看到类似:
proxy_module (shared)proxy_fcgi_module (shared)rewrite_module (shared)如果没有相关输出,说明模块可能尚未启用,或者配置尚未正确加载。
5.3 检查 PHP-FPM 监听接口

执行:
ls -l /run/php/再查看 PHP-FPM 配置:
grep -E '^[[:space:]]*listen[[:space:]]*=' \/etc/php/8.3/fpm/pool.d/www.conf常见的监听方式是 Unix Socket:
/run/php/php8.3-fpm.sockApache 的 PHP-FPM 配置必须与实际 PHP-FPM 版本及监听接口一致。
5.4 创建 WordPress 虚拟主机

创建配置文件:
sudo nano /etc/apache2/sites-available/wordpress.conf填写:
<VirtualHost *:80>    ServerName example.com    DocumentRoot /var/www/wordpress    <Directory /var/www/wordpress>        Options FollowSymLinks        AllowOverride All        Require all granted    </Directory>    DirectoryIndex index.php index.html    ErrorLog ${APACHE_LOG_DIR}/wordpress_error.log    CustomLog ${APACHE_LOG_DIR}/wordpress_access.log combined</VirtualHost>其中 example.com 应替换成自己的域名。暂时没有域名时,可以先使用服务器 IP 进行测试。
启用站点:
sudo a2ensite wordpress.confsudo a2dissite 000-default.conf检查配置并重新加载服务:
sudo apache2ctl configtestsudo systemctl reload apache2配置正确时会返回:
Syntax OK六、配置 MariaDB 数据库

6.1 登录数据库

sudo mariadb查看已有数据库:
SHOW DATABASES;6.2 创建 WordPress 数据库

CREATE DATABASE wordpressCHARACTER SET utf8mb4COLLATE utf8mb4_unicode_ci;6.3 创建数据库用户

CREATE USER 'wpuser'@'localhost'IDENTIFIED BY '替换成自己的强密码';为 WordPress 数据库授权:
GRANT ALL PRIVILEGES ON wordpress.*TO 'wpuser'@'localhost';退出数据库:
EXIT;6.4 测试数据库连接

mariadb -u wpuser -p wordpress输入设置的密码。如果成功进入 MariaDB 命令行,说明数据库账号可以正常连接。
七、配置 WordPress 数据库连接

进入网站目录:
cd /var/www/wordpress如果 wp-config.php 不存在,先复制示例文件:
sudo cp wp-config-sample.php wp-config.php编辑配置文件:
sudo nano /var/www/wordpress/wp-config.php修改数据库连接参数:
define( 'DB_NAME', 'wordpress' );define( 'DB_USER', 'wpuser' );define( 'DB_PASSWORD', '替换成自己的强密码' );define( 'DB_HOST', 'localhost' );保存后,应确认数据库名称、账号和密码与 MariaDB 中的实际配置一致。
八、部署过程中遇到的问题及解决方法

问题一:Apache 出现 AH00558 警告

曾执行:
apache2ctl -M | grep -E 'rewrite|proxy|proxy_fcgi'终端出现:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name原因:
Apache 没有配置全局 ServerName,因此尝试使用系统主机名作为默认服务器名称。
解决方法:
创建全局配置:
echo 'ServerName localhost' | \sudo tee /etc/apache2/conf-available/servername.conf启用配置并检查:
sudo a2enconf servernamesudo apache2ctl configtestsudo systemctl reload apache2如果已经有正式域名,也可以将 localhost 换成自己的域名。
这个警告通常不会导致 PHP 无法解析,但可以通过设置全局 ServerName 消除。
问题二:Apache 没有加载 rewrite、proxy_fcgi 等模块

原因:
Apache 模块可能尚未启用,或者 PHP-FPM 配置没有正确加载。
解决方法:
sudo a2enmod rewrite proxy proxy_fcgi setenvifsudo a2enconf php8.3-fpmsudo apache2ctl configtestsudo systemctl restart php8.3-fpmsudo systemctl restart apache2验证:
apache2ctl -M | grep -E 'rewrite|proxy|proxy_fcgi'问题三:PHP 文件无法解析

现象:
浏览器访问 PHP 页面时,可能下载 PHP 文件、显示 PHP 源码,或者返回 502、503 等错误。
排查思路:
首先检查 PHP-FPM:
sudo systemctl status php8.3-fpm --no-pager检查监听 Socket:
ls -l /run/php/检查 Apache 模块:
apache2ctl -M | grep -E 'proxy|proxy_fcgi'检查日志:
sudo tail -n 50 /var/log/apache2/error.logsudo journalctl -u php8.3-fpm -n 50 --no-pager如果 PHP 文件被直接下载,说明请求可能没有交给 PHP-FPM 处理,应重点检查 Apache 的 PHP-FPM 配置、模块及虚拟主机。
问题四:WordPress 提示缺少 MySQL 扩展

错误信息:
Your PHP installation appears to be missing the MySQL extensionwhich is required by WordPress.Please check that the mysqli PHP extension is installed and enabled.原因:
PHP 缺少 MySQL 扩展,或者 PHP-FPM 没有加载该扩展。
解决方法:
Ubuntu 上 PHP 8.3 对应的软件包是:
sudo apt install -y php8.3-mysql重启服务:
sudo systemctl restart php8.3-fpmsudo systemctl restart apache2检查命令行 PHP:
php -m | grep -Ei 'mysqli|pdo_mysql'正常情况下应能看到:
mysqlipdo_mysql如果命令行已经显示扩展,但 WordPress 仍然报错,还需要确认 Apache 实际连接的 PHP-FPM 版本是否一致。
问题五:忘记 MariaDB 数据库用户密码

数据库密码与 WordPress 管理员登录密码不是同一个密码。
如果拥有 Ubuntu 的管理员权限,可以尝试:
sudo mariadb查询数据库账号:
SELECT User, Host FROM mysql.user;确认 WordPress 使用的数据库账号后,修改密码:
ALTER USER 'wpuser'@'localhost'IDENTIFIED BY '替换成新的强密码';随后编辑:
sudo nano /var/www/wordpress/wp-config.php将 DB_PASSWORD 修改成新的数据库密码。
最后测试:
mariadb -u wpuser -p wordpress如果 sudo mariadb 无法登录,则需要根据具体错误进一步排查 MariaDB 的认证配置或管理员账号,不能直接假设所有系统都能通过该命令免密登录。
问题六:数据库查询与表管理

登录 MariaDB:
sudo mariadb常用命令:
SHOW DATABASES;USE wordpress;SHOW TABLES;DESCRIBE wp_posts;SELECT VERSION();SELECT User, Host FROM mysql.user;查看 WordPress 文章:
SELECT ID, post_title, post_statusFROM wp_postsWHERE post_type = 'post';注意:wp_posts 是默认表前缀示例。如果网站使用了其他表前缀,需要使用实际表名。
九、部署完成后的检查清单

9.1 检查服务

systemctl is-active apache2systemctl is-active mariadbsystemctl is-active php8.3-fpm9.2 检查 Apache 配置

sudo apache2ctl configtestsudo apache2ctl -S9.3 检查 PHP-FPM

ls -l /run/php/php -m | grep -Ei 'mysqli|pdo_mysql'9.4 检查数据库

mariadb -u wpuser -p wordpress进入后执行:
SHOW TABLES;EXIT;9.5 检查网站

在浏览器中访问:
http://服务器公网IP/如果出现 WordPress 安装界面,按照提示填写网站标题、管理员账号和密码,即可完成初始化安装。
如果已经安装过 WordPress,则应检查现有网站是否正常显示,而不是重复初始化。
十、生产环境安全建议

  • 使用强数据库密码和独立的 WordPress 数据库用户。
  • 不要将 MariaDB 的 3306 端口直接开放到公网。
  • 通过云平台安全组限制 SSH 来源地址,并开放网站所需的 80、443 端口。
  • 正式发布前配置域名与 HTTPS 证书。
  • 定期备份 WordPress 文件和 MariaDB 数据库,并将备份保存到服务器之外。
  • 不要使用 chmod -R 777 解决权限问题。
  • 保持 Ubuntu、PHP、MariaDB、WordPress 及其插件处于受支持的更新状态。

十一、总结

本次部署让我进一步理解了 Ubuntu 下 Apache、PHP-FPM、MariaDB 与 WordPress 之间的关系。
WordPress 不只是把文件复制到网站目录即可运行。Apache 负责接收 HTTP 请求,PHP-FPM 负责执行 PHP 程序,PHP 的 MySQL 扩展负责提供数据库连接能力,而 MariaDB 则负责保存文章、用户和网站配置等数据。
部署遇到故障时,应该先确认服务状态,再检查模块、Socket、数据库账号和错误日志。将问题分层排查,比直接重装软件或随意修改权限更可靠。
这次实践也让我熟悉了 Ubuntu 的 apt、systemctl、a2enmod、a2ensite 以及 MariaDB 的数据库管理命令,为后续 Linux 运维和网站迁移积累了实战经验。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2026-10-17 14:26 , Processed in 0.010812 second(s), 20 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表