文档版本: v1.1 (修正 PHP 8.4 及 Caddy 源)
适用系统: Debian 13
目标硬件: 2核 CPU / 2GB RAM
关键特性: 全中文环境 / HTTP/3 (QUIC) 支持 / 针对低内存优化
- 系统初始化与环境准备
在开始安装软件之前,我们需要更新系统并配置 Swap(虚拟内存),这对于 2GB 内存的服务器至关重要,能防止数据库因内存不足被系统强制关闭。
1.1 更新系统组件并开启自动安全更新
apt update && apt upgrade -y
apt install -y curl wget unzip gnupg2 ca-certificates lsb-release apt-transport-https ufw unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
1.2 配置 Swap 分区 (2GB)
创建并启用 Swap
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
写入 fstab 确保重启后生效
echo ‘/swapfile none swap sw 0 0’ | tee -a /etc/fstab
调整系统策略:仅在物理内存快满时才使用 Swap
echo ‘vm.swappiness=10’ | tee -a /etc/sysctl.conf
sysctl -p
1.3 配置防火墙 (支持 HTTP/3)
注意: 如果使用的是云服务器(如阿里云、AWS),请务必在云服务商的控制台“安全组”中同步放行 UDP 443 端口。
ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 443/udp # HTTP/3 关键端口
ufw enable
- 安装核心软件栈
2.1 安装 Caddy Web 服务器
Debian 13 官方源已包含 Caddy,直接安装即可。
apt update
apt install caddy -y
2.2 安装 PHP 8.4 及全功能扩展
为了支持 WordPress 的所有特性(包括图片处理、多字节字符、数学运算等),需要安装以下扩展。
apt install -y php8.4-fpm php8.4-mysql php8.4-curl php8.4-gd php8.4-mbstring php8.4-xml php8.4-xmlrpc php8.4-soap php8.4-intl php8.4-zip php8.4-bcmath php8.4-imagick php8.4-gmp php8.4-cli
2.3 安装 MariaDB 数据库
apt install -y mariadb-server
systemctl enable –now mariadb
- 针对 2C/2G 配置的深度优化
默认配置会消耗大量内存,导致服务器不稳定。必须进行以下调整。
3.1 优化 PHP-FPM (改为按需模式)
注意路径: PHP 8.4 的配置文件路径为 /etc/php/8.4/…。
编辑 /etc/php/8.4/fpm/pool.d/www.conf:
; 找到并修改以下参数
pm = ondemand
pm.max_children = 15
pm.process_idle_timeout = 10s
pm.max_requests = 500
3.2 优化 PHP 上传与执行限制
编辑 /etc/php/8.4/fpm/php.ini:
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
; 确保 Opcache 已开启
[opcache]
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
重启 PHP 服务:
systemctl restart php8.4-fpm
3.3 优化 MariaDB 内存占用
创建 /etc/mysql/mariadb.conf.d/50-custom.cnf 并填入:
[mysqld]
performance_schema = OFF
innodb_buffer_pool_size = 256M
max_connections = 50
tmp_table_size = 32M
max_heap_table_size = 32M
expire_logs_days = 7
重启数据库服务:
systemctl restart mariadb
- 部署 WordPress
4.1 创建数据库
进入数据库命令行 mariadb,执行以下命令。
请注意:这里的 YourStrongPassword 即为前面提到的数据库密码,请务必修改。
— 1. 创建数据库
CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
— 2. 创建用户 (请修改密码!)
CREATE USER ‘wp_user’@’localhost’ IDENTIFIED BY ‘YourStrongPassword’;
— 3. 授权
GRANT ALL PRIVILEGES ON wordpress_db.* TO ‘wp_user’@’localhost’;
— 4. 刷新并退出
FLUSH PRIVILEGES;
EXIT;
4.2 下载与权限设置
mkdir -p /var/www/wordpress
cd /var/www/wordpress
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
tar -xzvf latest-zh_CN.tar.gz –strip-components=1
rm latest-zh_CN.tar.gz
关键:设置权限,否则无法更新插件或上传图片
chown -R www-data:www-data /var/www/wordpress
find /var/www/wordpress -type d -exec chmod 755 {} \;
find /var/www/wordpress -type f -exec chmod 644 {} \;
4.3 添加 wp-config.php 优化
编辑 /var/www/wordpress/wp-config.php (在安装完成后生成,或手动从 sample 复制),添加:
define( ‘WP_POST_REVISIONS’, 3 ); // 限制修订版本
define( ‘AUTOSAVE_INTERVAL’, 120 ); // 延长自动保存
define( ‘DISALLOW_FILE_EDIT’, true ); // 禁止在线编辑代码
- Caddyfile 配置 (HTTPS + HTTP/3)
编辑 /etc/caddy/Caddyfile。
注意: 请将 your-domain.com 替换为您的真实域名。
注意: 这里的 php_fastcgi 必须指向 PHP 8.4 的 sock 文件。
your-domain.com {
# 网站根目录
root * /var/www/wordpress
# 启用 Gzip 和 Zstd 压缩
encode gzip zstd
# PHP 处理 (指向 PHP 8.4)
php_fastcgi unix//run/php/php8.4-fpm.sock
# 静态文件服务
file_server
# 安全头
header {
X-Content-Type-Options nosniff
X-Frame-Options SAMEORIGIN
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
}
# 处理静态资源缓存 (配合 Caddy 强悍的性能)
@static {
file
path *.ico *.css *.js *.gif *.jpg *.jpeg *.png *.svg *.woff *.woff2
}
header @static Cache-Control "max-age=5184000"
}
www.your-domain.com {
# WWW跳转
redir https://your-domain.com{uri} permanent
}
应用配置:
systemctl reload caddy
- 常见问题解答 (Q&A)
Q1: 为什么我的 HTTP/3 (QUIC) 检测显示不支持?
A: HTTP/3 使用 UDP 协议 的 443 端口。
检查服务器防火墙:ufw status 确保 443/udp 是 ALLOW 状态。
最常见原因: 检查云服务商(阿里云/腾讯云/AWS)的网页控制台,在“安全组”或“防火墙规则”中,必须手动添加一条规则:协议 UDP,端口 443,源 0.0.0.0/0。
Q2: 为什么安装插件或上传主题时提示需要 FTP 账号?
A: 这通常是文件权限问题。
请再次执行权限修复命令:
chown -R www-data:www-data /var/www/wordpress
这确保 Web 服务器(用户名为 www-data)有权写入文件。
Q3: 内存占用多少是正常的?
A: 按照本文档优化后:
空闲时:内存占用约 400MB – 600MB。
负载时:内存占用约 800MB – 1.2GB。
剩余内存和 Swap 足够应对突发流量。
Q4: 网站显示 “Error establishing a database connection”?
A:
检查 wp-config.php 中的数据库名、用户名、密码是否正确(参考本文档第 0 节的配置表)。
检查 MariaDB 是否运行:systemctl status mariadb。
如果因为内存不足导致数据库挂掉,系统会自动尝试重启,或者你可以手动 systemctl restart mariadb。如果频繁发生,请检查 Swap 是否启用成功。