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条评论