centos golang打包如何配置环境
小樊
33
2025-12-01 23:57:42
CentOS 下 Go 打包环境配置与打包发布
一 安装 Go 与基础环境
- 安装编译工具与依赖(可选,便于本地构建与运行测试):
- sudo yum groupinstall -y “Development Tools”
- sudo yum install -y wget gcc gcc-c++ make zlib zlib-devel openssl openssl-devel pcre pcre-devel
- 安装 Go(两种常用方式,二选一):
- 包管理器安装:sudo yum install -y golang
- 官方二进制安装(推荐固定版本):
- wget https://golang.org/dl/go1.20.5.linux-amd64.tar.gz
- sudo tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz
- 配置环境变量(写入 ~/.bashrc 或 /etc/profile,二者选其一):
- echo ‘export GOROOT=/usr/local/go’ >> ~/.bashrc
- echo ‘export GOPATH=$HOME/go’ >> ~/.bashrc
- echo ‘export PATH=$PATH:$GOROOT/bin:$GOPATH/bin’ >> ~/.bashrc
- source ~/.bashrc
- 验证:go version 与 go env 应显示正常版本与 Go 环境信息。
二 选择与配置打包方式
- 纯 Go 静态二进制(最通用,跨发行版、少依赖)
- 编译:CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o your_app main.go
- 说明:禁用 CGO,仅依赖系统内核,适合绝大多数服务程序。
- 需要 CGO 的本地编译(如依赖 sqlite、cgo 库)
- 安装 C 工具链:sudo yum install -y gcc
- 编译:CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o your_app main.go
- 说明:可链接本地 C 库,但分发时需保证目标系统具备相同运行库。
- 打包分发
- 压缩归档:tar -czvf your_app.tar.gz your_app config/ scripts/
- 传输与解压:scp your_app.tar.gz user@host:/opt && ssh user@host “tar -xzvf your_app.tar.gz -C /opt”
- 赋权:chmod +x /opt/your_app。
三 作为系统服务运行与开机自启
- 创建 systemd 服务文件:/etc/systemd/system/your_app.service
- [Unit]
- Description=Your Go Application
- After=network.target
- [Service]
- ExecStart=/opt/your_app
- Restart=always
- User=www
- Group=www
- Environment=DATABASE_URL=your_db_url
- [Install]
- WantedBy=multi-user.target
- 启用与启动
- systemctl daemon-reload
- systemctl enable --now your_app
- systemctl status your_app。
四 进阶 构建 RPM 包便于内部分发
- 安装 rpmbuild:sudo yum install -y rpm-build
- 准备目录:mkdir -p $HOME/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
- 放入可执行文件:cp your_app $HOME/rpmbuild/SOURCES/
- 编写 SPEC(示例):
- Name: your_app
- Version: 1.0
- Release: 1%{?dist}
- Summary: Your Go Application
- License: MIT
- URL: http://example.com
- Source0: %{name}-%{version}.tar.gz
- BuildRequires: golang
- Requires: golang
- %description
- Your Go application description.
- %prep
- %build
- go build -o %{buildroot}/usr/bin/your_app
- %install
- rm -rf %{buildroot}
- mkdir -p %{buildroot}/usr/bin
- cp your_app %{buildroot}/usr/bin/
- %files
- %changelog
- 构建:rpmbuild -ba $HOME/rpmbuild/SPECS/your_app.spec
- 产物位置:$HOME/rpmbuild/RPMS/x86_64/your_app-1.0-1.el7.x86_64.rpm。
五 常见问题与排查
- 环境变量未生效:确认写入的是当前登录用户的 ~/.bashrc 或全局的 /etc/profile,并执行 source;执行 go env 检查 GOROOT、GOPATH、GOOS、GOARCH、CGO_ENABLED 是否符合预期。
- 交叉编译报错:若需纯静态二进制,请设置 CGO_ENABLED=0;需要 CGO 时安装 gcc 等工具链,并确认目标系统库兼容。
- 服务无法启动:检查 ExecStart 路径、文件权限、端口占用;使用 journalctl -u your_app -xe 查看详细日志。