在阿里云弹性应用服务器(如ECS)上部署多个网站,可以通过以下步骤实现,主要涉及Web服务器配置、域名解析和资源隔离。以下是详细方案:
一、准备工作
-
服务器环境
- 确保已安装Web服务器(如Nginx、Apache)和PHP/Node.js/Python等运行环境。
- 推荐使用宝塔面板(可选)简化管理。
-
域名与解析
- 为每个网站注册独立域名(如
site1.com和site2.com)。 - 在阿里云DNS控制台将域名A记录解析到服务器公网IP。
- 为每个网站注册独立域名(如
二、部署方案(以Nginx为例)
方案1:基于多域名配置(推荐)
通过不同域名区分网站,Nginx配置示例如下:
# 网站1:site1.com
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1;
index index.html index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# PHP支持(可选)
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
}
}
# 网站2:site2.com
server {
listen 80;
server_name site2.com www.site2.com;
root /var/www/site2;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
关键步骤:
- 创建网站目录:
mkdir -p /var/www/{site1,site2} - 上传网站文件到对应目录。
- 测试配置并重启Nginx:
nginx -t # 检查语法 systemctl restart nginx
方案2:基于端口区分
如果无多域名,可通过不同端口访问(如 8080、8081):
server {
listen 8080;
server_name _;
root /var/www/site1;
# ...
}
server {
listen 8081;
server_name _;
root /var/www/site2;
# ...
}
访问方式:http://服务器IP:8080 和 http://服务器IP:8081。
方案3:基于子目录
将网站放在主域名的子路径下(如 example.com/site1):
server {
listen 80;
server_name example.com;
location /site1 {
alias /var/www/site1;
index index.html;
}
location /site2 {
alias /var/www/site2;
index index.html;
}
}
三、高级配置
-
HTTPS支持
- 为每个域名申请SSL证书(阿里云免费SSL或Let’s Encrypt)。
- 在Nginx中配置443端口和证书路径:
server { listen 443 ssl; server_name site1.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; # ... }
-
资源隔离
- 使用Docker容器隔离每个网站(推荐生产环境使用):
docker run -d -p 80:80 -v /path/to/site1:/usr/share/nginx/html --name site1 nginx
- 使用Docker容器隔离每个网站(推荐生产环境使用):
-
数据库分离
- 为每个网站创建独立数据库用户和库(MySQL/MariaDB)。
四、验证与调试
- 检查域名解析是否生效:
ping site1.com - 使用浏览器访问各域名,确认内容正确。
- 查看Nginx错误日志:
tail -f /var/log/nginx/error.log
常见问题
- 403 Forbidden:检查目录权限(
chmod -R 755 /var/www)和文件所有者。 - 502 Bad Gateway:确保PHP-FPM或后端服务运行正常。
- 端口冲突:使用
netstat -tulnp确认端口占用。
通过以上步骤,可以高效地在单台阿里云ECS上托管多个网站。根据需求选择适合的方案,并确保做好安全配置(如防火墙、定期备份)。
云服务器