在一台Linux服务器上同时运行两个WordPress站点是完全可行的。以下是详细的步骤和最佳实践:
1. 准备工作
系统要求
- Linux服务器(推荐Ubuntu/CentOS)
- LAMP或LEMP环境(Apache/Nginx + MySQL/MariaDB + PHP)
2. 安装基础环境
# Ubuntu/Debian
sudo apt update
sudo apt install apache2 mysql-server php php-mysql php-curl php-gd php-mbstring php-xml php-zip
# 或者使用Nginx
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
3. 创建数据库
sudo mysql -u root -p
# 在MySQL中执行
CREATE DATABASE wordpress_site1;
CREATE DATABASE wordpress_site2;
CREATE USER 'wpuser1'@'localhost' IDENTIFIED BY 'strong_password1';
CREATE USER 'wpuser2'@'localhost' IDENTIFIED BY 'strong_password2';
GRANT ALL PRIVILEGES ON wordpress_site1.* TO 'wpuser1'@'localhost';
GRANT ALL PRIVILEGES ON wordpress_site2.* TO 'wpuser2'@'localhost';
FLUSH PRIVILEGES;
EXIT;
4. 部署WordPress文件
# 下载WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
# 创建网站目录
sudo mkdir -p /var/www/site1.com
sudo mkdir -p /var/www/site2.com
# 复制WordPress文件
sudo cp -r /tmp/wordpress/* /var/www/site1.com/
sudo cp -r /tmp/wordpress/* /var/www/site2.com/
# 设置权限
sudo chown -R www-data:www-data /var/www/site1.com
sudo chown -R www-data:www-data /var/www/site2.com
sudo chmod -R 755 /var/www
5. 配置虚拟主机
Apache配置
# /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>
# /etc/apache2/sites-available/site2.com.conf
<VirtualHost *:80>
ServerName site2.com
ServerAlias www.site2.com
DocumentRoot /var/www/site2.com
<Directory /var/www/site2.com>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site2_error.log
CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
</VirtualHost>
启用站点:
sudo a2ensite site1.com.conf
sudo a2ensite site2.com.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
Nginx配置
# /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:/var/run/php/php8.1-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
# /etc/nginx/sites-available/site2.com
server {
listen 80;
server_name site2.com www.site2.com;
root /var/www/site2.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:/var/run/php/php8.1-fpm.sock;
}
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
6. 配置WordPress
第一个站点
cd /var/www/site1.com
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
修改配置:
define('DB_NAME', 'wordpress_site1');
define('DB_USER', 'wpuser1');
define('DB_PASSWORD', 'strong_password1');
define('DB_HOST', 'localhost');
第二个站点
cd /var/www/site2.com
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
修改配置:
define('DB_NAME', 'wordpress_site2');
define('DB_USER', 'wpuser2');
define('DB_PASSWORD', 'strong_password2');
define('DB_HOST', 'localhost');
7. 域名解析
将域名指向服务器IP地址,或者编辑本地hosts文件进行测试:
127.0.0.1 site1.com
127.0.0.1 site2.com
8. 安全加固
# 创建.htaccess文件
echo "Options -Indexes" | sudo tee /var/www/site1.com/.htaccess
echo "Options -Indexes" | sudo tee /var/www/site2.com/.htaccess
# 设置文件权限
sudo find /var/www/site1.com -type d -exec chmod 755 {} ;
sudo find /var/www/site1.com -type f -exec chmod 644 {} ;
sudo find /var/www/site2.com -type d -exec chmod 755 {} ;
sudo find /var/www/site2.com -type f -exec chmod 644 {} ;
9. 使用子目录方式(可选)
如果想用同一个域名的不同路径:
# Apache配置
Alias /blog1 /var/www/wordpress1
Alias /blog2 /var/www/wordpress2
10. 监控和维护
# 检查服务状态
sudo systemctl status apache2
sudo systemctl status mysql
# 查看访问日志
tail -f /var/log/apache2/site1_access.log
tail -f /var/log/apache2/site2_access.log
注意事项
- 资源分配:确保服务器有足够的内存和CPU资源
- 备份策略:为每个站点单独设置备份
- 更新管理:分别更新WordPress核心、主题和插件
- 安全扫描:定期检查两个站点的安全性
- 性能监控:监控每个站点的性能表现
这样就可以在同一台服务器上成功运行两个独立的WordPress站点了。
云小栈