Golang Linux ·

Go编译后的二进制如何守护运行

今天没有面试,闲来无事,就想继续折腾一下go了,翻了翻小伙伴给的几个不错的例子,顺手部署一下玩玩。

第一个是一个社区,很简洁,我很喜欢,github:https://github.com/gogf/focus

如何部署就不赘述了,github都有的。

Go编译后的二进制如何守护运行 Golang 第1张

要说Go是真的好,直接编译跨平台,之前和小伙伴写的小脚本也是支持跨平台编译的,没想到web服务也可以。

我是centos系统,编译好直接把文件放到我自己服务目录下,然后写一个简单的service文件即可。

[Unit]
Description=focus service
After=network.target

[Service]
ExecStart=/var/runServer/focus/focus start
ExecStop=/usr/bin/echo 'not stop'
KillMode=process
Restart=on-failure
RestartSec=120s

[Install]
WantedBy=multi-user.target

ExecStart 是启动命令  ExecStop 是停止,下面ResartSec是守护时间 120秒

只需要把你的二进制文件地址填入 就可以使用。

文件保存到:/usr/lib/systemd/system/focus.service 文件名根据自己的服务名修改

chmox +x /usr/lib/systemd/system/focus.service 给一下执行权限

systemctl daemon-reload 重载一下服务文件

systemctl start focus 启动自己的服务 即可。

Go编译后的二进制如何守护运行 Golang 第2张

 

 

题外话:

其实还发生了一件有趣的事,就是这个项目引用了gmode模块,里面写了如果是开发者模式运行 直接把配置和数据库里的数据都dump出来,给我一顿找呀,最终才发现这个,至于怎么从开发模式到生产模式,我是没莫明白,改天看一下源码吧,看看判断依据是什么再来解决。

 

Go编译后的二进制如何守护运行 Golang 第3张

 

Go编译后的二进制如何守护运行 Golang 第4张

参与评论