加油
努力

如何在一台Linux服务器上同时运行两个WordPress站点?

在一台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

注意事项

  1. 资源分配:确保服务器有足够的内存和CPU资源
  2. 备份策略:为每个站点单独设置备份
  3. 更新管理:分别更新WordPress核心、主题和插件
  4. 安全扫描:定期检查两个站点的安全性
  5. 性能监控:监控每个站点的性能表现

这样就可以在同一台服务器上成功运行两个独立的WordPress站点了。

云服务器