使用阿里云服务器部署多站点需要做哪些设置?

在阿里云 ECS(云服务器)上部署多站点,核心逻辑与本地服务器无异,主要涉及网络层、系统层、Web 服务层以及安全策略四个维度的配置。

以下是基于 Linux 环境(以 CentOS/Ubuntu 为例,使用 Nginx 或 Apache)的标准操作路径和关键设置点:

1. 基础环境与资源规划

  • 实例规格:确保 CPU 和内存足以支撑多个站点的并发请求。如果站点较多,建议根据实际负载选择适当规格的实例,或考虑后续扩容。
  • 操作系统选择:推荐使用主流发行版如 Ubuntu 20.04/22.04 LTS 或 CentOS Stream 8/9,社区支持完善,软件包兼容性好。
  • 磁盘分区:建议将网站数据盘单独挂载,便于备份和维护。例如 /data/www 作为所有站点的根目录。

2. 域名解析设置(DNS)

这是多站点访问的前提。你需要在阿里云云解析 DNS 控制台进行配置:

  • A 记录:为每个子域名或主域名添加 A 记录,指向你的 ECS 公网 IP。
    • 例如:www.site1.com -> ECS_IP
    • 例如:site2.com -> ECS_IP
    • 例如:api.site1.com -> ECS_IP
  • TTL 值:通常设置为 600 秒或默认值即可,修改后生效时间取决于 TTL。
  • 验证:使用 ping 命令检查域名是否正确解析到服务器 IP。

3. Web 服务器配置(以 Nginx 为例)

Nginx 因其高性能和低资源占用,是部署多站点的推荐选择。关键在于虚拟主机(Server Block)的配置。

步骤一:安装 Nginx

# Ubuntu/Debian
sudo apt update && sudo apt install nginx -y

# CentOS/RHEL
sudo yum install epel-release -y && sudo yum install nginx -y

步骤二:创建站点目录结构

为每个站点创建独立的目录和日志目录,避免权限混乱:

sudo mkdir -p /var/www/site1.com/html
sudo mkdir -p /var/www/site2.com/html
sudo chown -R $USER:$USER /var/www/site1.com/html
sudo chown -R $USER:$USER /var/www/site2.com/html

步骤三:编写 Server Block 配置文件

/etc/nginx/sites-available/ 下为每个站点创建独立配置文件:

文件:/etc/nginx/sites-available/site1.com

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

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

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

    # 可选:重定向 HTTP 到 HTTPS(需先配置 SSL)
    # return 301 https://$server_name$request_uri;
}

文件:/etc/nginx/sites-available/site2.com

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

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

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

步骤四:启用站点并测试

# 创建软链接到 sites-enabled
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 rm /etc/nginx/sites-enabled/default

# 测试配置语法
sudo nginx -t

# 重启 Nginx
sudo systemctl restart nginx

4. 防火墙与安全组设置(阿里云特有重点)

很多用户在此处出错,导致网络无法访问。必须同时配置两点:

A. 阿里云安全组(Security Group)

登录阿里云控制台 -> ECS 实例 -> 安全组 -> 配置规则:

  • 入方向规则
    • 允许 TCP 协议,端口 80(HTTP)和 443(HTTPS)来自 0.0.0.0/0
    • 如果仅通过 SSH 管理,确保 22 端口对特定 IP 开放,而非全开放。
  • 注意:安全组优先级高于系统内部防火墙。即使 iptables/firewalld 放行了,安全组不放行也无法访问。

B. 系统内部防火墙(firewalld/ufw)

# CentOS (firewalld)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

# Ubuntu (ufw)
sudo ufw allow 'Nginx Full'
sudo ufw enable

5. SSL 证书配置(HTTPS)

现代网站必须支持 HTTPS。推荐使用 Let’s Encrypt 免费证书,通过 Certbot 自动化管理。

# 安装 certbot
sudo apt install certbot python3-certbot-nginx  # Ubuntu
sudo yum install certbot python3-certbot-nginx  # CentOS

# 为每个站点生成证书(Nginx 插件会自动修改配置)
sudo certbot --nginx -d site1.com -d www.site1.com
sudo certbot --nginx -d site2.com -d www.site2.com

Certbot 会自动:

  1. 下载并安装证书。
  2. 修改 Nginx 配置,监听 443 端口。
  3. 设置自动续期(通过 cron job)。

6. 后端服务隔离(如适用)

如果站点包含 PHP、Python、Node.js 等动态内容:

  • PHP-FPM:可为不同站点配置不同的 PHP-FPM 池(pool),指定不同的 user/group,实现进程隔离。
  • 反向X_X:对于 Node.js 或 Go 应用,可在 Nginx 中使用 proxy_pass 指向本地不同端口(如 localhost:3000, localhost:3001)。

7. 监控与维护建议

  • 日志分离:每个站点的 access.log 和 error.log 应独立存放,便于排查问题。
  • 定期备份:利用阿里云快照功能,定期为系统盘和数据盘创建快照。也可配置定时任务将网站代码和数据库备份到 OSS(对象存储)。
  • 性能调优
    • 调整 Nginx 的 worker_processesworker_connections
    • 开启 gzip 压缩减少带宽消耗。
    • 设置静态资源缓存过期时间。

常见陷阱提醒

  1. 权限问题:确保 Web 服务器用户(如 www-datanginx)有读取网站目录的权限,但不要赋予写权限(除非必要)。
  2. SELinux:CentOS 默认开启 SELinux,可能阻止 Nginx 访问自定义目录。如需使用非标准路径,需设置上下文:semanage fcontext -a -t httpd_sys_content_t "/var/www(/.*)?" 然后 restorecon -Rv /var/www
  3. 端口冲突:确保没有其他服务占用 80/443 端口。
  4. CDN 提速:如果面向全国用户,建议在阿里云 CDN 控制台接入,并将源站设置为 ECS IP,可显著提升访问速度并减轻服务器压力。

通过以上步骤,你可以在单台阿里云 ECS 上稳定、安全地部署多个网站点。随着业务增长,再考虑拆分至多台服务器或使用容器化方案(如 Kubernetes)。

未经允许不得转载:CLOUD云枢 » 使用阿里云服务器部署多站点需要做哪些设置?