努力
加油

使用轻量云服务器如何部署多个网站?

在轻量云服务器(如阿里云、腾讯云、华为云等提供的轻量应用服务器)上部署多个网站,核心思路其实和传统的 VPS 或物理机没有本质区别:通过 Web 服务器软件(Nginx/Apache)进行反向XX,利用域名或端口区分不同的站点。

轻量云的优势在于“镜像化”和“一体化”,很多厂商提供了一键安装的 WordPress 或 LAMP/LNMP 环境。但如果你要跑多个独立网站,直接复用这些一键包往往不够灵活,或者容易互相干扰。

下面我以目前最主流、配置最清晰的 LNMP (Linux + Nginx + MySQL + PHP) 架构为例,讲清楚怎么从零开始,在一台轻量云上把三个不同域名的网站跑起来。假设你的轻量云系统是 CentOS 7/8 或 Ubuntu 20.04/22.04。

第一步:基础环境准备

  1. 购买与系统选择

    • 建议直接选择纯净版 Linux 系统(CentOS 或 Ubuntu),不要选带预装环境的镜像,除非你非常熟悉那个特定的一键包结构。
    • 确保防火墙已放行 HTTP(80) 和 HTTPS(443) 端口。轻量云控制台里通常有“安全组”或“防火墙”设置,记得加上规则。
  2. 安装 Nginx 和 PHP-FPM

    • 这里不推荐用宝塔面板(虽然简单),因为对于技术博客来说,掌握底层命令更有助于排查问题。当然,如果你追求极致效率,宝塔也是个好选择,逻辑是一样的。
    • 以 Ubuntu 为例:
      sudo apt update
      sudo apt install nginx php-fpm php-mysql mysql-server -y
    • 启动服务并设置开机自启:
      sudo systemctl start nginx
      sudo systemctl enable nginx
      sudo systemctl start php8.1-fpm # 版本号根据实际安装情况调整
      sudo systemctl enable php8.1-fpm

第二步:规划网站目录结构

为了管理清晰,建议在 /var/www 下为每个网站建立独立的目录。

sudo mkdir -p /var/www/site1.com/html
sudo mkdir -p /var/www/site2.com/html
sudo mkdir -p /var/www/site3.com/html

注意:site1.com 等只是示例域名,你需要替换成你自己的真实域名。

给这些目录赋予正确的权限,让 Nginx 用户(通常是 www-data)可以读取:

sudo chown -R www-data:www-data /var/www/site1.com
sudo chown -R www-data:www-data /var/www/site2.com
sudo chown -R www-data:www-data /var/www/site3.com

在每个 html 目录下放一个测试文件 index.html,内容随便写点东西,方便后续验证。

第三步:配置 Nginx 虚拟主机(关键步骤)

这是实现“多站合一”的核心。Nginx 通过 server_name 来区分请求发给哪个网站。

我们需要为每个网站创建一个配置文件。Nginx 的配置文件通常在 /etc/nginx/sites-available/,软链接到 /etc/nginx/sites-enabled/。

1. 创建 site1.com 的配置

sudo nano /etc/nginx/sites-available/site1.com

写入以下内容(以 HTTPS 为例,稍后讲证书):

server {
    listen 80;
    server_name site1.com www.site1.com;

    root /var/www/site1.com/html;
    index index.html index.php index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    # PHP 处理部分
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 注意路径可能因版本而异
    }
}

2. 启用该配置

sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/site1.com

3. 重复操作

按照同样的方式,为 site2.com 和 site3.com 创建对应的配置文件,修改 server_name 和 root 指向各自的目录。

4. 测试并重载 Nginx

在重载之前,务必测试配置语法是否正确:

sudo nginx -t

如果显示 syntax is ok 和 test is successful,则执行:

sudo systemctl reload nginx

此时,如果你的域名 DNS 已经解析到了这台服务器的 IP,访问 http://site1.com 应该能看到你在 /var/www/site1.com/html 里放的测试页面。

第四步:HTTPS 证书配置(生产环境必做)

现在浏览器访问会提示“不安全”。轻量云厂商通常提供免费的 SSL 证书申请服务,或者你可以使用 Let’s Encrypt 的 Certbot。

这里推荐用 Certbot,通用且免费。

  1. 安装 Certbot:

    sudo apt install certbot python3-certbot-nginx
  2. 获取证书并自动修改 Nginx 配置:

    sudo certbot --nginx -d site1.com -d www.site1.com

    按提示输入邮箱,同意条款。Certbot 会自动帮你生成证书,并修改 Nginx 配置文件,将 80 端口重定向到 443,并加入 SSL 参数。

  3. 对其他两个网站重复此步骤。

第五步:数据库隔离(可选但推荐)

虽然所有网站可以共用同一个 MySQL 实例,但为了安全和性能隔离,建议为每个网站创建独立的数据库和用户。

-- 登录 MySQL
mysql -u root -p

-- 为 site1 创建数据库和用户
CREATE DATABASE site1_db;
CREATE USER 'site1_user'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON site1_db.* TO 'site1_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

在你的网站程序(如 WordPress、Typecho 等)安装时,填入这个新的数据库信息即可。

常见问题与避坑指南

  1. 端口冲突:
    轻量云有时默认占用了 8080 或其他端口。确保你的 Nginx 监听的是 80 和 443。如果本地调试发现改不了 80 端口,检查是否有其他进程占用(如 lsof -i :80)。

  2. PHP 版本差异:
    如果你的多个网站对 PHP 版本要求不同(比如一个老项目需要 PHP 7.4,新项目需要 PHP 8.1),单实例 Nginx + 单 PHP-FPM 搞不定。这时候需要安装多个 PHP 版本,并在 Nginx 配置中分别指定 fastcgi_pass 到不同的 Socket 文件。这在轻量云上稍微复杂一点,建议尽量统一 PHP 版本,或使用 Docker 隔离。

  3. 资源限制:
    轻量云通常是共享 CPU 和内存。如果你的某个网站流量突然增大,可能会影响其他网站。监控一下 top 或 htop,如果发现负载过高,考虑升级配置或优化代码。

  4. 备份策略:
    轻量云的优势之一是快照功能。定期(每周)对整台服务器打快照。这样即使你误删了某个网站的配置文件,也能一键恢复整个环境,比单独备份每个网站的数据更省心。

总结

在一台轻量云上部署多个网站,本质就是 Nginx 的多 Server Block 配置。

  • 简单场景:用宝塔面板,图形化操作,添加站点,绑定域名,申请证书,全自动。
  • 专业场景:手动配置 Nginx,遵循“独立目录、独立配置、独立数据库”的原则。

只要 DNS 解析正确,Nginx 配置无误,理论上你可以在一台 2C2G 的轻量云上轻松运行几十甚至上百个静态或小型动态网站。关键在于资源管理和配置规范。