目录

Linux 安装 Go 语言开发环境:从下载到配置的完整指南

在服务器端开发、云原生、微服务等领域,Go 语言凭借出色的并发性能和简洁的语法获得了大量开发者的青睐。很多后端项目都会选择在 Linux 服务器上部署 Go 应用,因此掌握在 Linux 系统上搭建 Go 开发环境是每位 Go 开发者的必备技能。

这篇文章将从零开始,一步步带你完成 Go 语言在 Linux 上的安装与配置,包括下载安装包、解压安装、环境变量设置、安装验证,以及国内代理加速等实用技巧。无论你使用的是 CentOS、Ubuntu 还是其他发行版,都可以参考本文完成环境搭建。


一、下载 Go 安装包

Go 官方提供了各个平台的预编译二进制包,我们只需要下载对应 Linux 平台的 .tar.gz 压缩包即可。

推荐下载地址:

打开上面任意一个页面,找到你需要的版本(一般选择最新的稳定版),然后根据你的 CPU 架构选择对应的安装包。大多数云服务器是 amd64 架构,如果你使用的是 ARM 服务器则选择 arm64 版本。

方式一:本地下载后上传

在本地电脑下载好安装包,通过 scp 或 FTP 工具上传到 Linux 服务器。

方式二:在服务器上直接下载(推荐)

通过 wget 命令直接在服务器上下载,省去上传的步骤:

wget https://go.dev/dl/go1.24.0.linux-amd64.tar.gz

如果提示 wget: command not found,说明系统还没有安装 wget。CentOS 系统可以执行 yum install -y wget 来安装,Ubuntu 系统执行 apt install -y wget 即可。


二、解压安装 Go

Go 语言的安装非常简单,不需要编译,只需要把压缩包解压到指定目录就算安装完成了。

官方推荐的安装路径是 /usr/local,解压后会在该目录下生成一个 go 文件夹:

sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz

解压完成后,可以查看一下目录结构,确认文件已经到位:

ls /usr/local/go

你应该能看到 binsrcpkg 等目录,这就说明解压成功了。

注意: 如果你之前安装过旧版本的 Go,建议先删除旧目录再解压新版本,避免文件冲突:

sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz

三、配置环境变量

安装完成后,还需要配置环境变量,让系统能够识别 go 命令,同时设置好 Go 的工作目录。

3.1 了解关键环境变量

在配置之前,先了解几个重要的环境变量:

变量名 作用 建议值
GOROOT Go 的安装目录 /usr/local/go
GOPATH Go 的工作空间目录,用于存放依赖包和编译产物 $HOME/go
PATH 系统命令搜索路径,需要加入 Go 的 bin 目录 追加 $GOROOT/bin$GOPATH/bin

3.2 编辑配置文件

如果你希望所有用户都能使用 Go,可以编辑全局配置文件 /etc/profile;如果只为当前用户配置,编辑 ~/.bashrc~/.bash_profile 即可。

这里以全局配置为例:

sudo vi /etc/profile

在文件末尾追加以下内容:

# Go 语言环境变量
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

保存退出后,执行以下命令让配置立即生效:

source /etc/profile

提示: 如果你使用的是 zsh,需要将上面的配置写入 ~/.zshrc 文件中,然后执行 source ~/.zshrc


四、验证安装结果

配置完成后,运行以下命令检查 Go 是否安装成功:

go version

如果一切正常,你会看到类似这样的输出:

go version go1.24.0 linux/amd64

再通过 go env 命令确认环境变量是否正确:

go env GOROOT GOPATH

输出应该与你配置的路径一致:

/usr/local/go
/root/go

看到以上输出,说明 Go 语言开发环境已经安装配置成功了。


五、配置 Go Module 代理(国内用户推荐)

从 Go 1.11 开始引入了 Go Module 作为官方的依赖管理方案,到现在已经是默认启用的模式。但由于很多 Go 依赖库托管在 GitHub、Google 等国外平台上,国内服务器直接拉取依赖时经常会遇到超时或者速度极慢的问题。

解决办法是配置国内的 Go Module 代理,让依赖下载走国内镜像:

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

