Go部署到服务器相对其他语言来说很简单,只需要将所有应用代码打包成一个二进制文件即可,不需要像额外的运行环境,例如向Java还需要jvm。
环境:Linux操作系统,centos7
本机环境:macOS,goland
1、拉取最新代码git clone https://github.com/你们自己管理代码的仓库2、构建应用
- 首先看一下自己的开发环境 go env
GO111MODULE="on" GOARCH="amd64" GOBIN="" GOCACHE="/Users/mac/Library/Caches/go-build" GOENV="/Users/mac/Library/Application Support/go/env" GOEXE="" GOEXPERIMENT="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOINSECURE="" GOMODCACHE="/Users/mac/go/pkg/mod" GONOPROXY="" GONOSUMDB="" GOOS="darwin" GOPATH="/Users/mac/go" GOPRIVATE="" GOPROXY="https://goproxy.io,https://goproxy.cn,https://goproxy.io/zh/,https://proxy.golang.com.cn,direct" GOROOT="/Users/mac/go/go1.17" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/Users/mac/go/go1.17/pkg/tool/darwin_amd64" GOVCS="" GOVERSION="go1.17" GCCGO="gccgo" AR="ar" CC="clang" CXX="clang++" CGO_ENABLED="1" GOMOD="/Users/mac/go/src/project/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 -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/rt/vqv9n31n3nxbdqnf5333nftr0000gn/T/go-build3049549800=/tmp/go-build -gno-record-gcc-switches -fno-common"
- 第二步:编译可执行文件(交叉编译)
64位操作系统的架构就是amd64,M1就是M1的,goos是编译之后运行在哪的环境
Mac 下编译 Linux 和 Windows 64项目文件 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build Windows 下编译 Mac 和 Linux 64位可执行程序 SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=amd64 go build 生成一个project可执行文件3、部署到服务器上
-
将文件拖拽到自己的项目目录下,例如
-
编写start.sh脚本
kill -9 "$(pgrep -f project)" #杀死之前的进程 chmod +x /home/project/place/server/project # 给目标文件加权 nohup /home/project/place/server/project -c /home/project/place/server/config.dev.yaml > start.log 2>&1 & # 使用nohup后台运行
-
之后运行一下sh脚本即可
cd /home/project/place/server sh start.sh



