温馨提示×

golang打包centos难不难

小樊
33
2026-10-23 21:19:33
栏目: 编程语言

总体来说:用 Go 在 CentOS 上打包不算难,而且 Go 在这方面天生有优势。难不难主要取决于你想要的“打包形式”。

下面分情况说明一下:


一、最简单:直接编译成二进制(不难 ★)

Go 是静态编译语言,不依赖运行环境(除非用了 cgo)。

# 在 CentOS 上
yum install golang -y

# 编译
go build -o myapp main.go

跑起来:

./myapp

✅ 优点

  • 不需要安装 Go 运行环境
  • 一个文件就能跑
  • 非常适合 CentOS / 服务器部署

❌ 缺点

  • 不是“系统级安装包”
  • 没有 service / 启动脚本

二、做成 systemd 服务(不难 ★★)

CentOS 7/8 常用 systemd。

/etc/systemd/system/myapp.service

[Unit]
Description=My Go App
After=network.target

[Service]
ExecStart=/opt/myapp/myapp
WorkingDirectory=/opt/myapp
Restart=always
User=appuser

[Service]
ExecStart=/opt/myapp/myapp

[Install]
WantedBy=multi-user.target
systemctl enable myapp
systemctl start myapp

✅ 这已经能满足 90% 生产需求


三、打 RPM 包(中等 ★★★)

如果你要在 CentOS 上正规分发,可以打 RPM。

工具:

  • rpmbuild
  • fpm(推荐,简单)

用 fpm 示例:

fpm -s dir -t rpm -n myapp -v 1.0 \
  --prefix /opt/myapp myapp

✅ 适合:

  • 内部平台
  • 运维统一部署

❌ 比前两种复杂一些


四、Docker 镜像(推荐 ★★)

现在更常见的方式:

FROM centos:7
COPY myapp /usr/local/bin/myapp
CMD ["myapp"]
docker build -t myapp .

✅ 好处

  • 不关心 CentOS 版本
  • 环境一致
  • 运维友好

五、常见坑(其实不多)

  1. cgo 开启时会依赖 glibc

    CGO_ENABLED=0 go build
    

    推荐服务器程序关闭 cgo

  2. CentOS 版本差异

    • CentOS 6:太老,不建议
    • CentOS 7/8:完全没问题
  3. 交叉编译 在 Mac / Win 编译 CentOS 程序:

    GOOS=linux GOARCH=amd64 go build
    

总结一句话

Go 打包 CentOS 不难,越“轻量”越简单;越“正规”(RPM / 签名)越麻烦。

如果你愿意,可以告诉我:

  • 是 内部工具 / 生产服务 / 商业软件
  • 要不要 RPM / Docker / 直接二进制

我可以直接给你一份可用模板。

0 踩