在 CentOS 上配置 Golang(Go 语言环境)时,有几个常见坑点和最佳实践需要注意,下面按「安装 → 配置 → 使用 → 常见问题」给你梳理一下。
不要用 yum install golang(版本往往很旧)
cd /usr/local
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
/usr/local/go是官方推荐路径
yum install golang(CentOS 7 可能是 Go 1.13)$HOME 里乱放vim ~/.bashrc
加入:
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
生效:
source ~/.bashrc
go version
go env
不需要手动建 GOPATH 项目
go mod init project
go mod tidy
GO111MODULE=on(Go 1.16+ 默认就是)export GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
或:
export GOPROXY=https://goproxy.cn
否则 go get 会卡死。
如果你是跑 HTTP 服务:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
如果程序无法绑定端口或写文件:
getenforce
临时关闭(不推荐长期):
setenforce 0
正确做法:
/var/www、/opt 等允许路径示例 go.service:
[Unit]
Description=Go App
After=network.target
[Service]
ExecStart=/root/go/bin/app
WorkingDirectory=/root/go/src/app
User=root
Restart=always
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start go
| 问题 | 原因 |
|---|---|
| go: command not found | PATH 没配 |
| go get 超时 | 没设 GOPROXY |
| 编译慢 | 没开 module cache |
| 端口无法访问 | 防火墙 / SELinux |
| yum 版本太旧 | 用了系统源 |
go version go1.22.5 linux/amd64
GOPROXY=https://goproxy.cn
GO111MODULE=on
如果你愿意,可以告诉我:
我可以给你一套完全贴合你场景的配置方案。