Golang项目在CentOS上的打包配置指南
在CentOS上打包Golang项目前,需先安装Go环境并配置基础变量。
yum直接安装(版本较旧)或手动下载二进制包(推荐)。手动安装步骤:wget https://golang.google.cn/dl/go1.23.0-linux-amd64.tar.gz # 替换为最新版本
sudo tar -C /usr/local -xzf go1.23.0-linux-amd64.tar.gz
~/.bashrc(或/etc/profile),添加以下内容:export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
执行source ~/.bashrc使配置生效,验证安装:go version。go mod init <module-name>(如go mod init github.com/yourname/myapp),生成go.mod文件管理依赖。go mod tidy清理未使用的依赖,确保go.mod和go.sum文件准确。Golang支持交叉编译,需通过环境变量指定目标平台(CentOS多为Linux amd64)。
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp main.go
CGO_ENABLED=0:禁用CGO,生成纯静态二进制文件(无需依赖CentOS系统库);GOOS=linux:目标操作系统为Linux;GOARCH=amd64:目标架构为64位。-ldflags="-extldflags='-static'"参数;-ldflags注入Git提交ID或版本号(需项目代码中定义对应变量)。tar命令将可执行文件及相关配置(如config.yaml、.env)打包:tar -czvf myapp.tar.gz myapp config.yaml
scp命令将打包文件上传至CentOS服务器:scp myapp.tar.gz your_username@your_server_ip:/path/to/deploy
登录服务器后解压:tar -xzvf myapp.tar.gz -C /opt/myapp。chmod +x /opt/myapp/myapp
nohup命令让程序在后台运行,并输出日志:nohup /opt/myapp/myapp > /opt/myapp/log.log 2>&1 &
/etc/systemd/system/myapp.service,内容如下:[Unit]
Description=My Golang Application
After=network.target
[Service]
User=www
Group=www
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/myapp
Restart=always
Environment=APP_ENV=production
[Install]
WantedBy=multi-user.target
执行以下命令启用并启动服务:sudo systemctl daemon-reload
sudo systemctl start myapp.service
sudo systemctl enable myapp.service
通过systemctl status myapp.service查看服务状态。Dockerfile实现环境隔离与快速部署:FROM golang:1.23-alpine AS build
WORKDIR /app
COPY . .
RUN go mod download && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /bin/myapp
FROM alpine:latest
COPY --from=build /bin/myapp /app/myapp
WORKDIR /app
CMD ["./myapp"]
构建并运行:docker build -t myapp && docker run -p 8080:8080 myapp。build.sh脚本自动化编译、打包过程:#!/bin/bash
PROJECT_DIR=$(pwd)
VERSION=$(git rev-parse --short HEAD)
OUTPUT_DIR="$PROJECT_DIR/dist"
mkdir -p $OUTPUT_DIR
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-X main.version=$VERSION" -o "$OUTPUT_DIR/myapp-$VERSION-linux-amd64"
echo "Build completed: $OUTPUT_DIR/myapp-$VERSION-linux-amd64"
赋予执行权限:chmod +x build.sh,运行./build.sh即可自动打包。通过以上步骤,可实现Golang项目在CentOS上的高效打包与部署,满足生产环境的需求。