在 CentOS 上配置和使用 Golang(Go 语言),有几个常见坑和注意点,下面按「安装 → 环境 → 使用 → 排错」给你梳理一下。
不要用 yum install golang(版本旧)
# 以 go1.22 为例
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
~/.bashrc 或 ~/.profileexport PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
然后:
source ~/.bashrc
go version
which go
go env -w GO111MODULE=on
go mod init project-name
⚠️ 不要手动改 GOPATH,除非你很清楚在做什么
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOPRIVATE=git.yourcompany.com
CentOS 7 默认 glibc 较旧
✅ Go 编译的程序一般没问题
❌ 但某些 CGO 依赖可能报错
建议:
go env CGO_ENABLED
如果是 1 且你没用到 C 库:
export CGO_ENABLED=0
如果你跑 Web 服务:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
[Unit]
Description=Go App
After=network.target
[Service]
User=app
WorkingDirectory=/opt/app
ExecStart=/opt/app/app
Restart=always
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start yourapp
| 问题 | 原因 |
|---|---|
go: command not found |
PATH 没配 |
cannot find package |
GOPROXY 没设 |
| 编译慢 | 开了 CGO |
运行报错 GLIBC_2.x not found |
系统太老 |
✅ 用官方二进制
✅ 用 Go Modules
✅ 用 goproxy.cn
✅ 生产用 systemd
❌ 不用 yum 旧版
❌ 不混用 GOPATH
如果你愿意,可以告诉我:
我可以直接给你一套可用配置模板。