(1)安装Go
(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