在轻量服务器(如腾讯云轻量应用服务器、阿里云轻量、或 1C2G/2C4G 的 VPS)上部署多个 WordPress 站点,使用 Nginx + PHP-FPM 是高效且资源友好的方案。以下是简洁、安全、可维护的配置指南(以 Ubuntu 22.04/24.04 或 CentOS Stream 9 为例,推荐 Ubuntu):
✅ 一、基础环境准备(一次性)
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装必要软件(Nginx + PHP 8.2 + MySQL/MariaDB + 其他扩展)
sudo apt install nginx php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd
php8.2-mbstring php8.2-xml php8.2-xmlrpc php8.2-zip php8.2-opcache
php8.2-cli mysql-server unzip wget -y
# 启用并启动服务
sudo systemctl enable nginx php8.2-fpm mysql
sudo systemctl start nginx php8.2-fpm mysql
💡 轻量建议:
- 使用
php8.2-fpm(比 8.3 更稳定,内存占用更低)- 数据库推荐
MariaDB(比 MySQL 更轻量):sudo apt install mariadb-server- 若内存紧张(≤2GB),禁用不用的 PHP 扩展,调低
php-fpm进程数(见下文)
✅ 二、目录结构规划(清晰隔离)
# 创建统一站点根目录(便于管理)
sudo mkdir -p /var/www/sites/{site1.com,site2.com,site3.com}
# 每个站点独立用户(可选但推荐,增强隔离)
sudo adduser --disabled-password --gecos "" wp-site1
sudo adduser --disabled-password --gecos "" wp-site2
# 将用户加入 www-data 组
sudo usermod -a -G www-data wp-site1 wp-site2
# 设置目录归属
sudo chown -R wp-site1:www-data /var/www/sites/site1.com
sudo chown -R wp-site2:www-data /var/www/sites/site2.com
sudo chmod -R 750 /var/www/sites/
✅ 三、Nginx 配置:「通用模板 + 站点专属」(关键!)
🔹 1. 创建通用 WordPress 配置片段(复用,避免重复)
sudo nano /etc/nginx/snippets/wordpress.conf
# /etc/nginx/snippets/wordpress.conf
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
# 处理 WordPress 后台及 REST API
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 注意版本匹配
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 安全:禁止访问敏感文件
location ~ /.ht {
deny all;
}
location ~ ^/wp-config.php$ {
deny all;
}
location ~ ^/wp-content/.+.php$ {
deny all;
}
location ~ ^/wp-includes/.+.php$ {
deny all;
}
# 静态资源缓存(提升性能)
location ~ .(js|css|png|jpg|jpeg|gif|ico|svg|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
🔹 2. 为每个站点创建独立 server 块(推荐放在 /etc/nginx/sites-available/)
sudo nano /etc/nginx/sites-available/site1.com
# /etc/nginx/sites-available/site1.com
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/sites/site1.com;
access_log /var/log/nginx/site1.com.access.log;
error_log /var/log/nginx/site1.com.error.log;
include snippets/wordpress.conf;
# 可选:强制 HTTPS(配好 SSL 后启用)
# return 301 https://$server_name$request_uri;
}
# 启用站点(软链接到 sites-enabled)
sudo ln -sf /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo ln -sf /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/
🔹 3. 启用所有站点并测试
sudo nginx -t # ✅ 必须通过!
sudo systemctl reload nginx
✅ 四、PHP-FPM 优化(轻量服务器重点!)
编辑主配置(降低内存占用):
sudo nano /etc/php/8.2/fpm/pool.d/www.conf
修改以下关键项(以 2GB 内存为例):
; 限制进程数(动态模式更省资源)
pm = dynamic
pm.max_children = 10 # 总最大子进程数(1C2G → 5~8;2C4G → 10~15)
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500 # 防止内存泄漏,请求后重启进程
; 限制单个进程内存(可选)
php_admin_value[memory_limit] = 128M
; 关闭未使用的扩展(节省内存)
; extension=imap.so # 注释掉不用的
✅ 重启生效:
sudo systemctl restart php8.2-fpm
✅ 五、数据库隔离(安全最佳实践)
为每个 WordPress 站点创建独立数据库 + 独立用户:
-- 登录 MySQL/MariaDB
mysql -u root -p
CREATE DATABASE wp_site1 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE wp_site2 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user1'@'localhost' IDENTIFIED BY '强密码1';
CREATE USER 'wp_user2'@'localhost' IDENTIFIED BY '强密码2';
GRANT ALL ON wp_site1.* TO 'wp_user1'@'localhost';
GRANT ALL ON wp_site2.* TO 'wp_user2'@'localhost';
FLUSH PRIVILEGES;
✅ WordPress 安装时,
wp-config.php中填对应 DB_NAME/DB_USER/DB_PASSWORD。
✅ 六、SSL(Let’s Encrypt,免费自动)
安装 Certbot 并一键签发(需域名已解析):
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d site1.com -d www.site1.com
sudo certbot --nginx -d site2.com -d www.site2.com
✅ Certbot 会自动修改 Nginx 配置启用 HTTPS,并添加自动续期定时任务。
✅ 七、日常维护小贴士
| 任务 | 命令/说明 |
|---|---|
| 查看各站点日志 | tail -f /var/log/nginx/site1.com.access.log |
| 检查 PHP 内存使用 | sudo systemctl status php8.2-fpm + sudo htop |
| WordPress 自动更新 | 在 wp-config.php 加:define('WP_AUTO_UPDATE_CORE', 'minor');add_filter('allow_major_auto_core_updates', '__return_false'); |
| 备份脚本示例 | 用 mysqldump + tar 定时压缩 /var/www/sites/ 和数据库,推送到 OSS/COS 或本地网络盘 |
🚫 常见坑 & 规避
- ❌ 不要把所有 WordPress 放在同一目录用子目录伪静态(权限混乱、插件兼容差)→ ✅ 坚持多目录多 server 块
- ❌
fastcgi_pass路径写错(如php8.3-fpm.sock但实际是8.2)→ ✅ls /run/php/确认 - ❌ 忘记
chown目录给www-data或 PHP-FPM 用户 → 导致 502/403 - ❌ 未限制
pm.max_children→ 小内存服务器 OOM 崩溃
需要我为你生成:
- ✅ 一键部署脚本(自动建站、配 Nginx、设 DB、启 SSL)
- ✅ 针对宝塔/LNMP 等面板的对比建议
- ✅ Docker 多站轻量方案(更隔离,适合进阶)
- ✅ WordPress 多站点(Multisite)是否适合你的场景?
欢迎告诉我你的具体环境(CPU/内存、域名数量、是否已有数据),我可以为你定制完整 shell 脚本 👇
PHPWP博客