配置完成后,后续使用 go getgo mod tidy 等命令下载依赖时,速度会有明显提升。

其他可选的国内代理地址:

  • 七牛云代理:https://goproxy.cn
  • 阿里云代理:https://mirrors.aliyun.com/goproxy/

你可以根据自己的网络情况选择响应最快的代理。


六、编写第一个 Go 程序

环境搭好之后,我们写一个简单的程序来验证整个开发流程是否顺畅。

首先创建项目目录并初始化模块:

mkdir -p ~/hello && cd ~/hello
go mod init hello

然后创建 main.go 文件:

vi main.go

输入以下内容:

package main

import "fmt"

func main() {
	fmt.Println("Hello, Go on Linux!")
}

保存后运行:

go run main.go

如果终端输出了 Hello, Go on Linux!,恭喜你,Go 开发环境已经完全就绪了。


七、常见问题

Q1:执行 go 命令提示 “command not found” 怎么办?

这通常是环境变量没有生效导致的。请检查以下几点:

  1. 确认 /usr/local/go/bin 目录下确实存在 go 可执行文件
  2. 检查 /etc/profile~/.bashrc 中的 PATH 配置是否正确
  3. 执行 source /etc/profile 重新加载配置
  4. 如果是通过 SSH 新开的终端,配置可能还没加载,重新登录试试

Q2:GOROOT 和 GOPATH 有什么区别?

GOROOT 是 Go 语言本身的安装目录,里面包含了编译器、标准库等核心文件,一般不需要手动修改里面的内容。GOPATH 是你的工作空间,go get 下载的第三方依赖包会存放在这里,你自己的项目编译产物也会放在这里的 bin 目录中。

Q3:安装新版本时需要卸载旧版本吗?

需要。Go 不支持多版本共存(除非你使用第三方版本管理工具),升级前建议先删除旧的安装目录:

sudo rm -rf /usr/local/go

然后按照本文步骤重新解压新版本即可。

Q4:Ubuntu 和 CentOS 的安装步骤有区别吗?

Go 的安装步骤在各个 Linux 发行版上几乎是一样的,因为我们采用的是官方预编译包解压安装的方式,不依赖系统的包管理器。唯一的小区别在于缺少 wget 时的安装命令不同(CentOS 用 yum,Ubuntu 用 apt)。

Q5:go env -w 设置的代理在哪里保存的?

通过 go env -w 设置的环境变量会保存在 $HOME/.config/go/env 文件中,这是一个持久化配置,重启终端后依然有效。你可以通过 go env 命令查看所有当前生效的配置。


八、总结

本文介绍了在 Linux 系统上安装和配置 Go 语言开发环境的完整流程,主要包括以下几个步骤:

  1. 下载安装包:从官方或国内镜像站获取对应平台的 Go 二进制压缩包
  2. 解压安装:将压缩包解压到 /usr/local 目录,无需编译
  3. 配置环境变量:设置 GOROOTGOPATHPATH,让系统识别 go 命令
  4. 验证安装:通过 go versiongo env 确认安装成功
  5. 配置代理:国内用户建议配置 Go Module 代理来加速依赖下载
  6. 运行测试:编写并运行第一个 Go 程序,验证开发环境完整可用

整个过程并不复杂,跟着步骤操作十分钟左右就能完成。Go 语言本身的安装设计也非常友好,解压即用,没有繁琐的编译和配置过程。环境搭建好之后,你就可以开始探索 Go 语言的各种特性,构建高性能的后端服务了。


如果大家在 Linux 上安装 Go 的过程中遇到了其他问题,或者有更好的配置技巧,欢迎在评论区一起交流讨论~~~

版权声明

未经授权,禁止转载本文章。
如需转载请保留原文链接并注明出处。即视为默认获得授权。
未保留原文链接未注明出处或删除链接将视为侵权,必追究法律责任!

本文原文链接: https://fiveyoboy.com/articles/linux-install-go-dev-environment/

备用原文链接: https://blog.fiveyoboy.com/articles/linux-install-go-dev-environment/