Go
Gin结合endless实现服务平滑重启
Gin结合endless实现服务平滑重启
周末在家学习Go语言,并对之前自己封装的一套API项目进行优化编写,然后发现每次更新代码版本都需要杀掉进程,再重新输入守护进程命令,非常的麻烦,所以也网上查找了有关的资料,发现复制粘贴党也是一大堆,写得也看得不是很明白,要不就是根本无法用,于是经过尝试,最终发现配合endless,经过验证最终实现了,在这里跟大家分享。
由于windows环境原因,是不支持下载endless,所以博主对endless包实在Mac环境下下载并编译成二进制文件打包到Centos环境运行,最终验证实现。
一、下载第三方扩展
输入以下命令
go get -u github.com/fvbock/endless
安装完之后,我们直接修改代码。
二、引入使用
我就直接在我之前的开源项目上直接改,代码如下:
package main
//引入模块
import (
"goAPI/db"
"goAPI/conf"
"github.com/fvbock/endless"
"log"
)
//定义主入口
func main() {
//初始化配置
projectConfig := conf.Config{}
configData := projectConfig.ConfigGetValue()
//获取端口号
projectPort := configData.ProjectPort
//定义防错机制,防止出现错误,消耗数据库链接
defer db.SqlDB.Close()
//定义路由
router := initRouter()
//监听端口
err := endless.ListenAndServe(":"+projectPort,router)
if err != nil {
log.Println("err:",err)
}
//router.Run(":" + projectPort)
}我们引入了endless扩展,将原本的Run方式启动项目改成了ListenAndServe方式。
三、使用方式
我们先将项目打包编译成的文件放到Linux上运行,然后输入守护进程
nohup ./goAPI&
运行之后,我们再修改项目,重新打包编译放到Linux上,这回我们输入以下命令
kill -1 PID
其中PID是项目运行的进程ID,可以通过以下命令查看
netstat -ntlp
执行效果如下图

这样我们就完成了平滑重启项目。
这份代码是在我的开源项目基础上进行修改,大家可以访问基于Gin开发的API项目,如果不懂如何部署到Linux上,可以访问Gin编译部署到centos并搭配Nginx运行。
0条评论