在 CentOS 上编译 Go 项目的标准流程
一 准备环境
sudo yum install -y golang;在 CentOS 8+ 可用 sudo dnf install -y golang。sudo tar -C /usr/local -xzf go1.19.5.linux-amd64.tar.gz。echo 'export GOROOT=/usr/local/go' >> /etc/profile,echo 'export PATH=$PATH:$GOROOT/bin' >> /etc/profile,执行 source /etc/profile 生效。GOPATH=$HOME/go 并将 $GOPATH/bin 加入 PATH(可选)。go version 应输出版本号,如 go1.19.5 linux/amd64。二 获取代码与依赖
cd /path/to/your/project。go mod init <module-name>(若已有 go.mod 可跳过),然后 go get ./... 拉取依赖。GOPATH 并将代码放入 $GOPATH/src 下(旧项目常见做法)。三 编译与交叉编译
go build -o myapp main.go 或使用模块时直接 go build,生成当前平台可执行文件。GOOS=linux GOARCH=amd64 go build -o myapp-linux-amd64 main.goGOOS=windows GOARCH=amd64 go build -o myapp.exe main.goGOOS=darwin GOARCH=amd64 go build -o myapp-darwin-amd64 main.go四 产物打包与分发
tar -czvf myapp.tar.gz myapp config.yaml,使用 scp 或 rsync 上传至服务器。tar -xzvf myapp.tar.gz && chmod +x myapp。rpmbuild 编写 SPEC 文件并构建,便于在 CentOS 环境内标准化分发与安装。五 运行与进程管理
./myapp;后台运行:nohup ./myapp > app.log 2>&1 &。/etc/systemd/system/myapp.service:[Unit]
Description=My Go Application
After=network.target
[Service]
User=youruser
Group=yourgroup
ExecStart=/path/to/myapp
Restart=always
Environment=GO_ENV=production
[Install]
WantedBy=multi-user.target
常用命令:sudo systemctl daemon-reload && sudo systemctl start myapp && sudo systemctl enable myapp;查看状态与日志:systemctl status myapp、journalctl -u myapp -f。sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent && sudo firewall-cmd --reload。FROM golang:1.18
WORKDIR /app
COPY . .
RUN go build -o myapp main.go
EXPOSE 8080
CMD ["./myapp"]
构建与运行:docker build -t myapp .;docker run -p 8080:8080 myapp。