在 CentOS 上配置和使用 Golang(Go 语言)时,有几个关键点和常见坑需要注意。下面按安装方式 → 环境配置 → 常见问题 → 最佳实践来说明。
CentOS 自带 repo 里的 Go 通常版本较旧,不建议用 yum 安装。
# 示例:安装 Go 1.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
✅ 优点:版本新、可控、干净
yum install golang
⚠️ 版本通常落后很多(如 1.15)
推荐写在 ~/.bashrc 或 /etc/profile.d/go.sh
cat > /etc/profile.d/go.sh <<'EOF'
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
EOF
source /etc/profile.d/go.sh
go version
go env
version 'GLIBC_2.xx' not found,需:
CGO_ENABLED=0 静态编译CGO_ENABLED=0 go build
运行 Go 程序时可能报权限错误:
permission denied
cannot execute binary
✅ 解决方式:
# 临时
setenforce 0
# 永久(谨慎)
vi /etc/selinux/config
SELINUX=disabled
或给二进制加执行权限:
chmod +x yourapp
如果 Go 程序是 Web 服务:
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=off
go build -ldflags="-s -w" -o app
[Unit]
Description=Go App
After=network.target
[Service]
ExecStart=/opt/app/app
WorkingDirectory=/opt/app
User=appuser
Restart=always
[Install]
WantedBy=multi-user.target
| 问题 | 原因 | 解决 |
|---|---|---|
| go: command not found | PATH 没配 | 检查 /usr/local/go/bin |
| cannot find package | GOPATH 错 | go env GOPATH |
| 编译慢 | 启用 CGO | CGO_ENABLED=0 |
| 运行时崩溃 | SELinux | setenforce 0 |
| 依赖拉不下来 | 网络 | 配置 GOPROXY |
如果你愿意,可以告诉我:
我可以给你一份针对性配置模板。