前言
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