温馨提示×

centos golang打包时如何配置环境

小樊
38
2025-12-09 20:29:33
栏目: 编程语言

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
      • %setup -q
    • %build
      • go build -o %{buildroot}/usr/bin/myapp
    • %install
      • rm -rf %{buildroot}
      • mkdir -p %{buildroot}/usr/bin
      • cp %{SOURCE1} %{buildroot}/usr/bin/
    • %files
      • /usr/bin/myapp
    • %changelog
  • 构建:rpmbuild -ba $HOME/rpmbuild/SPECS/myapp.spec
  • 产物位于:$HOME/rpmbuild/RPMS。

0