在阿里云 ECS(Alibaba Cloud Linux 3.2104 LTS)上配置 Node.js 环境并部署前端服务(如 Vue/React 静态站点),推荐采用安全、稳定、可维护的方式。以下是完整、生产就绪的分步指南(含最佳实践):
✅ 前提条件
- 已创建 Alibaba Cloud Linux 3.2104 LTS(内核
5.10.x,基于 RHEL 8 兼容)的 ECS 实例 - 已配置安全组:开放
80(HTTP)、443(HTTPS,可选)、3000(开发调试,生产建议关闭) - 使用普通用户(如
deploy)操作,避免直接用 root 部署 - 已配置 SSH 访问(推荐密钥登录)
🌐 一、系统准备(更新 & 工具安装)
# 切换到普通用户(如 deploy),若未创建请先创建:
sudo useradd -m -s /bin/bash deploy
sudo usermod -aG wheel deploy # 赋予 sudo 权限(Alibaba Cloud Linux 中 wheel 组等效于 sudo)
sudo su - deploy
# 更新系统(Alibaba Cloud Linux 使用 dnf)
sudo dnf update -y
# 安装必要工具(git、curl、unzip、nginx)
sudo dnf install -y git curl wget unzip nginx
💡 提示:Alibaba Cloud Linux 3 默认启用
dnf(替代 yum),仓库已预配置阿里云镜像源,速度更快。
⚙️ 二、安装 Node.js(推荐方式:NodeSource + nvm 或官方二进制)
✅ 推荐方案:使用 nvm(Node Version Manager)(最灵活、支持多版本、无需 sudo)
# 下载并安装 nvm(自动配置 ~/.bashrc)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 重新加载 shell 配置(或新开终端)
source ~/.bashrc
# 查看可用 LTS 版本(推荐 v18.x 或 v20.x LTS)
nvm list-remote | grep "LTS"
# 安装最新 LTS(如 v20.12.2)
nvm install --lts
# 设为默认版本
nvm alias default lts/*
# 验证
node -v # v20.12.2
npm -v # >= 10.5.0
✅ 优势:无权限问题、可切换版本、不污染系统路径、适合 CI/CD 和多项目管理。
⚠️ 不推荐 dnf install nodejs:版本较旧(ALinux3 默认仅提供 v16.x,且非最新 LTS)。
📦 三、部署前端服务(以 Vue CLI 构建的静态站点为例)
1️⃣ 获取前端代码(示例:从 GitHub 拉取)
mkdir -p ~/apps/my-frontend
cd ~/apps/my-frontend
# 方式1:克隆仓库(需提前配置 SSH Key 或使用 HTTPS Token)
git clone https://github.com/your-org/your-vue-app.git .
# 方式2:上传构建产物(更推荐生产环境)
# 将本地 `dist/` 目录压缩后上传(如 via scp),然后解压:
# scp dist.zip deploy@<ECS_IP>:~/apps/my-frontend/
# unzip -o dist.zip -d ./ && rm dist.zip
2️⃣ 安装依赖 & 构建(若源码部署)
# 注意:确保 package.json 存在
npm ci --only=production # 更快、更安全(跳过 devDependencies)
# 若需构建(如 Vue/React 项目):
npm install
npm run build # 通常输出到 dist/ 目录
✅
npm ci是生产部署首选(基于package-lock.json,可重现、无缓存风险)
🌐 四、配置 Web 服务(Nginx 反向X_X静态文件)
1️⃣ 将构建产物复制到 Nginx 默认目录(或自定义)
# 创建站点目录(推荐独立路径,便于管理)
sudo mkdir -p /usr/share/nginx/html/my-frontend
# 复制构建产物(假设输出在 ./dist)
cp -r ./dist/* /usr/share/nginx/html/my-frontend/
# 设置正确权限(Nginx 用户为 nginx)
sudo chown -R nginx:nginx /usr/share/nginx/html/my-frontend
sudo chmod -R 755 /usr/share/nginx/html/my-frontend
2️⃣ 配置 Nginx(支持 SPA 路由、gzip、缓存)
sudo tee /etc/nginx/conf.d/my-frontend.conf << 'EOF'
server {
listen 80;
server_name your-domain.com; # 替换为你的域名或 IP(测试可留空)
# 根路径指向前端资源
root /usr/share/nginx/html/my-frontend;
index index.html;
# 支持 Vue/React Router 的 history 模式(关键!)
location / {
try_files $uri $uri/ /index.html;
}
# 静态资源缓存优化
location ~* .(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# 禁止访问敏感文件
location ~ /.ht {
deny all;
}
}
EOF
3️⃣ 启用并启动 Nginx
# 测试配置语法
sudo nginx -t
# 重载配置(不中断服务)
sudo systemctl reload nginx
# 设置开机自启(如未启用)
sudo systemctl enable nginx
✅ 此时访问 http://<ECS公网IP> 或绑定的域名,即可看到前端页面。
🔐 五、【增强】添加 HTTPS(使用免费 Let’s Encrypt)
# 安装 certbot(Alibaba Cloud Linux 3 仓库已包含)
sudo dnf install -y certbot python3-certbot-nginx
# 获取证书(需域名已解析到该 ECS IP)
sudo certbot --nginx -d your-domain.com
# 自动续期(certbot 已配置 systemd timer)
sudo systemctl list-timers | grep certbot
✅ 启用 HTTPS 后,Nginx 配置将自动更新为
listen 443 ssl,并重定向 HTTP → HTTPS。
🧩 六、【可选】使用 PM2 托管 Node.js 后端(如需 API 服务)
若前端需对接 Node.js 后端(如 Express/Koa):
# 全局安装 PM2(使用 nvm 当前版本)
npm install -g pm2
# 示例:启动后端服务(假设在 ~/apps/my-api)
cd ~/apps/my-api
npm install --only=production
pm2 start app.js --name "my-api" --env production
# 保存进程列表,开机自启
pm2 startup
pm2 save
# 查看状态
pm2 status
✅ 再通过 Nginx 反向X_X
/api到http://localhost:3000(后端端口),实现前后端分离部署。
🛡️ 七、安全加固建议(生产必备)
| 项目 | 操作 |
|---|---|
| 防火墙 | sudo firewall-cmd --permanent --add-service=http + --add-service=https + --reload(ALinux3 默认启用 firewalld) |
| SSH 安全 | 禁用密码登录:sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config → sudo systemctl restart sshd |
| 日志监控 | sudo journalctl -u nginx -f / pm2 logs |
| 定期更新 | sudo dnf update --security -y(可配合 cron 自动) |
✅ 验证清单
| 检查项 | 命令/方法 |
|---|---|
| ✅ Node.js 版本 | node -v(应为 v20.x) |
| ✅ Nginx 运行中 | sudo systemctl is-active nginx → active |
| ✅ 站点可访问 | curl -I http://localhost → HTTP/1.1 200 OK |
| ✅ HTTPS 有效 | 浏览器访问 https://your-domain.com(绿色锁) |
| ✅ SPA 路由正常 | 手动输入 /about 应正确加载(非 404) |
📚 补充资源
- Alibaba Cloud Linux 3 文档:https://help.aliyun.com/product/40640.html
- NodeSource 官方安装指南:https://github.com/nodesource/distributions
- Nginx 官方 SPA 配置:https://nginx.org/en/docs/http/ngx_http_core_module.html#try_files
- Certbot ALinux3 支持说明:https://certbot.eff.org/instructions?ws=nginx&os=centos-rhel-8
如需我为你生成:
- ✅ 自动化部署脚本(Bash + 参数化)
- ✅ Docker + Nginx 多环境部署方案
- ✅ CI/CD(GitHub Actions / 阿里云流水线)集成模板
- ✅ 前端监控(Sentry + Nginx 日志分析)
欢迎随时告诉我你的具体技术栈(Vue/React/Angular?是否含后端?域名/SSL 要求?),我可以为你定制完整交付方案 👨💻
祝你部署顺利,业务飞驰!🚀
云知识