golang程序后台运行的方法-1

1.背景

有个用户需求,希望能在用户本地电脑启动一个web server,在本地电脑能通过浏览器访问http://127.0.0.1的方式访问到server端的接口。

关于编程语言的选择有如下思考:

由于是本地的server,所以希望用户程序越小越好,golang很适合。

希望对用户环境要求低,golang编译后的二进制程序可以很方便的在windows、linux 、mac上运行

基于以上原因,我选择了golang来编码。

但是,由于是web server,就需要golang的二进制程序能够在用户本地后台运行,在linux和mac上都有nohup命令能帮助我们实现该功能,但是在windows上没有该命令,那怎样才能让用户在不安装任何工具的情况下在windows上也能方便的让go的程序后台运行呢?经过搜索,发现了https://github.com/codyguo/godaemon,详情可以看该项目的README,下面是我的测试过程。

2.测试demo

我的电脑是mac,linux环境和如下操作方式相同,但是wondows环境到家自行百度下。

go的版本如下

MacBook-Air mycode % go  version

go version go1.18.10 darwin/arm64

2.1.创建go项目

项目初始化
wulili@wulilideMacBook-Air mycode % mkdir godaemonTest 
wulili@wulilideMacBook-Air mycode % cd godaemonTest 
wulili@wulilideMacBook-Air godaemonTest % ls -l
total 0
wulili@wulilideMacBook-Air godaemonTest % go mod init godaemonTest
go: creating new go.mod: module godaemonTest

下载godaemon依赖
wulili@wulilideMacBook-Air godaemonTest % go get github.com/CodyGuo/godaemon

2.2main.go

package main

import (
_ "github.com/CodyGuo/godaemon"
"log"
"net/http"
)

func main() {
mux := http.NewServeMux()
mux.HandleFunc("/index", func(rw http.ResponseWriter, req *http.Request) {
rw.Write([]byte("hello, golang!\n"))
})
log.Fatalln(http.ListenAndServe(":7070", mux))
}

2.3mac上编译测试

mac上编译
wulili@wulilideMacBook-Air godaemonTest % CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o main main.go   

运行 (-d=true标明是后台运行)        
wulili@wulilideMacBook-Air godaemonTest % ./main -d=true
./main [PID] 56483 running...
wulili@wulilideMacBook-Air godaemonTest % 

访问
wulili@wulilideMacBook-Air godaemonTest % curl http://127.0.0.1:7070/index
hello, golang!

2.4windows上测试

编译windows上的可执行文件(生成main.exe)
wulili@wulilideMacBook-Air godaemonTest % CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build  main.go

windows上cmd窗口运行exe
C:\Users\shdewr\Downloads>main.exe -d=true
main.exe [PID23920] running
C:\Users\shdewr\Downloads>

访问测试
C:\Users\shdewr\Downloads>curl http://127.0.0.1:7070/index
hello, golang!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值