必须用官方二进制包手动安装,禁用系统包管理器;需按架构选包(x86_64选amd64、aarch64选arm64),解压至/usr/local,设goroot=/usr/local/go并前置$goroot/bin到path,国内必配goproxy,生产环境须用systemd管理构建好的静态二进制。

直接用系统包管理器(如 apt install golang)装 Go,大概率会踩坑:版本旧、路径错、go mod 行为异常,甚至 go install 生成的二进制找不到。必须用官方二进制包手动安装。
确认服务器架构和系统类型再下载
常见错误是 ARM 实例(比如腾讯云 aarch64 或 AWS Graviton)却下 linux-amd64.tar.gz,报错:bash: /usr/local/go/bin/go: cannot execute binary file: Exec format error。
- 运行
uname -m:输出x86_64→ 下载go*.linux-amd64.tar.gz;输出aarch64或arm64→ 下载go*.linux-arm64.tar.gz - 运行
cat /etc/os-release确认是 Ubuntu/CentOS/Debian 等主流发行版;别在 Alpine 上硬解压官方包——它缺 glibc,得改用源码编译或换镜像 - 去 https://www.php.cn/link/81836b7cd16991abb7febfd7832927fd 找最新稳定版,例如
go1.22.5.linux-amd64.tar.gz,别用第三方镜像站链接(可能滞后)
解压后必须正确配置 GOROOT 和 PATH
GOROOT 是 Go 安装位置,PATH 必须把 $GOROOT/bin 放最前面,否则 go 命令可能调用到系统旧版本。
初始化并管理阿里云SDK Go 客户端,涵盖 sync.Once 单例、goroutine 安全、endpoint 与 region 配置、VPC 端点及调试。
- 解压命令固定用:
sudo tar -C /usr/local -xzf go*.linux-*.tar.gz(覆盖前先sudo rm -rf /usr/local/go) - 写入
~/.bashrc(非 root 用户)或/etc/profile.d/golang.sh(全局):export GOROOT=/usr/local/goexport PATH=$GOROOT/bin:$PATH
(GOPATH可设可不设,Go 1.16+ 默认模块模式下它只影响go install输出位置) - 执行
source ~/.bashrc后验证:go version和go env GOROOT输出必须一致且指向/usr/local/go
国内网络下不配 GOPROXY 就拉不动依赖
没配代理时,go mod download 卡在 proxy.golang.org 或报 verifying github.com/xxx@v1.2.3: checksum mismatch,本质是模块代理和校验服务器不可达。
- 一键设置清华源:
go env -w GOPROXY=https://mirrors.tuna.tsinghua.edu.cn/goproxy/,direct - 若项目含私有仓库(如
git.internal.company.com),追加:go env -w GOPRIVATE=git.internal.company.com - 生产环境禁用校验:
go env -w GOSUMDB=off是危险操作,仅限临时调试;线上应保留校验,靠可信代理解决 - 验证:
go env GOPROXY GOPRIVATE要能输出对应值,再跑一次go mod download golang.org/x/net看是否秒完成
别在生产机上用 go run 启动服务
go run main.go 适合本地验证,但在云服务器上直接跑等于裸奔:无进程管理、无日志重定向、无崩溃自动重启、残留临时文件。
- 构建静态二进制:
CGO_ENABLED=0 go build -o myapp ./main.go(避免动态链接 libc) - 给执行权限:
chmod +x myapp - 用
systemd管理(而非nohup):
写/etc/systemd/system/myapp.service,指定User、WorkingDirectory、ExecStart和Restart=always - 启动:
sudo systemctl daemon-reload && sudo systemctl enable --now myapp
真正麻烦的不是装 Go,而是后续构建、部署、日志、重启策略全要自己串起来——尤其 GOPROXY 和 systemd 配置稍错一点,服务就起不来,还查不出原因。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










