CentOS 下配置 Golang 打包环境的实用步骤
一 安装 Go 与基础工具
- 更新系统并安装编译工具与常用依赖:
- sudo yum update -y
- sudo yum groupinstall -y “Development Tools”
- sudo yum install -y wget
- 安装 Go(两种常用方式,二选一):
- 使用 yum:sudo yum install -y golang
- 手动安装二进制包(示例为 go1.20.5,可按需替换版本):
- 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
- 验证安装:go version 应输出版本号。
二 配置环境变量
- 推荐写入用户级配置文件(如 ~/.bashrc 或 ~/.bash_profile):
- export GOROOT=/usr/local/go
- export GOPATH=$HOME/go
- export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
- 使配置生效:source ~/.bashrc(或 source ~/.bash_profile)
- 验证:go env 应能看到 GOROOT、GOPATH、GOOS、GOARCH、CGO_ENABLED 等关键变量。
三 打包与交叉编译
- 本机为 Linux amd64 时的简单构建:
- go build -o your_app main.go
- 交叉编译为 Linux amd64(常用于在 CI 或其他平台生成 CentOS 可执行文件):
- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o your_app main.go
- 说明:
- 设置 CGO_ENABLED=0 可避免依赖外部 C 库,生成静态二进制,便于在目标 CentOS 直接运行。
- 如需其他架构(如 arm64),将 GOARCH 改为对应值即可。
四 打包与部署交付
- 压缩归档(便于传输与备份):
- tar -czvf your_app.tar.gz your_app config/ scripts/
- 在目标 CentOS 解压并运行:
- tar -xzvf your_app.tar.gz -C /opt/your_app
- chmod +x /opt/your_app/your_app
- /opt/your_app/your_app
- 作为系统服务运行(使用 systemd):
- 创建服务文件:/etc/systemd/system/your_app.service
- 示例内容:
- [Unit]
- Description=Your Go App
- After=network.target
- [Service]
- ExecStart=/opt/your_app/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}
- 将可执行文件放入 SOURCES 并编写 SPEC(示例):
- Name: myapp
- Version: 1.0
- Release: 1%{?dist}
- Summary: My Go application
- License: MIT
- URL: http://example.com/myapp
- Source0: %{name}-%{version}.tar.gz
- BuildRequires: golang
- Requires: golang
- %description
- My Go application description.
- %prep
- %build
- go build -o %{buildroot}/usr/bin/myapp
- %install
- rm -rf %{buildroot}
- mkdir -p %{buildroot}/usr/bin
- cp %{SOURCE1} %{buildroot}/usr/bin/
- %files
- %changelog
- 构建:rpmbuild -ba $HOME/rpmbuild/SPECS/myapp.spec
- 产物位于:$HOME/rpmbuild/RPMS。