温馨提示×

centos下golang配置要注意什么

小樊
36
2026-09-24 02:38:12
栏目: 编程语言

CentOS 下配置 Golang(Go 语言)环境时,有几个关键点需要注意,尤其是版本、路径、权限和防火墙等方面。下面按常见坑 + 推荐做法给你总结一下。


一、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 下,其他用户可能没权限

二、环境变量的正确配置(非常重要)

1️⃣ 系统级配置(推荐)

编辑:

/etc/profile.d/go.sh

内容:

export GOROOT=/usr/local/go
export GOPATH=/opt/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

使配置生效:

source /etc/profile

2️⃣ 用户级(可选)

~/.bashrc

⚠️ 注意:

  • GOPATH 不要设在 /root
  • 多用户服务器建议统一 GOPATH(如 /opt/gopath

三、GOPATH 与 Go Modules

✅ 新项目(Go 1.11+)

强烈建议使用 Go Modules,不再依赖 GOPATH:

go env -w GO111MODULE=on
go mod init project

⚠️ 注意点

  • CentOS 默认可能关闭 module:
    go env GO111MODULE
    
  • 老项目如果依赖 GOPATH,需要正确配置

四、代理与网络问题(国内服务器必看)

设置 GOPROXY

go env -w GOPROXY=https://goproxy.cn,direct

或:

go env -w GOPROXY=https://proxy.golang.org,direct

关闭校验(可选)

go env -w GOSUMDB=off

五、权限与目录问题

常见错误

permission denied

原因:

  • GOPATH 在 /root
  • 用 root 编译,普通用户运行

✅ 建议:

mkdir -p /opt/gopath
chown -R appuser:appuser /opt/gopath

六、防火墙与端口(Web / RPC 服务)

CentOS 默认使用 firewalld

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

如果是云服务器,还要开安全组


七、SELinux 注意事项(非常容易踩坑)

SELinux 可能阻止 Go 程序监听端口或读写文件。

临时关闭(测试用)

setenforce 0

正式环境建议

  • 写正确的 SELinux 策略
  • 或放行端口:
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

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 用途(Web / 微服务 / CLI)
  • 是否多用户 / 生产环境

我可以给你一套可直接用的配置模板

0