将项目部署到阿里云ECS(Elastic Compute Service)服务器是一个常见的运维操作。以下是详细的步骤指南,帮助你顺利完成部署:
一、准备工作
-
购买并配置ECS实例
- 登录 阿里云控制台
- 创建ECS实例(选择合适的地域、操作系统如 Ubuntu/CentOS、配置安全组等)
- 记录公网IP地址
- 设置登录凭证(推荐使用密钥对,更安全)
-
配置安全组规则
- 确保开放必要的端口:
22:SSH 远程登录80:HTTP443:HTTPS3000/5000/8080等:根据你的应用端口
- 在安全组中添加入方向规则,允许这些端口的访问
- 确保开放必要的端口:
-
本地环境准备
- 安装 SSH 客户端(如 Terminal、PuTTY、Xshell)
- 保存好
.pem私钥文件(如果使用密钥登录)
二、连接到ECS服务器
# 使用密钥登录(推荐)
ssh -i /path/to/your-key.pem root@<你的公网IP>
# 或者使用密码登录(如果设置了密码)
ssh root@<你的公网IP>
注意:首次登录可能会提示确认主机指纹,输入
yes即可。
三、部署项目(以Node.js + Nginx为例)
1. 更新系统并安装必要软件
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
sudo apt install nginx git nodejs npm pm2 -y
# CentOS/RHEL
sudo yum update -y
sudo yum install epel-release -y
sudo yum install nginx git nodejs npm -y
sudo npm install -g pm2
2. 克隆项目代码
cd /var/www
git clone https://github.com/yourname/your-project.git
cd your-project
npm install
3. 启动项目(以Node.js为例)
# 使用PM2后台运行
pm2 start app.js --name "my-app"
# 设置开机自启
pm2 startup
pm2 save
4. 配置Nginx反向
编辑配置文件:
sudo nano /etc/nginx/sites-available/default
写入:
server {
listen 80;
server_name your-domain.com; # 或公网IP
location / {
proxy_pass http://127.0.0.1:3000; # 你的应用端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
}
重启Nginx:
sudo nginx -t # 测试配置
sudo systemctl restart nginx
四、其他类型项目部署简要
| 项目类型 | 部署方式 |
|---|---|
| Python(Flask/Django) | 使用 Gunicorn + Nginx |
| Java(Spring Boot) | 打包成 JAR,nohup java -jar app.jar & |
| 静态网站(HTML/Vue/React) | 构建后复制到 /var/www/html |
| Docker项目 | 安装Docker,用 docker-compose up -d 启动 |
五、域名绑定与HTTPS(可选)
-
绑定域名
- 在阿里云解析服务中,将域名 A 记录指向 ECS 公网 IP
-
配置HTTPS(使用Let’s Encrypt)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com
六、常见问题排查
- 无法访问?
- 检查安全组是否开放端口
- 检查防火墙(
ufw或firewalld) - 检查应用是否在运行:
pm2 list或netstat -tuln
- Git克隆失败?
- 确保ECS能访问GitHub/Gitee
- 可使用SSH密钥或HTTPS + Token
七、自动化部署建议(进阶)
- 使用 CI/CD 工具(如 GitHub Actions、Jenkins)
- 编写部署脚本(deploy.sh)
- 使用宝塔面板(可视化管理,适合新手)
如果你提供具体的项目类型(如Vue、Spring Boot、Django等),我可以给出更详细的部署脚本和配置。
需要我帮你生成一个完整的部署脚本吗?
云计算HECS