确保Ubuntu系统已安装Golang(建议使用最新稳定版),并通过go version验证安装。若未安装,可通过以下命令安装:
sudo apt update && sudo apt install golang-go
设置环境变量(可选但推荐),编辑~/.bashrc文件添加:
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
运行source ~/.bashrc使配置生效。
创建项目目录并初始化Go Module(管理依赖):
mkdir myapp && cd myapp
go mod init myapp # 生成go.mod文件
编写代码(如main.go),示例:
package main
import "fmt"
func main() {
fmt.Println("Hello, Ubuntu Golang App!")
}
使用go build命令生成可执行文件。若需指定目标平台(如Linux 64位),通过GOOS和GOARCH环境变量交叉编译:
GOOS=linux GOARCH=amd64 go build -o myapp # 生成适用于Linux的可执行文件
若无需跨平台,直接运行go build -o myapp即可。
upx工具压缩二进制文件(需先安装):sudo apt install upx
upx --best myapp # 最佳压缩率
-ldflags注入版本、提交哈希等元数据,便于后续管理:VERSION=1.0.0
COMMIT=$(git rev-parse --short HEAD)
BUILD_TIME=$(date +%Y-%m-%dT%H:%M:%S)
go build -ldflags "-X 'main.Version=$VERSION' -X 'main.Commit=$COMMIT' -X 'main.BuildTime=$BUILD_TIME'" -o myapp
需在代码中定义对应变量(如main.go中添加var Version string)。tar命令将可执行文件打包为.tar.gz(便于传输):tar -czvf myapp.tar.gz myapp # 生成压缩包
Dockerfile简化部署:FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
构建并运行Docker镜像:docker build -t myapp:latest .
docker run -p 8080:8080 myapp:latest # 根据实际端口调整
myapp.tar.gz或Docker镜像上传至服务器,解压后运行:scp myapp.tar.gz user@server:/home/user/
ssh user@server
tar -xzvf myapp.tar.gz
chmod +x myapp
./myapp
通过以上步骤,可实现Golang应用在Ubuntu下的编译、优化、打包及发布,满足不同场景的部署需求。