如何保持Golang服务器持续运行
如何保持Golang服务器持续运行 在代码更改后,如何在终端中保持Go服务器运行,而无需关闭并重新打开终端以使更改生效?
我知道我必须重新编译/重新运行程序(这可以自动化吗?),但我还必须重新打开终端,否则服务器将无法提供服务。
谢谢。让我看看是否能安装它……
谢谢,但 CTRL-C 已经满足了我的需求。
谢谢。其他人推荐了一个叫‘entr’的工具,但我没能完全搞懂怎么用。
实际上我使用的是 Ubuntu。
我刚刚按了 Ctrl-C,它停止了服务器,并且我无需关闭终端就能重新启动它。
谢谢。
我了解一些方法 1、Go Watch 这种方法用于开发 2、Supervisor Supervisor是一个用Python开发的程序,它可以监控你的程序 3、Jenkins 一个自动部署系统
我使用这个工具来自动重新加载我的Go Web应用程序 https://github.com/codegangsta/gin
我从未遇到过需要重新打开终端的问题。抱歉,在这方面我无法帮助你。
acim/go-reflex
用于自动重新编译和自动重启 Golang 服务器应用程序的 Docker 镜像 - acim/go-reflex
我使用 ./webserver 启动服务器,然后进行代码更改,接着用 Ctrl-Z 停止服务器,再执行 ‘go build . && ./webserver’,但它没有重启。
因此我关闭并重新打开终端,然后执行 ./webserver,这样它就能工作了。
Ctrl-C 是否比 Ctrl-Z 更好和/或有所不同?
你使用的是Windows,而我用的是Linux。我记得在那里,Ctrl-Z 发送的是EOF。
Windows 应该也支持使用 Ctrl-C 来实际终止程序。
PS:如果你使用的是Linux或Mac,那么Ctrl-Z实际上不会停止或终止程序,而是会将程序发送到后台。然后你当然需要将它带回前台,或者终止它或其父进程。
安装
假设您已配置好可用的 Go 环境,并且 GOPATH/bin 已加入您的 PATH 环境变量,那么安装 gin 将非常轻松:
go get github.com/codegangsta/gin
然后,验证 gin 是否已正确安装:
gin -h
我在我的 Go 环境中使用 go.mod。我尝试了上述步骤,但未能成功安装。
可以使用 air 或 nodemon 这类热重载工具,它们会在代码变更时自动重新编译并运行程序。以 air 为例:
- 安装 air:
go install github.com/cosmtrek/air@latest
-
在项目根目录创建
.air.toml配置文件(或使用默认配置)。 -
使用 air 启动服务器:
air
当代码文件被修改时,air 会自动检测变化,重新编译并重启服务器,终端会话保持活动状态。示例 Go 服务器代码:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "当前版本: 2.0")
}
func main() {
http.HandleFunc("/", handler)
fmt.Println("服务器运行在 :8080")
http.ListenAndServe(":8080", nil)
}
修改代码后,air 会输出类似这样的日志并自动重启:
[air] building...
[air] running...
这样服务器就会持续运行并应用最新更改,无需手动重启终端。


