在 LNMP(Linux + Nginx + MySQL/MariaDB + PHP-FPM)或 LAMP(Linux + Apache + MySQL/MariaDB + PHP)环境中,托管多个 WordPress 网站的核心思路是:每个站点拥有独立的 Web 根目录、独立的数据库、独立的配置文件(虚拟主机配置),并共享相同的底层软件栈。
以下是两种环境的详细实现步骤和最佳实践:
🌐 一、通用前提条件
- 服务器资源充足:CPU、内存、磁盘空间需支持多站点并发访问。
- 域名解析完成:每个 WordPress 站点绑定独立域名(或子域名),指向同一服务器 IP。
- SSL 证书准备:为每个域名申请 SSL 证书(可使用 Let’s Encrypt 自动续签)。
- 用户权限管理:建议为每个站点创建独立系统用户(可选但推荐),提高安全性。
🟦 二、LNMP 环境(Nginx + PHP-FPM)
✅ 步骤 1:创建网站目录结构
sudo mkdir -p /var/www/site1.com/public_html
sudo mkdir -p /var/www/site2.com/public_html
# 每个站点独立目录
✅ 步骤 2:创建独立数据库和用户
-- 登录 MySQL
mysql -u root -p
-- 为 site1.com 创建数据库和用户
CREATE DATABASE site1_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'site1_user'@'localhost' IDENTIFIED BY 'strong_password_1';
GRANT ALL PRIVILEGES ON site1_db.* TO 'site1_user'@'localhost';
FLUSH PRIVILEGES;
-- 为 site2.com 重复上述操作
CREATE DATABASE site2_db ...;
CREATE USER 'site2_user'@'localhost' ...;
GRANT ALL PRIVILEGES ON site2_db.* TO 'site2_user'@'localhost';
FLUSH PRIVILEGES;
✅ 步骤 3:下载并安装 WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
# 复制内容到对应站点目录
sudo cp -r wordpress/* /var/www/site1.com/public_html/
sudo cp -r wordpress/* /var/www/site2.com/public_html/
# 设置权限(以 www-data 为例,根据你的 PHP-FPM 用户调整)
sudo chown -R www-data:www-data /var/www/site1.com
sudo chown -R www-data:www-data /var/www/site2.com
✅ 步骤 4:配置 Nginx 虚拟主机
创建两个配置文件:
/etc/nginx/sites-available/site1.com
server {
listen 80;
server_name site1.com www.site1.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name site1.com www.site1.com;
root /var/www/site1.com/public_html;
index index.php index.html;
ssl_certificate /etc/letsencrypt/live/site1.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site1.com/privkey.pem;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
fastcgi_pass unix:/run/php/php-fpm.sock; # 或使用 127.0.0.1:9000
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
}
/etc/nginx/sites-available/site2.com(类似,修改域名和路径)
启用配置并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
✅ 步骤 5:通过浏览器完成 WordPress 安装
访问 https://site1.com 和 https://site2.com,按提示填写数据库信息(用户名、密码、库名等),完成安装。
🟥 三、LAMP 环境(Apache + mod_php 或 PHP-FPM)
注:现代 LAMP 通常使用
mod_php或php-fpm + mod_proxy_fcgi。以下以mod_php为例,更简单;若用 PHP-FPM,配置略有不同。
✅ 步骤 1:创建网站目录
sudo mkdir -p /var/www/site1.com/html
sudo mkdir -p /var/www/site2.com/html
✅ 步骤 2:创建数据库(同上)
与 LNMP 部分完全相同。
✅ 步骤 3:安装 WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
sudo cp -r wordpress/* /var/www/site1.com/html/
sudo cp -r wordpress/* /var/www/site2.com/html/
sudo chown -R www-data:www-data /var/www/site1.com
sudo chown -R www-data:www-data /var/www/site2.com
✅ 步骤 4:配置 Apache 虚拟主机
/etc/apache2/sites-available/site1.com.conf
<VirtualHost *:80>
ServerName site1.com
ServerAlias www.site1.com
Redirect permanent / https://site1.com/
</VirtualHost>
<VirtualHost *:443>
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1.com/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/site1.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/site1.com/privkey.pem
<Directory /var/www/site1.com/html>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site1_error.log
CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>
/etc/apache2/sites-available/site2.com.conf(类似)
启用站点并重启 Apache:
sudo a2ensite site1.com.conf
sudo a2ensite site2.com.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
✅ 步骤 5:浏览器完成安装
同样访问各域名,完成 WordPress 初始化。
🔒 四、安全与性能优化建议
| 项目 | 建议 |
|---|---|
| PHP-FPM 池隔离 | 为每个站点创建独立的 PHP-FPM pool(/etc/php/8.x/fpm/pool.d/site1.conf),限制资源使用 |
| 防火墙 | 仅开放 80/443 端口,禁用不必要的服务 |
| 文件权限 | 确保 wp-content/uploads 可写,但其他文件只读 |
| 自动备份 | 使用脚本定期备份数据库和文件 |
| WAF/防护 | 安装 ModSecurity(Apache)或 Fail2ban 防止暴力破解 |
| CDN | 使用 Cloudflare 等 CDN 提速并隐藏真实 IP |
🧩 五、高级选项:WordPress Multisite(多站点网络)
如果你希望共享同一个 WordPress 实例管理多个子站,可以考虑启用 WordPress Multisite:
- 优点:统一后台、插件/主题全局管理、节省资源。
- 缺点:灵活性较低,某些插件不兼容,故障影响所有子站。
启用方法:
- 在
wp-config.php添加:define('WP_ALLOW_MULTISITE', true); - 登录 WP 后台 → 工具 → 网络配置 → 选择“子域名”或“子目录”模式。
- 按提示修改
.htaccess(Apache)或 Nginx 配置。
⚠️ 注意:Multisite 不适合完全不同业务、不同技术需求的站点,仅适合品牌系列站、博客网络等场景。
✅ 总结对比
| 特性 | LNMP | LAMP |
|---|---|---|
| 性能 | Nginx 高并发更好 | Apache 模块化灵活 |
| 配置复杂度 | 中等(需手动配 vhost) | 较低(a2ensite 一键启用) |
| 资源占用 | 略低 | 略高(尤其 mod_php) |
| 适用场景 | 高流量、高性能需求 | 传统应用、开发调试方便 |
如你提供具体操作系统(Ubuntu/CentOS)、PHP 版本、是否使用面板(如宝塔、CyberPanel),我可以给出更精确的命令和配置模板。
云小栈