如何在阿里云Linux虚拟机上部署Web服务?

在阿里云 Linux 虚拟机(ECS)上部署 Web 服务,可按以下清晰、安全、生产就绪的步骤操作(以 Ubuntu 22.04 / CentOS 7/8 / Alibaba Cloud Linux 3 为例,推荐使用 Alibaba Cloud Linux 3Ubuntu 22.04 LTS)。我们以部署一个简单的 Nginx 静态网站为起点,并扩展至支持 HTTPS 和防火墙配置。


✅ 一、前期准备

1. 创建并登录 ECS 实例

  • 在 阿里云控制台 创建 ECS(建议:2核4G+系统盘≥40GB,地域与目标用户就近)。
  • 选择镜像:✅ Alibaba Cloud Linux 3(推荐) 或 Ubuntu 22.04 / CentOS 7(注意 CentOS 7 已 EOL,不建议新项目)。
  • 安全组:务必开放端口(初始至少放行 22(SSH)、80(HTTP)、443(HTTPS)):
    • 入方向规则示例:
      协议类型:HTTP(80)   → 授权对象:0.0.0.0/0(或限制为您的 IP)
      协议类型:HTTPS(443) → 授权对象:0.0.0.0/0
      协议类型:SSH(22)    → 授权对象:您的公网 IP(强烈建议!避免暴力破解)

2. 连接服务器(SSH)

ssh -i ~/.ssh/your-key.pem root@<ECS公网IP>
# 或使用阿里云 Web Terminal(控制台 > 实例详情 > 远程连接)

🛠️ 二、部署 Web 服务(以 Nginx 为例)

✅ 优势:轻量、高性能、反向X_X能力强,适合静态站 & 后端网关。

▶ 步骤 1:更新系统 & 安装 Nginx

# Alibaba Cloud Linux 3 / CentOS 8+/Rocky/AlmaLinux
sudo dnf update -y
sudo dnf install -y nginx

# Ubuntu 22.04
sudo apt update && sudo apt install -y nginx

# 启动并设开机自启
sudo systemctl enable nginx
sudo systemctl start nginx

# 检查状态
sudo systemctl status nginx  # 应显示 active (running)

▶ 步骤 2:验证基础访问

  • 浏览器访问 http://<ECS公网IP> → 应看到 Nginx 默认欢迎页 ✅
  • 若无法访问,请检查:
    • 安全组是否放行 80 端口?
    • ECS 实例是否运行中?sudo systemctl is-active nginx
    • 防火墙(如有)是否拦截?见下文「防火墙配置」。

▶ 步骤 3:部署你的网站文件

# 创建网站目录(推荐非默认路径,便于管理)
sudo mkdir -p /var/www/myweb

# 上传你的 HTML/CSS/JS 文件(方式任选其一):
# 方式① 使用 scp(本地终端执行):
scp -r ./my-site/* root@<ECS公网IP>:/var/www/myweb/

# 方式② 在 ECS 上用 wget/curl 下载(如 GitHub Pages 构建产物):
sudo curl -L https://github.com/username/repo/releases/download/v1.0/site.zip -o /tmp/site.zip
sudo unzip /tmp/site.zip -d /var/www/myweb/

# 设置正确权限(关键!避免 403 错误)
sudo chown -R $USER:$USER /var/www/myweb
sudo chmod -R 755 /var/www/myweb

▶ 步骤 4:配置 Nginx 站点

# 备份默认配置
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

# 创建站点配置(推荐独立 conf 文件)
sudo tee /etc/nginx/conf.d/myweb.conf << 'EOF'
server {
    listen       80;
    server_name  _;  # 或替换为你的域名,如 example.com

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

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

    # 可选:禁止访问敏感文件
    location ~ /.(htaccess|htpasswd|env|git|svn) {
        deny all;
    }
}
EOF

# 检查语法 & 重载配置
sudo nginx -t  # ✅ 输出 "syntax is ok" and "test is successful"
sudo systemctl reload nginx

✅ 此时访问 http://<ECS公网IP> 即可看到你的网站!


🔐 三、启用 HTTPS(免费 SSL,推荐 Let’s Encrypt)

✅ 使用 certbot 自动申请泛域名/单域名证书(需已绑定域名)。

前提:

  • 已将域名(如 www.example.com)解析到该 ECS 公网 IP(A 记录)。
  • DNS 解析生效(ping www.example.comdig www.example.com 验证)。

操作:

# 安装 certbot(Ubuntu)
sudo apt install -y certbot python3-certbot-nginx

# Alibaba Cloud Linux 3 / CentOS 8+
sudo dnf install -y certbot python3-certbot-nginx

# 自动获取并配置 HTTPS(自动修改 nginx 配置)
sudo certbot --nginx -d example.com -d www.example.com

# ✅ 成功后会提示:
# - 证书存于 /etc/letsencrypt/live/example.com/
# - 自动重定向 HTTP→HTTPS
# - 自动续期已配置(systemd timer)

💡 后续续期:sudo certbot renew --dry-run(测试),生产环境无需手动操作。


🛡️ 四、强化安全(必做!)

项目 命令/说明
禁用 root 密码登录 sudo passwd -l root + 使用密钥登录(已在创建实例时启用)
创建普通用户(推荐) sudo adduser deploy && sudo usermod -aG sudo deploy
配置 UFW(Ubuntu)或 firewalld(Alibaba Cloud Linux) sudo ufw allow OpenSSH && sudo ufw allow 'Nginx Full' && sudo ufw enable
禁用未使用的服务 sudo systemctl list-unit-files --state=enabledsudo systemctl disable telnetd(如存在)
安装 fail2ban(防暴力破解) sudo apt install -y fail2ban(自动保护 SSH/Nginx)

🌐 五、进阶场景(可选)

场景 推荐方案
部署动态网站(Node.js/Python/PHP) Nginx 作反向X_X → 后端监听 127.0.0.1:3000(Node)或 unix:/run/php/php8.1-fpm.sock(PHP-FPM)
部署 Docker Web 应用 安装 Docker → docker run -d -p 8080:80 --name myapp nginx:alpine → Nginx 反代 localhost:8080
多站点(虚拟主机) /etc/nginx/conf.d/ 下为每个域名创建独立 .conf 文件,server_name 区分
日志分析 & 监控 配合 goaccess(实时日志分析)或阿里云 ARMS/SLS 日志服务

✅ 验证清单(部署后必检)

检查项 命令/方法
✅ 网站能否通过 HTTP/HTTPS 访问? curl -I http://<IP> / curl -I https://yourdomain.com
✅ Nginx 是否开机自启? sudo systemctl is-enabled nginxenabled
✅ SSL 证书是否有效? 浏览器地址栏锁图标,或 openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates
✅ 防火墙是否仅开放必要端口? sudo ufw status verbosesudo firewall-cmd --list-all
✅ 系统是否定期更新? sudo apt list --upgradable(Ubuntu)或 sudo dnf check-update(Alibaba Cloud Linux)

📚 补充资源

  • 阿里云官方文档:ECS 快速入门
  • Nginx 官方配置指南:https://nginx.org/en/docs/
  • Certbot 文档:https://certbot.eff.org/
  • Alibaba Cloud Linux 3 文档:https://help.aliyun.com/zh/alibaba-cloud-linux

如你有具体需求(例如:部署 WordPress、Vue 前端 + Spring Boot 后端、Docker Compose 全栈、或使用 Apache/Tomcat),欢迎告诉我,我可以为你定制详细部署脚本和配置 👇

需要我帮你生成一键部署脚本(Shell)或提供 Nginx + Node.js 反向X_X完整配置吗?