centos golang打包如何配置环境
导读:CentOS 下 Go 打包环境配置与打包发布 一 安装 Go 与基础环境 安装编译工具与依赖(可选,便于本地构建与运行测试): sudo yum groupinstall -y “Development Tools” sudo yum...
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
- [Unit]
- 启用与启动
- 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
- %setup -q
- %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
- /usr/bin/your_app
- %changelog
-
- Mon Jan 01 2023 Your Name you@example.com - 1.0-1 - Initial package
-
- 构建: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 查看详细日志。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos golang打包如何配置环境
本文地址: https://pptw.com/jishu/761251.html
