Ubuntu 24.04 搭建 Caddy + PHP8.3 + MariaDB + WordPress 完整部署存档教程
环境说明
- 系统:Ubuntu 24.04 LTS
- Web服务:Caddy 2(自动HTTPS、无需配置证书、原生支持FastCGI)
- PHP:8.3 FPM
- 数据库:MariaDB 10.11
- 站点目录统一规范:
/srv/www/你的域名 - 运行用户:
www-data(PHP文件读写)、caddy(网页服务) - 适用服务器:Raksmart/阿里云/腾讯云所有Ubuntu24.04机器
一、系统初始化(必做,统一环境)
1. 更新系统软件源
apt update && apt upgrade -y
2. 系统时区设置
timedatectl set-timezone Asia/Shanghai
3. 防火墙放行端口(80 HTTP / 443 HTTPS)
ufw allow 80/tcp
ufw allow 443/tcp
ufw reload
# 查看防火墙规则
ufw status
云服务器务必在服务商后台安全组同步放行80、443端口
二、安装 Caddy Web 服务
1. 官方源安装Caddy
# 导入官方GPG密钥
curl -fsSL https://dl.filippo.io/caddy/key | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
# 添加软件源
echo "deb [signed-by=/usr/share/keyrings/caddy-stable-archive-keyring.gpg] https://dl.filippo.io/caddy/debian stable main" | tee /etc/apt/sources.list.d/caddy-stable.list
# 安装
apt update
apt install caddy -y
2. Caddy 基础管理命令
systemctl enable --now caddy # 开机自启+立刻运行
systemctl start caddy
systemctl stop caddy
systemctl reload caddy # 重载配置(平滑生效)
systemctl restart caddy # 重启服务
systemctl status caddy # 查看运行状态
journalctl -u caddy -f # 实时查看运行日志(排错必备)
3. Caddy 配置文件路径
- 主配置文件:
/etc/caddy/Caddyfile - 网站根目录统一存放:
/srv/www/
三、安装 PHP8.3 + PHP-FPM 及WordPress所需全部扩展
1. 安装PHP官方源 + 安装全套组件
# 安装依赖
apt install ca-certificates apt-transport-https software-properties-common -y
# 添加PHP官方ppa源
add-apt-repository ppa:ondrej/php -y
apt update
# 安装PHP8.3核心+fpm+WP必备扩展
apt install php8.3-cli php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-opcache php8.3-intl -y
2. PHP-FPM 服务管理
systemctl enable --now php8.3-fpm
systemctl reload php8.3-fpm
systemctl restart php8.3-fpm
systemctl status php8.3-fpm
3. PHP-FPM 进程池配置(核心配置,适配Caddy sock通信)
编辑进程池配置文件
nano /etc/php/8.3/fpm/pool.d/www.conf
3.1 监听方式(使用unix sock,性能高于TCP 9000端口)
listen = /run/php/php8.3-fpm.sock
;listen = 127.0.0.1:9000
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
3.2 进程资源配置(通用1H2G服务器标准参数)
user = www-data
group = www-data
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pm.max_requests = 1000
4. php.ini 全局参数优化(适配WordPress上传、运行)
nano /etc/php/8.3/fpm/php.ini
修改以下参数:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
display_errors = Off
修改完成重载生效
systemctl reload php8.3-fpm
5. 解决Caddy无权限访问php-fpm.sock(高频报错点)
Caddy运行用户为caddy,sock文件归属www-data,加入用户组授权访问
usermod -aG www-data caddy
systemctl restart caddy
校验sock文件存在
ls -l /run/php/php8.3-fpm.sock
四、安装 MariaDB 数据库
1. 安装数据库服务
apt install mariadb-server mariadb-client -y
systemctl enable --now mariadb
systemctl status mariadb
2. 数据库安全初始化(去除默认不安全配置)
mariadb-secure-installation
按照交互提示配置:
- Enter current password for root (enter for none) → 直接回车
- Switch to unix_socket authentication [Y/n] → n
- Change the root password? [Y/n] → Y,设置root高强度密码
- Remove anonymous users? [Y/n] → Y
- Disallow root login remotely? [Y/n] → Y
- Remove test database and access to it? [Y/n] → Y
- Reload privilege tables now? [Y/n] → Y
3. 为WordPress创建独立数据库、独立账号(禁止网站使用root账号)
mariadb
执行SQL语句(自行替换库名、用户名、密码)
-- 创建数据库,utf8mb4完整支持emoji表情
CREATE DATABASE wp_zenroly CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建本地访问账号
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY '自定义高强度密码';
-- 赋予数据库全部权限
GRANT ALL PRIVILEGES ON wp_zenroly.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
exit;
五、下载并部署WordPress源码
1. 创建站点根目录
mkdir -p /srv/www
cd /srv/www
2. 下载官方最新WordPress压缩包
wget https://wordpress.org/latest.tar.gz
# 解压文件
tar xf latest.tar.gz
# 将文件移动到你的域名目录
mv wordpress/* /srv/www/zenroly.com/
3. 目录权限标准化(WP读写、主题插件更新必备)
# 归属www-data用户组
chown -R www-data:www-data /srv/www/zenroly.com
# 文件夹权限755,文件权限644
find /srv/www/zenroly.com -type d -exec chmod 755 {} \;
find /srv/www/zenroly.com -type f -exec chmod 644 {} \;
4. 预配置 wp-config.php(推荐做法,无需安装页手动填写数据库信息)
cp /srv/www/zenroly.com/wp-config-sample.php /srv/www/zenroly.com/wp-config.php
nano /srv/www/zenroly.com/wp-config.php
修改数据库字段:
define( 'DB_NAME', 'wp_zenroly' );
define( 'DB_USER', 'wp_user' );
define( 'DB_PASSWORD', '刚才设置的数据库密码' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );
密钥可访问:https://api.wordpress.org/secret-key/1.1/salt 生成替换文件内随机密钥
wp-config安全加固
chmod 600 /srv/www/zenroly.com/wp-config.php
六、Caddy 站点配置编写(Caddyfile)
编辑主配置文件
nano /etc/caddy/Caddyfile
全局基础配置(文件最顶部)
{
http_port 80
https_port 443
}
单个WordPress站点标准配置
zenroly.com {
# 网站物理目录
root * /srv/www/zenroly.com
# 静态文件服务
file_server
# 对接php-fpm sock通道
php_fastcgi unix/run/php/php8.3-fpm.sock
# WordPress通用伪静态规则(适配首页、文章、后台、固定链接)
rewrite * /index.php{path}
# 安全响应头
header Strict-Transport-Security "max-age=31536000; includeSubDomains"
header X-Content-Type-Options nosniff
header X-Frame-Options SAMEORIGIN
header Referrer-Policy strict-origin-when-cross-origin
}
校验配置语法 + 重载Caddy
# 校验配置是否书写错误
caddy validate --config /etc/caddy/Caddyfile
# 无报错再重载
systemctl reload caddy
七、域名解析与WordPress初始化安装
- 域名 zenroly.com 将A记录指向服务器公网IP,等待DNS解析生效
- 浏览器无痕窗口访问:
https://zenroly.com/wp-admin/install.php - 填写站点标题、管理员账号、邮箱,完成安装
- 安装后在后台设置 → 常规修改站点地址为HTTPS域名
- 设置 → 永久链接选择「朴素/文章名」,伪静态自动生效无需额外修改
八、安装完成后安全优化(必做存档项)
1. 关闭后台在线文件编辑(防止木马篡改代码)
在wp-config.php最底部添加:
define( 'DISALLOW_FILE_EDIT', true );
2. 禁止XML-RPC(暴力破解常用入口)
Caddy配置站点块内加入:
@xmlrpc path /xmlrpc.php
respond @xmlrpc 403
3. 定期备份脚本(简易备份数据库+网站文件)
# 网站打包备份
tar -zcf /backup/zenroly_web_$(date +%Y%m%d).tar.gz /srv/www/zenroly.com
# 数据库导出备份
mariadb-dump -uwp_user -p wp_zenroly > /backup/zenroly_db_$(date +%Y%m%d).sql
九、日常排错常用命令汇总
# 查看Caddy实时日志
journalctl -u caddy -f
# 查看PHP-FPM日志
journalctl -u php8.3-fpm -f
# 查看sock文件状态
ls /run/php/php8.3-fpm.sock
# 本机自测网页返回内容
curl -v https://zenroly.com
# 检查目录权限归属
ls -lh /srv/www/zenroly.com
十、整体架构流程图
域名DNS → Caddy(80/443自动SSL) → php_fastcgi sock通信 → PHP8.3-FPM解析PHP文件 → MariaDB读取数据库数据 → 页面返回浏览器
正文完