在 Linux 服务器上部署多个 WordPress 站点,通常采用 虚拟主机(Virtual Host) 或 反向(Reverse Proxy) 的方式,结合 LAMP(Linux + Apache + MySQL/MariaDB + PHP)或 LEMP(Nginx 替代 Apache)架构。以下是详细的配置步骤和建议。
一、基础环境准备
-
操作系统
- 推荐使用 Ubuntu Server LTS 或 CentOS Stream / RHEL。
- 保持系统更新:
sudo apt update && sudo apt upgrade(Ubuntu/Debian)或sudo dnf update(CentOS/RHEL)
-
安装 LAMP 或 LEMP 堆栈
方案 A:LAMP(Apache)
# 安装 Apache, MySQL, PHP
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-zip
方案 B:LEMP(Nginx)
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
二、为每个 WordPress 站点创建独立资源
1. 创建站点目录
sudo mkdir -p /var/www/site1.com /var/www/site2.com
2. 下载并解压 WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
# 复制到各个站点目录
sudo cp -r wordpress/* /var/www/site1.com/
sudo cp -r wordpress/* /var/www/site2.com/
# 设置权限
sudo chown -R www-data:www-data /var/www/site1.com
sudo chmod -R 755 /var/www/site1.com
对每个站点重复此操作,并确保文件所有权正确。
三、为每个站点创建独立数据库
sudo mysql -u root -p
CREATE DATABASE wp_site1;
CREATE DATABASE wp_site2;
CREATE USER 'user_site1'@'localhost' IDENTIFIED BY 'strong_password1';
CREATE USER 'user_site2'@'localhost' IDENTIFIED BY 'strong_password2';
GRANT ALL PRIVILEGES ON wp_site1.* TO 'user_site1'@'localhost';
GRANT ALL PRIVILEGES ON wp_site2.* TO 'user_site2'@'localhost';
FLUSH PRIVILEGES;
EXIT;
四、配置 Web 服务器
方案 A:Apache 虚拟主机
- 创建虚拟主机配置文件:
sudo nano /etc/apache2/sites-available/site1.com.conf
内容示例:
<VirtualHost *:80>
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1.com
<Directory /var/www/site1.com>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site1_error.log
CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>
同样创建 site2.com.conf。
- 启用站点并重启 Apache:
sudo a2ensite site1.com.conf sudo a2ensite site2.com.conf sudo a2enmod rewrite # 启用 URL 重写(WordPress 友好链接需要) sudo systemctl restart apache2
方案 B:Nginx 虚拟主机(Server Blocks)
- 创建配置文件:
sudo nano /etc/nginx/sites-available/site1.com
内容示例:
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 根据你的 PHP 版本调整
}
location ~ /.ht {
deny all;
}
}
- 启用站点:
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 restart nginx
---
### 五、配置 WordPress
对每个站点:
1. 访问 `http://site1.com/wp-admin/install.php`
2. 按提示填写数据库信息:
- 数据库名:`wp_site1`
- 用户名:`user_site1`
- 密码:`strong_password1`
- 数据库主机:`localhost`
- 表前缀:可设为 `wp1_`、`wp2_` 避免冲突
3. 完成安装向导。
---
### 六、安全与优化建议
1. **启用 HTTPS(推荐使用 Let's Encrypt)**
```bash
sudo apt install certbot python3-certbot-apache # 或 python3-certbot-nginx
sudo certbot --apache -d site1.com -d www.site1.com
-
防火墙设置(UFW)
sudo ufw allow 'Apache Full' # 或 Nginx Full sudo ufw enable -
定期备份
- 备份数据库:
mysqldump -u user -p wp_site1 > backup.sql - 备份文件:
tar -czf site1-backup.tar.gz /var/www/site1.com
- 备份数据库:
-
PHP 安全配置
- 编辑
/etc/php/*/apache2/php.ini或/etc/php/*/fpm/php.ini - 设置:
display_errors = Off,log_errors = On
- 编辑
-
使用不同
wp-config.php文件避免混淆- 可以通过复制模板自动部署,避免配置错误。
七、可选:使用 Docker 简化多站管理(高级)
也可使用 Docker Compose 为每个 WordPress 站点运行独立容器,实现完全隔离。
总结
| 步骤 | 内容 |
|---|---|
| 1 | 搭建 LAMP/LEMP 环境 |
| 2 | 为每个站点创建独立目录 |
| 3 | 为每个站点创建独立数据库和用户 |
| 4 | 配置 Web 服务器虚拟主机 |
| 5 | 安装并配置每个 WordPress 实例 |
| 6 | 启用 HTTPS 和安全加固 |
这样即可在同一台 Linux 服务器上安全、高效地运行多个独立的 WordPress 站点。
如需自动化部署脚本或 Docker 示例,可进一步说明需求。
CLOUD技术笔记