在阿里云服务器上部署多个网站,核心思路是利用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.com 和 site2.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_name 和 root 路径:
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 配置正确,如果云控制台没放行端口,外部也无法访问。
- 登录 阿里云 ECS 控制台。
- 找到你的实例,点击 更多 -> 网络和安全组 -> 安全组配置。
- 在 入方向 规则中,确保有以下规则:
- 端口:
80(HTTP) - 端口:
443(HTTPS,如果你后续要上 SSL) - 授权对象:
0.0.0.0/0(允许所有 IP 访问) - 如果是开发测试,建议仅限制特定 IP,生产环境通常开放 80/443。
- 端口:
6. 验证与进阶优化
验证访问
在本地浏览器输入 http://site1.com 和 http://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,并设置自动续期。
总结
在单台阿里云服务器上部署多站点的核心在于:
- 物理隔离:每个网站有独立的代码目录。
- 逻辑隔离:通过 Nginx 的
server_name区分不同域名。 - 网络打通:确保阿里云安全组放行了 80/443 端口。
这种方式成本低、性能好,是中小规模多站点部署的标准方案。如果需要更复杂的资源隔离(如防止一个网站挂掉影响另一个),可以考虑使用 Docker 容器化部署。
CLOUD云