在 CentOS 下配置 Golang(Go 语言)环境时,有几个关键点需要注意,尤其是版本、路径、权限和防火墙等方面。下面按常见坑 + 推荐做法给你总结一下。
CentOS 自带仓库的 Go 通常较旧,不建议用 yum 安装。
# 以 root 或 sudo 用户操作
wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz
rm -rf /usr/local/go
tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz
⚠️ 注意:
- 一定要
rm -rf /usr/local/go再解压,避免旧版本残留- 不要装到
/root下,其他用户可能没权限
编辑:
/etc/profile.d/go.sh
内容:
export GOROOT=/usr/local/go
export GOPATH=/opt/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
使配置生效:
source /etc/profile
~/.bashrc
⚠️ 注意:
/opt/gopath)强烈建议使用 Go Modules,不再依赖 GOPATH:
go env -w GO111MODULE=on
go mod init project
go env GO111MODULE
go env -w GOPROXY=https://goproxy.cn,direct
或:
go env -w GOPROXY=https://proxy.golang.org,direct
go env -w GOSUMDB=off
permission denied
原因:
/root✅ 建议:
mkdir -p /opt/gopath
chown -R appuser:appuser /opt/gopath
CentOS 默认使用 firewalld:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
如果是云服务器,还要开安全组
SELinux 可能阻止 Go 程序监听端口或读写文件。
setenforce 0
semanage port -a -t http_port_t -p tcp 8080
go build -o app main.go
nohup ./app > app.log 2>&1 &
或用 systemd(推荐)
| 问题 | 原因 |
|---|---|
go: command not found |
PATH 没配置 |
| 下载依赖慢 | 没设 GOPROXY |
| 端口不通 | firewalld / SELinux |
| 权限 denied | GOPATH 在 /root |
| 版本太旧 | 用了 yum 安装 |
Go: /usr/local/go
GOPATH: /opt/gopath
GOPROXY: https://goproxy.cn
GO111MODULE: on
如果你愿意,可以告诉我:
我可以给你一套可直接用的配置模板。