是的,你可以在同一台服务器上部署多个 WordPress 网站。这在实际生产环境中非常常见,比如使用一台 VPS 或云服务器托管多个客户网站或不同项目。
以下是实现这一目标的几种主流方式和步骤建议:
✅ 方法一:使用虚拟主机(Virtual Hosts) + Apache
1. 准备工作
- 一台 Linux 服务器(如 Ubuntu/CentOS)
- 安装 LAMP(Linux + Apache + MySQL/MariaDB + PHP)
# 示例:Ubuntu 上安装 LAMP
sudo apt update
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-zip
2. 为每个网站创建独立目录
sudo mkdir -p /var/www/site1.com
sudo mkdir -p /var/www/site2.com
下载 WordPress 到各自目录:
cd /var/www/site1.com
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz --strip-components=1
同理处理 site2.com。
3. 创建独立数据库
CREATE DATABASE wp_site1;
CREATE DATABASE wp_site2;
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'strongpassword1';
CREATE USER 'user2'@'localhost' IDENTIFIED BY 'strongpassword2';
GRANT ALL PRIVILEGES ON wp_site1.* TO 'user1'@'localhost';
GRANT ALL PRIVILEGES ON wp_site2.* TO 'user2'@'localhost';
FLUSH PRIVILEGES;
4. 配置 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。
启用站点:
sudo a2ensite site1.com.conf
sudo a2ensite site2.com.conf
sudo a2enmod rewrite
sudo systemctl reload apache2
5. 配置 WordPress
访问 http://site1.com 和 http://site2.com,分别完成 WordPress 安装,使用对应的数据库信息。
✅ 方法二:使用 Nginx + PHP-FPM(更高效)
1. 安装 LNMP 栈
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
2. 创建网站目录(同上)
3. 配置 Nginx server block
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1.com;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
保存为 /etc/nginx/sites-available/site1.com,然后软链接并启用:
sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
注意:每个网站使用独立的 server 块。
✅ 方法三:使用 Docker(推荐用于开发或复杂环境)
你可以用 Docker Compose 分别运行多个 WordPress 实例,每个实例有独立的数据库和端口或域名。
示例 docker-compose.yml(一个实例):
version: '3.8'
services:
db-site1:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass
volumes:
- db-data-site1:/var/lib/mysql
networks:
- wp-network
wordpress-site1:
image: wordpress:latest
depends_on:
- db-site1
ports:
- "8081:80"
environment:
WORDPRESS_DB_HOST: db-site1:3306
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
WORDPRESS_DB_NAME: wordpress
volumes:
- wp-data-site1:/var/www/html
networks:
- wp-network
volumes:
db-data-site1:
wp-data-site1:
networks:
wp-network:
再复制一份改为 8082 端口即可运行第二个网站。
可配合 Nginx 反向X_X + 域名实现多站点共存。
🔐 安全与维护建议
- 每个网站使用独立数据库和用户,避免权限泄露。
- 定期备份数据库和文件。
- 启用 HTTPS(使用 Let’s Encrypt + Certbot)。
- 限制上传目录执行权限(如
/wp-content/uploads禁止执行 PHP)。 - 使用不同
wp-config.php文件,避免密钥混淆。 - 考虑使用缓存插件或 OPcache 提升性能。
🌐 域名绑定
确保每个域名(如 site1.com、site2.com)的 DNS A 记录指向你的服务器公网 IP。
总结
| 方法 | 优点 | 适合场景 |
|---|---|---|
| Apache 虚拟主机 | 简单易懂 | 初学者、少量网站 |
| Nginx + PHP-FPM | 高性能、低资源 | 生产环境、高流量 |
| Docker | 隔离性好、易于管理 | 多环境、开发测试 |
如果你告诉我你使用的操作系统、是否已有服务器、是否需要域名支持等,我可以给出更具体的部署脚本或配置模板。
CLOUD云