在 CentOS 上配置 Golang(Go 语言)开发环境时,确实有一些常见的坑点,尤其对刚从 Ubuntu / macOS 转过来的开发者来说更容易踩。下面按「安装 → 环境 → 编译运行 → 运维」几个阶段总结。
yum install golangCentOS 自带的 Go 版本非常旧(常见 1.13 / 1.15 甚至更早):
yum install golang
坑点:
✅ 正确做法:
wget https://go.dev/dl/go1.22.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.22.linux-amd64.tar.gz
很多人解压到 /opt/go 却没配置 PATH。
✅ 推荐路径:
/usr/local/go
环境变量:
export PATH=$PATH:/usr/local/go/bin
验证:
go version
Go 1.11+ 已经默认使用 Go Modules,不需要设置 GOPATH 来写项目。
❌ 常见错误:
~/go/src✅ 建议:
# 可选(默认 ~/go)
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
CentOS 默认 没有 gcc / glibc 开发库。
如果你的项目用了:
netos/user会报错:
exec: "gcc": executable file not found
✅ 解决:
yum install -y gcc glibc-devel
或禁用 CGO:
CGO_ENABLED=0 go build
CentOS 服务器常无外网或访问慢。
✅ 必须配置:
go env -w GOPROXY=https://proxy.golang.com.cn,direct
国内推荐:
https://proxy.golang.com.cnhttps://goproxy.cnverifying module: checksum mismatch
✅ 关闭校验(不推荐生产):
go env -w GOSUMDB=off
CentOS 编译的二进制在 Alpine 上跑不了。
✅ 完全静态:
CGO_ENABLED=0 GOOS=linux go build -a
常见错误:
✅ 示例 service:
[Unit]
Description=Go App
[Service]
ExecStart=/usr/local/bin/app
Environment=GIN_MODE=release
Restart=always
[Install]
WantedBy=multi-user.target
/usr/bin/go/usr/local/go✅ 检查:
which go
go env GOROOT
setsebool -P httpd_can_network_connect 1
或临时关闭(不推荐):
setenforce 0
go version
go env GOPROXY
go env CGO_ENABLED
which gcc
如果你愿意,可以告诉我:
我可以给你一套最稳的配置方案。