一个阿里云服务器上怎么部署多个网站?

在阿里云服务器上部署多个网站,核心思路是利用Web 服务器软件(如 Nginx、Apache)的虚拟主机(Virtual Host)功能,将不同的域名或端口映射到服务器上的不同目录。

以下是基于最常用方案 Nginx + Linux (CentOS/Ubuntu) 的详细部署步骤:

1. 前置准备

  • 服务器环境:已购买并初始化阿里云 ECS 实例。
  • 域名解析:确保所有需要访问的域名已在 DNS 服务商处配置 A 记录,指向该服务器的公网 IP。
  • Web 服务安装:如果未安装,请先安装 Nginx。
    # CentOS 示例
    sudo yum install nginx -y
    # Ubuntu 示例
    sudo apt update && sudo apt install nginx -y

2. 创建网站目录结构

为每个网站创建独立的文件夹和配置文件。假设你有两个网站:site1.comsite2.com

# 创建网站根目录
sudo mkdir -p /var/www/site1/html
sudo mkdir -p /var/www/site2/html

# 创建简单的测试页面 (index.html)
echo "<h1>Welcome to Site 1</h1>" | sudo tee /var/www/site1/html/index.html
echo "<h1>Welcome to Site 2</h1>" | sudo tee /var/www/site2/html/index.html

# 设置权限 (允许 Nginx 读取)
sudo chown -R www-data:www-data /var/www/site1/html
sudo chown -R www-data:www-data /var/www/site2/html

(注:用户组 www-data 在 Debian/Ubuntu 中常见,CentOS 通常为 nginx)


3. 配置 Nginx 虚拟主机

Nginx 默认有一个主配置文件 /etc/nginx/nginx.conf,但最佳实践是将每个网站的配置单独放在 /etc/nginx/conf.d/ 目录下。

为 site1.com 创建配置

sudo nano /etc/nginx/conf.d/site1.conf

填入以下内容:

server {
    listen 80;
    server_name site1.com www.site1.com; # 替换为你的实际域名

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

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

为 site2.com 创建配置

sudo nano /etc/nginx/conf.d/site2.conf

填入类似内容,只需修改 server_nameroot 路径:

server {
    listen 80;
    server_name site2.com www.site2.com; # 替换为你的实际域名

    root /var/www/site2/html;
    index index.html index.htm;

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

关键点:只要 server_name 不同,Nginx 就能自动根据请求的域名将流量分发到对应的目录。


4. 检查配置并重启服务

在应用更改前,务必检查配置文件语法是否正确,避免导致服务中断。

# 检查语法
sudo nginx -t

# 如果显示 "syntax is ok" 和 "test is successful",则重启 Nginx
sudo systemctl restart nginx

5. 配置阿里云安全组(防火墙)

这是阿里云特有的关键步骤。即使 Nginx 配置正确,如果云控制台没放行端口,外部也无法访问。

  1. 登录 阿里云 ECS 控制台
  2. 找到你的实例,点击 更多 -> 网络和安全组 -> 安全组配置
  3. 入方向 规则中,确保有以下规则:
    • 端口80 (HTTP)
    • 端口443 (HTTPS,如果你后续要上 SSL)
    • 授权对象0.0.0.0/0 (允许所有 IP 访问)
    • 如果是开发测试,建议仅限制特定 IP,生产环境通常开放 80/443。

6. 验证与进阶优化

验证访问

在本地浏览器输入 http://site1.comhttp://site2.com,应分别看到对应的欢迎页面。

进阶:配置 HTTPS (SSL 证书)

生产环境强烈建议启用 HTTPS。可以使用 Certbot 免费申请 Let’s Encrypt 证书:

# 安装 certbot 和 nginx 插件
sudo apt install certbot python3-certbot-nginx  # Ubuntu
# 或
sudo yum install certbot python3-certbot-nginx  # CentOS

# 自动获取并配置证书 (会自动修改上面的 conf 文件)
sudo certbot --nginx -d site1.com -d www.site1.com
sudo certbot --nginx -d site2.com -d www.site2.com

运行后,Certbot 会自动更新 Nginx 配置,强制跳转 HTTPS,并设置自动续期。

总结

在单台阿里云服务器上部署多站点的核心在于:

  1. 物理隔离:每个网站有独立的代码目录。
  2. 逻辑隔离:通过 Nginx 的 server_name 区分不同域名。
  3. 网络打通:确保阿里云安全组放行了 80/443 端口。

这种方式成本低、性能好,是中小规模多站点部署的标准方案。如果需要更复杂的资源隔离(如防止一个网站挂掉影响另一个),可以考虑使用 Docker 容器化部署。