本文帮助用户将不同编程语言(Java、Go、Python、C++、Node.js)的代码产物在阿里云 ECS 上部署并运行。
手动部署在 CI/CD 中的角色
手动部署在自动化实践中扮演多重角色:
作为自动化基准:通过暴露效率瓶颈/质量问题推动优化。
过渡桥梁:渐进式脚本开发并集成到CI/CD工具。
应急方案:临时替代崩溃的自动化流程。
关键环节守门员:保留高危操作的人工审批与数据验证。
培训载体:通过手动配置服务器/故障恢复帮助团队理解底层逻辑。
过渡阶段需强化错误处理机制,应急操作后须同步更新自动化配置,人工介入应限定于高风险场景,培训需配合文档防止经验断层。
手动部署的优缺点分析
优点:
无需搭建自动化工具链,启动门槛低,适合快速验证小型项目原型。
允许开发人员灵活调整流程(如跳过测试步骤),直接操作服务器响应紧急变更。
全程人工介入确保操作透明可控,便于及时排查问题。
同时作为自动化失效时的应急方案,尤其适用于低频部署或安全合规要求严格的敏感系统(如金融/政务场景)。
缺点:
人工重复操作效率低下且难以扩展多环境需求。
环境差异(如本地依赖版本)和人为失误(配置错误、漏测)易引发部署结果不稳定,甚至生产事故。
缺乏版本记录和回滚机制可能导致部署追溯困难;团队协作中易形成知识孤岛,并行任务易受资源冲突制约,阻碍持续交付能力。
手动部署实践
传输代码或产物到ECS实例
在部署构建前,需要将开发完成的代码或构建好的产物高效、安全地传输到ECS实例中,ECS提供了多种方式传输文件,以确保传输过程的可靠性和便捷性。具体操作,请参见选择传输文件的方式。
多语言环境配置与构建实践
环境配置
完成Java环境的配置。具体操作,请参见部署Java环境。
安装构建工具。
Java Web项目推荐使用Maven或Gradle作为构建工具。
访问Gradle官网,下载Gradle安装包,并完成Gradle配置与测试,具体操作,请参见Gradle快速开始。
部署与运行
以开源项目spring-boot-demo中的demo-template-thymeleaf
模块作为案例。
运行以下命令,使用Git克隆项目。
sudo git clone https://github.com/xkcoding/spring-boot-demo.git
运行以下命令,使用Maven构建项目。
sudo cd spring-boot-demo/demo-template-thymeleaf sudo mvn clean package
得到如下输出,则构建完成。
运行以下命令,使用
nohup
在后台启动项目。sudo nohup java -jar target/demo-template-thymeleaf.jar > app.log 2>&1 &
nohup
:防止进程在退出时接收到挂起信号。> app.log
:将标准输出重定向到app.log
文件中。2>&1
:将错误输出也重定向到app.log
。&
:将进程放入后台运行。
运行以下命令,查看日志。
sudo tail -f app.log
在日志中有如下输出,则服务启动成功。
在浏览器中访问
http://<你的ECS公共IP>:8080/demo
,访问项目页面。
环境配置
运行以下命令,安装Go编译器。
# 以Go 1.23.6为例。 # 下载go安装包 sudo wget https://go.dev/dl/go1.23.6.linux-amd64.tar.gz # 解压 sudo tar -zxvf go1.23.6.linux-amd64.tar.gz -C /usr/local/ # 配置环境变量 sudo echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bash_profile && source ~/.bash_profile
运行以下命令,验证Go版本。
go version
得到如下输入,Go环境配置完成。
构建与运行
以开源的go-admin,一个基于Gin + Vue + Element UI、Arco Design和Ant Design 的前后端分离权限管理系统脚手架项目作为案例,
运行以下命令,创建开发目录。
# 创建开发目录 sudo mkdir goadmin sudo cd goadmin
运行以下命令,获取项目前后端源码。
两个项目必须放在同一文件夹下
# 获取后端代码 sudo git clone https://github.com/go-admin-team/go-admin.git # 获取前端代码 sudo git clone https://github.com/go-admin-team/go-admin-ui.git
服务端启动
运行以下命令,更新项目依赖并构建项目。
# 进入 go-admin 后端项目 sudo cd ./go-admin # 更新整理依赖 sudo go mod tidy # 编译项目 sudo go build
部署MySQL数据库。具体操作,请参见部署MySQL数据库。
运行以下命令,新建数据库,数据库名为
go_admin
。sudo create database go_admin;
运行以下命令,修改配置文件。
# 修改配置 # 文件路径 go-admin/config/settings.yml sudo vim ./config/settings.yml
配置文件中,可修改服务启动端口号,以及数据库相关参数。
运行以下命令,初始化数据库。
sudo ./go-admin migrate -c config/settings.yml
控制台输入
数据库基础数据初始化成功
,数据初始化完成。运行以下命令,启动
go-admin
服务。sudo ./go-admin server -c config/settings.yml -a true
控制台输出服务运行地址,即服务启动成功。
前端启动
运行以下命令,安装依赖。
sudo npm install --registry=https://registry.npmmirror.com
运行以下命令,启动前端服务。
sudo npm run dev
控制台得到如下输出,则服务启动成功。
在浏览器中访问
<实例公网IP>:9527
。打开如下页面,则服务部署成功,跟随页面指引完成系统配置即可开始使用。
环境配置
运行以下命令,安装C++编译相关的构建工具。
# Ubuntu/Debian
sudo apt update
sudo apt install build-essential
# CentOS/RHEL
sudo yum groupinstall "Development Tools"
创建C++源文件
使用文本编辑器(如 nano
、vim
或 touch
)创建一个新的 C++ 文件。例如,创建一个简单的 Hello World 程序。
// hello.cpp
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
编译与运行
运行以下命令,编译程序。
sudo g++ hello.cpp -o hello
上述命令会生成一个名为
hello
的可执行文件。运行以下命令,运行编译好的程序。
sudo ./hello
得到如下输出,则运行成功。
如果项目较大,可以考虑使用
Makefile
和CMake
等构建系统来管理编译过程。创建一个名为
Makefile
的文件。并写入如下内容。all: hello hello: hello.cpp g++ hello.cpp -o hello clean: rm -f hello
使用
make
命令来编译和生成可执行文件。
部署运行
以开源的Qexo项目,一个快速、强大、美观的在线静态博客编辑器为案例。
配置Python环境。具体操作,请参见部署Python环境。
运行以下命令,使用Git获取
Qexo
源码。sudo git clone https://github.com/Qexo/Qexo.git
运行以下命令,安装项目所需依赖。
sudo pip3 install -r requirements.txt
部署MySQL数据库。具体操作,请参见部署MySQL数据库。
运行以下命令,新建
Qexo
数据库,数据库名为qexo_ecs
。create database qexo_ecs;
在项目根目录下,运行以下命令,打开配置文件。
sudo cp configs.example.py configs.py sudo vim configs.py
在配置文件中,添加以下配置。请替换配置中数据库IP,数据库用户名以及密码。
import pymysql pymysql.install_as_MySQLdb() DOMAINS = ["127.0.0.1", "yoursite.com", "localhost"] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'qexo', 'USER': 'root', 'PASSWORD': '${db_pwd}', 'HOST': '127.0.0.1', 'PORT': '3306', 'OPTIONS': { "init_command": "SET sql_mode='STRICT_TRANS_TABLES'" } } }
运行以下命令,启动服务。
sudo python3 manage.py makemigrations sudo python3 manage.py migrate sudo python3 manage.py runserver 0.0.0.0:8000 --noreload
实例安全组放通实例
8000
端口。具体操作,请参见添加安全组规则。浏览器中访问
<实例公网IP>:8000
。打开如下页面,则服务部署成功,跟随页面指引完成系统配置即可开始使用。
在本文中,以开源项目vue-naive-admin,一个基于 Vue3 + Vite + Pinia + Unocss + Naive UI 的轻量级后台管理模板为案例,项目前端后端均为Node.js 构建。
后端
配置NodeJS环境。具体操作,请参见部署Node.js环境。
运行以下命令,获取项目后端源码。
sudo git clone https://github.com/zclzone/isme-nest-serve.git
运行以下命令,安装依赖。
sudo npm i
部署MySQL数据库。具体操作,请参见部署MySQL数据库。
运行以下命令,新建
isme
数据库。create database isme;
运行以下命令,初始化项目数据库。
mysql -u[db username] -p[db pwd] isme < init.sql
运行以下命令,打开配置文件,并修改数据库连接信息。
sudo vim .env
在配置文件中,修改服务端口,数据库相关参数。
# 服务端口 APP_PORT=8085 # DB DB_HOST=localhost DB_PORT=3306 DB_USER=[db username] DB_PWD=[db password] DB_DATABASE=isme DB_SYNC=true # 是否开启同步,生产环境请设置成 false # Redis REDIS_URL=redis://default:123456@localhost:6379 # JWT JWT_SECRET="d0!doc15415B0*4G0`" # 是否预览环境 IS_PREVIEW=false
运行以下命令,启动服务。
sudo npm run start:dev
控制台输出运行日志,则服务启动成功。
前端
运行以下命令,获取前端项目源码。
sudo git clone -b 2.x https://github.com/zclzone/vue-naive-admin.git
运行以下命令,安装项目依赖。
sudo cd vue-naive-admin/ sudo npm i
运行以下命令,启动项目。
sudo npm run dev
控制台输出访问路径,即项目启动成功。
在浏览器中访问
http://<实例的公网IP>:3200
。得到如下页面则项目部署成功。
系统性能监控与日志分析
完成系统配置与构建之后,需要对系统指标进行监控以及对系统日志进行采集、分析与告警。阿里云提供了完善的系统监控与日志分析解决方案,请参见如下文档配置系统监控、告警与日志分析。
- 本页导读 (1)
- 手动部署在 CI/CD 中的角色
- 手动部署的优缺点分析
- 手动部署实践
- 传输代码或产物到ECS实例
- 多语言环境配置与构建实践
- 系统性能监控与日志分析