开发笔记7 | 部署 Go 应用程序到阿里云 ECS

简介: 在上一篇文章中,我们介绍了[《部署 Java 应用程序到阿里云 ECS》](https://yq.aliyun.com/articles/657742),在本文中,我们来介绍 部署 Go 应用程序到阿里云 ECS。

前言

在上一篇文章中,我们介绍了《部署 Java 应用程序到阿里云 ECS》,在本文中,我们来介绍 部署 Go 应用程序到阿里云 ECS。

本地开发

无论是编写云端运行的,还是编写本地运行的 Go 应用程序,代码编写本身并没有特别大的变化,因此本文采用一个极其基础的样例《在 Web 页面打印 HelloWorld 的 Go 程序 》为例,做参考。

image

//Alibaba Cloud Toolkit. http://www.aliyun.com/product/cloudtoolkit
func setupRouter() *gin.Engine {
    // Disable Console Color
    // gin.DisableConsoleColor()
    r := gin.Default()
    // Ping test
    r.GET("/ping", func(c *gin.Context) {
        c.String(http.StatusOK, "Alibaba Cloud Toolkit: Hello World.")
    })
    return r
}
func main() {
    r := setupRouter()
    // Listen and Server in 0.0.0.0:8080
    r.Run(":80")
}

源代码下载

上述代码就是一个标准的 Go 工程,用于在 Web 页面上打印一串“Hello World”的文案。

安装插件

阿里云提供了基于 Eclipse 的插件,以方便开发人员能够高效的将本地 IDE 中编写的应用程序,极速部署到 ECS中去。
插件主页:https://www.aliyun.com/product/cloudtoolkit

阿里云的这个 Eclipse 插件的安装过程,和普通的插件大同小异,这里不再赘述,读者请自行安装。

配置插件首选项

安装完插件之后,按照如下路径进行首选项配置

顶部菜单 - Window - Preferences - Alibaba Cloud Toolkit - Accounts

出现如下界面,配置阿里云账号的 AK 和 SK,即可完成首选项配置。(如果是子账号,则填写子账号的 AK 和 SK)

image

部署

image

在 Eclipse 中,鼠标右键项目工程名,在出现的菜单中点击 Alibaba Cloud - Deploy to ECS...,可会出现如下部署窗口:

image

在 Deployment Configurations 对话框设置部署参数,然后单击 Deploy,即可执行初次部署。

部署参数说明:

  • Deploy File:部署文件包含两种方式。

    • Maven Build:如果当前工程采用 Maven 构建,可以使用 Cloud Toolkit 直接构建并部署。
    • Upload File:如果当前工程并非采用 Maven 构建,或者本地已经存在打包好的部署文件,可以选择并直接上传本地的部署文件。
  • Target Deploy ECS:在下拉列表中选择地域,然后在地域中选择要部署的 ECS 实例。
  • Deploy Location :输入在 ECS 上部署路径,如 /root/tomcat/webapps。
  • Commond:输入应用启动命令,如 sh /root/restart.sh。表示在完成应用包的部署后,需要执行的命令 —— 对于 Go 程序而言,通常是一系列程序启动命令。
source ~/.bash_profile
pkill -f 'go-demo'
mv /tmp/go-demo /root/go-demo
chmod 755 /root/go-demo
sh -c /root/go-demo

开发者交流群

5685e931e06cd61faa41dee0ad46bf251fe56837.png

阿里云开发者工具交流 钉钉群




相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
Linux Go iOS开发
Go语言100个实战案例-进阶与部署篇:使用Go打包生成可执行文件
本文详解Go语言打包与跨平台编译技巧,涵盖`go build`命令、多平台构建、二进制优化及资源嵌入(embed),助你将项目编译为无依赖的独立可执行文件,轻松实现高效分发与部署。
1296 162
|
8月前
|
消息中间件 缓存 NoSQL
Redis各类数据结构详细介绍及其在Go语言Gin框架下实践应用
这只是利用Go语言和Gin框架与Redis交互最基础部分展示;根据具体业务需求可能需要更复杂查询、事务处理或订阅发布功能实现更多高级特性应用场景。
440 86
|
12月前
|
人工智能 监控 安全
Go通道机制与应用详解
本文全面解析了Go语言中的通道(Channel),从基础概念到高级应用,涵盖创建、操作、垃圾回收及实际场景使用。通道作为Go并发模型的核心,支持协程间安全高效的数据通信与同步。文章介绍了无缓冲和有缓冲通道的特性,以及发送、接收、关闭等操作,并探讨了`select`语句、超时处理、遍历通道等高级用法。此外,还深入分析了通道的垃圾回收机制,包括引用计数、生命周期管理和循环引用问题。最后通过数据流处理、任务调度和状态监控等实例,展示了通道在实际开发中的广泛应用。理解通道不仅有助于构建高并发系统,还能优化资源管理,提升程序性能。
410 31
|
12月前
|
Kubernetes Linux Go
使用 Uber automaxprocs 正确设置 Go 程序线程数
`automaxprocs` 包就是专门用来解决此问题的,并且用法非常简单,只需要使用匿名导入的方式 `import _ "go.uber.org/automaxprocs"` 一行代码即可搞定。
492 78
|
监控 Java Go
无感改造,完美监控:Docker 多阶段构建 Go 应用无侵入观测
本文将介绍一种基于 Docker 多阶段构建的无侵入 Golang 应用观测方法,通过此方法用户无需对 Golang 应用源代码或者编译指令做任何改造,即可零成本为 Golang 应用注入可观测能力。
552 85
|
11月前
|
C# 图形学 开发者
Unity开发中使用UnityWebRequest从HTTP服务器下载资源。
总之,UnityWebRequest就是游戏开发者手中的万能钓鱼竿,既可以获取文本数据,也能钓上图片资源,甚至是那声音的涟漪。使用UnityWebRequest的时候,你需要精心准备,比如确定URL、配置请求类型和头信息;发起请求;巧妙处理钓获的数据;还需要机智面对网络波澜,处理各种可能出现的错误。按照这样的过程,数据的钓取将会是一次既轻松愉快也效率高效的编程钓鱼之旅。
614 18
|
10月前
|
Java Shell Maven
【Azure Container App】构建Java应用镜像时候遇无法编译错误:ERROR [build 10/10] RUN ./mvnw.cmd dependency:go-offline -B -Dproduction package
在部署Java应用到Azure Container App时,构建镜像过程中出现错误:“./mvnw.cmd: No such file or directory”。尽管项目根目录包含mvnw和mvnw.cmd文件,但依然报错。问题出现在Dockerfile构建阶段执行`./mvnw dependency:go-offline`命令时,系统提示找不到可执行文件。经过排查,确认是mvnw文件内容异常所致。最终通过重新生成mvnw文件解决该问题,镜像成功构建。
535 0
|
10月前
|
人工智能 负载均衡 监控
使用 Go 和 Gin 实现高可用负载均衡代理服务器
本文基于Go语言和Gin框架,实现了一个企业级负载均衡代理服务器,支持动态路由、健康检查、会话保持等功能。具备高可用性与高性能,单节点支持100k+ QPS,延迟达亚毫秒级,并提供完整的压力测试方案与优化建议。
315 7
|
10月前
|
人工智能 测试技术 持续交付
Golang深入浅出之-Go语言中的持续集成与持续部署(CI/CD)
持续集成与持续部署(CI/CD)是现代软件开发的关键实践,尤其适用于Go语言项目。本文探讨了Go项目中常见的CI/CD问题,如测试覆盖不足、版本不一致和构建时间过长,并提供解决方案及GitHub Actions示例代码,帮助开发者优化流程,提升交付效率和质量。
298 5
|
10月前
|
人工智能 Go
GO语言之泛型应用
本文介绍了Go语言中泛型的使用,包括为何引入泛型、泛型语法详解以及如何自定义约束。通过实例展示了泛型在简化代码、提高复用性方面的优势,并演示了泛型在slice、指针、map等数据类型中的应用。
243 1

热门文章

最新文章