加油
努力

使用LNMP或LAMP环境如何在一个服务器上托管多个WordPress?

在 LNMP(Linux + Nginx + MySQL/MariaDB + PHP-FPM)或 LAMP(Linux + Apache + MySQL/MariaDB + PHP)环境中,托管多个 WordPress 网站的核心思路是:每个站点拥有独立的 Web 根目录、独立的数据库、独立的配置文件(虚拟主机配置),并共享相同的底层软件栈。

以下是两种环境的详细实现步骤和最佳实践:


🌐 一、通用前提条件

  1. 服务器资源充足:CPU、内存、磁盘空间需支持多站点并发访问。
  2. 域名解析完成:每个 WordPress 站点绑定独立域名(或子域名),指向同一服务器 IP。
  3. SSL 证书准备:为每个域名申请 SSL 证书(可使用 Let’s Encrypt 自动续签)。
  4. 用户权限管理:建议为每个站点创建独立系统用户(可选但推荐),提高安全性。

🟦 二、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.comhttps://site2.com,按提示填写数据库信息(用户名、密码、库名等),完成安装。


🟥 三、LAMP 环境(Apache + mod_php 或 PHP-FPM)

注:现代 LAMP 通常使用 mod_phpphp-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

  • 优点:统一后台、插件/主题全局管理、节省资源。
  • 缺点:灵活性较低,某些插件不兼容,故障影响所有子站。

启用方法:

  1. wp-config.php 添加:
    define('WP_ALLOW_MULTISITE', true);
  2. 登录 WP 后台 → 工具 → 网络配置 → 选择“子域名”或“子目录”模式。
  3. 按提示修改 .htaccess(Apache)或 Nginx 配置。

⚠️ 注意:Multisite 不适合完全不同业务、不同技术需求的站点,仅适合品牌系列站、博客网络等场景。


✅ 总结对比

特性 LNMP LAMP
性能 Nginx 高并发更好 Apache 模块化灵活
配置复杂度 中等(需手动配 vhost) 较低(a2ensite 一键启用)
资源占用 略低 略高(尤其 mod_php)
适用场景 高流量、高性能需求 传统应用、开发调试方便

如你提供具体操作系统(Ubuntu/CentOS)、PHP 版本、是否使用面板(如宝塔、CyberPanel),我可以给出更精确的命令和配置模板。

云服务器