CentOS7 部署 Golang 源码

25 篇文章 1 订阅
16 篇文章 1 订阅

0、前提条件

(1)安装Go

参见 Centos7 安装 Go_ling1998的博客-CSDN博客

(2)安装Git(非必需)

若需要从Git上下载源码,需要安装Git,否则可以不安装,参见 Centos7 安装 git_ling1998的博客-CSDN博客

(3)源码文件

确认源码文件已经在CentOS系统中,并且源码根目录中有go.mod文件 

1、修改配置

(1)查看go环境

[root@Tracy gopath]# go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/gopath/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/gopath"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.17.2"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build3771639028=/tmp/go-build -gno-record-gcc-switches"

(2)设置GO111MODULE为"on"

若GO111MODULE不为"on",则设置,已经为”on“,不用再设置

[root@Tracy gopath]# export GO111MODULE=on

(3)设置GOPROXY代理配置

[root@Tracy gopath]# export GOPROXY=https://goproxy.cn

若不设置代理,在使用go mod时没有任何反应,一直卡,不会下载依赖包。

 (4)再次查看Go环境

[root@Tracy testgobuild]# go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/gopath/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/gopath"
GOPRIVATE=""
GOPROXY="https://goproxy.cn"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.17.2"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/gopath/testgobuild/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build2684850528=/tmp/go-build -gno-record-gcc-switches"

2、生成可执行文件

(1)进入到源码根目录

[root@Tracy gopath]# cd back-end

(2)下载依赖包

[root@Tracy back-end]# go mod tidy
go: downloading github.com/ethereum/go-ethereum v1.10.16
go: downloading github.com/gin-gonic/gin v1.7.7
go: downloading github.com/gin-contrib/cors v1.3.1
go: downloading github.com/swaggo/gin-swagger v1.4.1
go: downloading github.com/boltdb/bolt v1.3.1
go: downloading github.com/swaggo/swag v1.8.1
go: downloading github.com/stretchr/testify v1.7.0
go: downloading github.com/davecgh/go-spew v1.1.1
go: downloading golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4
go: downloading github.com/gin-contrib/sse v0.1.0
go: downloading github.com/mattn/go-isatty v0.0.14
go: downloading github.com/golang/protobuf v1.5.2
#略去很多很多下载信息......

(3)编译生成二进制文件

[root@Tracy back-end]# go build main.go

需要等待一小会,编译完成后,出现生成的二进制文件,如下图所示:

 

发现linux系统生成的文件比Windows下生成的文件小一些, 下图是Windows下生成的文件

 3、运行

[root@Tracy back-end]# ./main
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:	export GIN_MODE=release
 - using code:	gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /swagger/*any             --> github.com/swaggo/gin-swagger.CustomWrapHandler.func1 (4 handlers)
# 略去很多信息.....
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.

 此时已开启服务,根据服务内容进行验证,如我的服务是一个Web服务,可验证某接囗是否有效访问。

设置后台启动

上面方法启动时,当窗囗关闭,进程也被关闭了,如果想关闭窗囗后进程仍然运行,则可以使用命令

nohup ./main &

[root@Tracy client-back]# nohup ./main &
[1] 6054
[root@Tracy client-back]# nohup: ignoring input and appending output to ‘nohup.out’

查看后台启动的进程

netstat -ap|grep 8090

[root@Tracy ~]# netstat -ap|grep 8090
tcp        0      0 0.0.0.0:8090            0.0.0.0:*               LISTEN      6054/./main   

或是

 lsof -i:8090

[root@Tracy ~]# lsof -i:8090
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
main    6054 root   17u  IPv4 6458681      0t0  TCP *:8090 (LISTEN)

关闭后台启动的进程

查找到进程ID, kill掉

kill -9 进程ID

[root@Tracy ~]# kill -9 6054

查看正在运行的GO程序

(1)安装gops

go get -u github.com/google/gops

[root@Tracy ~]# go get -u github.com/google/gops
go: downloading github.com/google/gops v0.3.25
go: downloading github.com/xlab/treeprint v1.1.0
go: downloading github.com/shirou/gopsutil/v3 v3.22.4
go: downloading github.com/shirou/gopsutil v3.21.11+incompatible
go: downloading github.com/keybase/go-ps v0.0.0-20190827175125-91aafc93ba19
go: downloading github.com/shirou/gopsutil/v3 v3.22.8
go: downloading rsc.io/goversion v1.2.0
go: downloading github.com/tklauser/go-sysconf v0.3.10
go: downloading golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a
go: downloading github.com/yusufpapurcu/wmi v1.2.2
go: downloading github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0
go: downloading github.com/lufia/plan9stats v0.0.0-20220517141722-cf486979b281
go: downloading github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c
go: downloading github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c
go: downloading github.com/tklauser/numcpus v0.4.0
go: downloading github.com/tklauser/numcpus v0.5.0
go: downloading github.com/go-ole/go-ole v1.2.6
go get: installing executables with 'go get' in module mode is deprecated.
	Use 'go install pkg@version' instead.
	For more information, see https://golang.org/doc/go-get-install-deprecation
	or run 'go help get' or 'go help install'.

(2)执行gops命令

 gops

[root@Tracy ~]# gops
5291  5235  main                     unknown Go version /tmp/go-build3139401693/b001/exe/main
13405 13276 docker-proxy             go1.17.10          /usr/bin/docker-proxy
13411 13276 docker-proxy             go1.17.10          /usr/bin/docker-proxy
13424 1     containerd-shim-runc-v2  unknown Go version /usr/bin/containerd-shim-runc-v2
7009  6573  gops                     go1.17.2           /home/gopath/bin/gops
6138  1     aliyun-service           go1.17.12          /usr/local/share/aliyun-assist/2.2.3.326/aliyun-service
6054  1     main                     go1.17.2           /home/back-end/main
5235  9451  go                       go1.17.2           /usr/local/go/bin/go
24544 1     containerd               unknown Go version /usr/bin/containerd
13276 1     dockerd                  go1.17.10          /usr/bin/dockerd

 或是

ps aux | grep go

[root@Tracy ~]# ps aux | grep go
root      5235  0.0  0.4 908108 15360 pts/1    Sl+  16:31   0:00 go run main.go
root      5291  0.0  1.3 842836 51444 pts/1    Sl+  16:31   0:00 /tmp/go-build3139401693/b001/exe/main
root      7340  0.0  0.0 112812   980 pts/2    S+   17:07   0:00 grep --color=auto go

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值