在 CentOS 上配置 Golang(Go 语言环境) 时,有几个常见坑点和注意事项,下面按推荐做法 + 易踩坑点给你讲清楚。
稳定、干净、可控
yum remove golang -y
cd /usr/local
wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz
tar -xzf go1.22.4.linux-amd64.tar.gz
解压后目录:
/usr/local/go
编辑:
vim ~/.bashrc
写入:
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
生效:
source ~/.bashrc
验证:
go version
✅ 正确输出类似:
go version go1.22.4 linux/amd64
yum install golang
❌ 问题:
✅ 建议:一律用官方二进制包
常见错误:
GOPATH=/usr/local/go ❌
✅ 正确:
GOPATH=$HOME/go
原因:
GOROOT ≠ GOPATHGOPATH 是工作目录,不是 Go 安装目录go env -w GO111MODULE=on
否则老项目可能报错:
cannot find package
否则 go get 非常慢甚至失败:
go env -w GOPROXY=https://goproxy.cn,direct
或:
go env -w GOPROXY=https://proxy.golang.org,direct
验证:
go env | grep GOPROXY
CentOS 默认开启 firewalld:
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
否则:
如果服务起不来:
getenforce
如果是 Enforcing:
setenforce 0 # 临时关闭
或配置 SELinux 规则(推荐生产环境)
| 系统 | 注意点 |
|---|---|
| CentOS 7 | glibc 较老,Go 1.20+ 没问题 |
| CentOS 8 | yum 已停止维护,建议用 dnf |
| Stream | 接近 RHEL,稳定 |
| 错误 | 原因 | 解决 |
|---|---|---|
go: command not found |
PATH 没配 | 检查 .bashrc |
cannot find package |
GOPATH / GO111MODULE | 开启 module |
permission denied |
权限问题 | 不要装在 /root |
network timeout |
没配代理 | 配 GOPROXY |
/usr/local/go # Go 安装
$HOME/go # 项目 & 缓存
GOPROXY=goproxy.cn
GO111MODULE=on
如果你愿意,可以告诉我:
我可以给你 一套完全贴合你环境的 Go 配置方案。