在一台Linux服务器上同时运行两个WordPress站点,可以通过以下几种常见方案实现:
方案一:使用虚拟主机(推荐)
通过Web服务器(如Nginx或Apache)的虚拟主机功能,为每个站点分配独立的配置。
1. 使用Nginx
步骤:
- 安装Nginx、PHP、MySQL/MariaDB
# Ubuntu/Debian sudo apt update sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc - 创建站点目录
sudo mkdir -p /var/www/site1 sudo mkdir -p /var/www/site2 sudo chown -R www-data:www-data /var/www/site* -
配置Nginx虚拟主机
-
为每个站点创建独立的配置文件(如
/etc/nginx/sites-available/site1.conf):server { listen 80; server_name site1.com www.site1.com; root /var/www/site1; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; } } - 为第二个站点创建类似配置(修改
server_name和root)。
-
- 启用站点并重载Nginx
sudo ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/site2.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
2. 使用Apache
- 安装Apache
sudo apt install apache2 libapache2-mod-php mysql-server - 创建虚拟主机配置
- 在
/etc/apache2/sites-available/下为每个站点创建.conf文件(如site1.conf):<VirtualHost *:80> ServerName site1.com DocumentRoot /var/www/site1 <Directory /var/www/site1> AllowOverride All </Directory> </VirtualHost>
- 在
- 启用站点
sudo a2ensite site1.conf sudo a2ensite site2.conf sudo systemctl reload apache2
方案二:使用Docker(灵活且隔离)
通过Docker容器独立运行每个WordPress站点。
步骤:
- 安装Docker和Docker Compose
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo apt install docker-compose - 为每个站点创建独立目录和
docker-compose.yml# site1/docker-compose.yml version: '3' services: db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: root_password MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress_password wordpress: depends_on: - db image: wordpress:latest ports: - "8080:80" # 第一个站点用8080端口 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress_password- 第二个站点使用不同端口(如
8081:80)和数据库配置。
- 第二个站点使用不同端口(如
- 启动站点
cd /path/to/site1 docker-compose up -d
方案三:使用多站点模式(WordPress Multisite)
如果两个站点属于同一组织且共享插件/主题,可使用WordPress内置的多站点功能。
步骤:
- 安装单个WordPress后,在
wp-config.php中添加:define('WP_ALLOW_MULTISITE', true); - 通过 工具 → 网络设置 启用多站点,按提示配置。
- 通过子域名(如
site1.example.com、site2.example.com)或子目录区分站点。
关键注意事项
- 域名与DNS:
- 将两个域名(如
site1.com和site2.com)的A记录指向服务器IP。 - 本地测试可在
/etc/hosts中添加临时解析。
- 将两个域名(如
- 数据库分离:
- 为每个WordPress创建独立的数据库和用户,避免数据混淆。
- 资源隔离:
- 使用Docker或虚拟机可更好地隔离资源(CPU、内存)。
- SSL证书:
- 使用Let’s Encrypt为每个域名免费配置HTTPS:
sudo certbot --nginx -d site1.com -d www.site1.com
- 使用Let’s Encrypt为每个域名免费配置HTTPS:
- 性能优化:
- 考虑使用缓存插件(如W3 Total Cache)或对象存储(如S3)托管媒体文件。
推荐方案
- 初学者:使用Nginx虚拟主机,简单直接。
- 追求隔离性:使用Docker,便于迁移和管理。
- 关联站点:使用WordPress Multisite,集中管理。
根据需求选择合适方案,并确保服务器资源(CPU、内存、磁盘)足够支撑两个站点。
CLOUD技术笔记