Posted in

Ubuntu 20.04下安装Go语言:新手必看的7个安装步骤(附视频演示)

第一章:Ubuntu 20.04与Go语言环境概述

Ubuntu 20.04(代号 Focal Fossa)是 Canonical 公司于 2020 年发布的长期支持版本(LTS),因其稳定性、安全性和广泛的社区支持,被广泛应用于服务器和开发环境搭建。Go(又称 Golang)是由 Google 开发的静态类型、编译型语言,以其高效的并发模型和简洁的语法受到开发者青睐。

在 Ubuntu 20.04 上配置 Go 语言环境,通常包括安装 Go 运行环境、配置 GOPATH、以及设置工作目录结构。以下是安装 Go 的基本步骤:

# 下载 Go 二进制包
wget https://golang.org/dl/go1.20.5.linux-amd64.tar.gz

# 解压并安装到 /usr/local 目录
sudo tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz

# 将 Go 可执行文件路径添加到系统环境变量
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc

# 使环境变量生效
source ~/.bashrc

安装完成后,可以通过以下命令验证 Go 是否安装成功:

go version

输出应为类似以下内容:

go version go1.20.5 linux/amd64

Go 的工作目录结构通常包含 srcpkgbin 三个子目录,分别用于存放源代码、编译中间文件和生成的可执行文件。开发者可通过设置 GOPATH 环境变量来指定项目工作路径。

合理配置 Ubuntu 20.04 与 Go 的开发环境,为后续的项目构建、依赖管理和持续集成打下坚实基础。

第二章:安装前的准备工作

2.1 系统环境检查与依赖更新

在部署或升级系统前,进行系统环境的全面检查是确保后续流程顺利运行的前提。这包括操作系统版本、内核参数、网络配置以及磁盘空间等基础环境的核查。

环境检查清单

  • 操作系统类型与版本(如 CentOS 7.9、Ubuntu 20.04)
  • CPU 架构(x86_64 / aarch64)
  • 可用内存与磁盘空间
  • 系统时间同步状态(NTP 服务)

检查系统信息的示例命令

# 查看操作系统版本
cat /etc/os-release

# 查看内存使用情况
free -h

# 查看磁盘空间
df -h /

上述命令分别用于获取系统版本信息、内存使用状态和根目录的磁盘空间,便于判断是否满足软件运行的最低资源要求。

依赖更新策略

建议在系统检查完成后,及时更新系统依赖库和安全补丁。使用包管理工具如 yumapt 执行更新操作,确保系统处于最新稳定状态。

# Ubuntu 更新依赖示例
sudo apt update && sudo apt upgrade -y

此命令首先更新软件源列表,然后升级所有已安装的软件包至最新版本,保障系统安全性与兼容性。

2.2 确认系统架构与下载地址

在构建分布式系统前,首先需要明确系统整体架构。典型的微服务架构包括网关、注册中心、配置中心与多个业务服务模块。

系统架构示意图

graph TD
    A[Client] -> B(API Gateway)
    B -> C(Service A)
    B -> D(Service B)
    C -> E(Config Server)
    D -> E
    C -> F(Database)
    D -> G(Message Broker)

该架构图展示了服务间通信的基本流向,其中 API Gateway 作为统一入口,负责路由与鉴权。

下载地址配置

微服务部署时,需指定各模块的下载地址。以下为 Spring Boot 服务的典型配置:

spring:
  cloud:
    config:
      uri: http://config-server:8848
      fail-fast: true
  • uri:配置中心地址,供服务获取运行时配置
  • fail-fast:启用快速失败机制,防止启动时因配置获取失败导致阻塞

上述配置应通过 CI/CD 流程注入,以支持多环境部署。

2.3 下载Go语言二进制包

在开始使用Go语言之前,我们需要获取其官方提供的二进制包。Go官方为不同操作系统和架构提供了预编译的二进制发行包,用户可以直接从官网下载使用。

下载地址与版本选择

访问 Go官方下载页面,可以看到当前稳定版本的发布信息。选择与你的操作系统和硬件架构匹配的二进制包。例如:

操作系统 常见架构 下载示例文件名
Linux amd64 go1.21.3.linux-amd64.tar.gz
macOS arm64 go1.21.3.darwin-arm64.pkg
Windows amd64 go1.21.3.windows-amd64.zip

使用命令行下载

以Linux系统为例,我们可以使用wget命令直接下载:

wget https://go.dev/dl/go1.21.3.linux-amd64.tar.gz
  • wget 是一个常用的命令行下载工具;
  • URL指向的是Go 1.21.3版本的Linux 64位二进制包。

下载完成后,下一步是解压并配置环境变量,使Go命令在终端中可用。

2.4 验证文件完整性与权限设置

在系统部署和维护过程中,确保文件的完整性和权限设置的正确性是保障系统安全的重要环节。

文件完整性校验

常用的方法是使用哈希算法(如 sha256sum)生成文件指纹,用于比对文件是否被篡改或损坏。

sha256sum config.txt

逻辑说明:该命令会输出 config.txt 文件的 SHA-256 哈希值。运维人员可在文件传输前后分别执行此命令,确保两次输出一致,以验证文件完整性。

权限管理实践

Linux 系统中通过 chmodchown 设置文件访问权限和归属:

chmod 600 secret.key
chown root:root secret.key

参数说明

  • 600 表示仅文件所有者可读写;
  • root:root 表示将文件所有者和组都设为 root; 合理配置可防止未授权访问,提升系统安全性。

2.5 解压安装包并配置系统路径

在完成安装包的下载后,下一步是将其解压到合适的目录。通常推荐使用标准工具如 unziptar 进行操作,例如:

unzip software-package.zip -d /opt/software/

上述命令将 software-package.zip 解压至 /opt/software/ 路径下,便于后续统一管理。

配置系统路径

为使程序支持全局调用,需将其可执行文件路径添加至系统环境变量 PATH。编辑用户级配置文件:

export PATH=$PATH:/opt/software/bin

该语句将 /opt/software/bin 添加至当前会话的执行路径中,确保终端可识别新安装的命令。

第三章:Go环境变量配置详解

3.1 理解GOROOT、GOPATH与PATH的作用

Go语言的开发环境依赖于几个关键的环境变量,其中 GOROOTGOPATHPATH 是构建项目结构和工具链调用的基础。

GOROOT:Go的安装目录

GOROOT 指向你本地系统中 Go SDK 的安装路径,例如 /usr/local/go。该变量帮助系统定位编译器、标准库和运行时等核心组件。

GOPATH:工作区目录

GOPATH 是你的工作目录,用于存放 Go 项目源码(src)、编译后的包(pkg)以及可执行文件(bin)。Go 1.11 之后引入了模块(Go Modules),逐渐弱化了对 GOPATH 的依赖,但其在传统项目中仍具重要意义。

PATH:命令查找路径

$GOROOT/bin 添加到 PATH,可使 go 命令在终端任意位置运行。

环境变量配置示例

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
  • GOROOT 告知系统 Go 的安装位置;
  • GOPATH 定义开发者的工作空间;
  • PATH 使得 Go 工具链可在命令行中全局调用。

3.2 编辑bashrc文件配置全局变量

在Linux系统中,~/.bashrc 文件用于定义用户级别的环境变量和别名。通过编辑该文件,可以实现对全局变量的配置,使其在每次启动终端时自动生效。

配置方式

使用文本编辑器打开文件:

nano ~/.bashrc

在文件末尾添加如下内容以定义一个全局变量:

# 设置全局变量
export MY_VAR="/opt/myapp"
  • export 命令用于将变量导出为环境变量;
  • MY_VAR 是变量名;
  • "/opt/myapp" 是赋给该变量的值。

保存并关闭文件后,执行以下命令使配置立即生效:

source ~/.bashrc

验证变量是否生效

可通过以下命令验证变量是否正确加载:

echo $MY_VAR

若输出 /opt/myapp,则表示全局变量配置成功。

3.3 验证配置与常见错误排查

在完成系统配置后,验证配置文件的正确性是确保服务稳定运行的关键步骤。可以通过执行以下命令进行初步校验:

nginx -t

逻辑说明:该命令用于检测 Nginx 配置文件是否存在语法错误。输出信息会明确提示配置是否有效。

常见错误类型与表现

错误类型 表现形式 排查建议
端口冲突 服务启动失败,提示 bind failed 检查端口占用情况
路径错误 403 或 404 错误频繁出现 核对 root / alias 设置
权限不足 无法访问资源或启动失败 检查运行用户权限

配置加载流程

graph TD
    A[加载配置文件] --> B{语法正确?}
    B -->|是| C[应用配置]
    B -->|否| D[报错并退出]

第四章:验证与测试Go开发环境

4.1 编写第一个Go程序验证安装

在完成Go环境的安装之后,验证其是否配置正确最直接的方式是编写并运行一个简单的Go程序。

编写Hello World

创建一个名为 hello.go 的文件,并输入以下代码:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!") // 输出文本到控制台
}

逻辑分析:

  • package main 表示该文件属于主包,是可执行程序的入口;
  • import "fmt" 引入格式化输入输出包;
  • func main() 是程序执行的起始函数;
  • fmt.Println 用于向终端打印字符串。

编译与运行

在终端中进入文件所在目录,执行如下命令:

go run hello.go

如果输出:

Hello, World!

则表示Go环境已正确安装并配置。

4.2 使用go env命令查看环境状态

go env 是 Go 开发中一个非常实用的命令,用于查看当前 Go 的环境变量配置。它能帮助开发者快速了解 Go 工作环境的状态,特别是在多版本管理或跨平台开发时尤为重要。

执行 go env 命令后,会输出一系列键值对,例如:

GO111MODULE=""
GOARCH="amd64"
GOOS="linux"
GOPROXY=""
GOROOT="/usr/local/go"
GOCACHE="/home/user/.cache/go-build"
  • GOARCH 表示目标平台的处理器架构;
  • GOOS 表示目标操作系统;
  • GOROOT 是 Go 安装目录;
  • GOCACHE 是编译缓存目录;
  • GOPROXY 是模块代理地址。

通过这些信息,可以快速排查构建环境中的潜在问题,例如错误的 GOPROXY 设置可能导致模块下载失败。

4.3 配置VS Code等IDE支持Go开发

在进行Go语言开发时,选择合适的IDE可以显著提升开发效率。Visual Studio Code(VS Code)因其轻量级、可扩展性强,成为Go开发者常用的工具之一。

安装Go插件

在VS Code中,需安装官方推荐的 Go插件(由Go团队维护)。该插件提供代码补全、跳转定义、格式化、测试运行等功能。

配置开发环境

安装插件后,需确保本地已安装Go工具链,并配置好GOPATHGOROOT环境变量。VS Code插件会自动识别并提示安装必要的辅助工具,如 gopls(Go语言服务器)。

常用设置(settings.json)

{
  "go.formatTool": "goimports",
  "go.lintTool": "golangci-lint",
  "go.useLanguageServer": true
}

上述配置指定了代码格式化工具为 goimports,启用了 golangci-lint 作为代码检查工具,并启用语言服务器增强智能提示能力。

开发体验优化

结合终端集成、调试器配置和Git插件,VS Code可构建出一个完整的Go开发工作流。对于大型项目,建议配合Go Modules和远程开发插件提升协作与部署效率。

4.4 常见安装问题的解决方案汇总

在软件安装过程中,经常遇到依赖缺失、权限不足或路径冲突等问题。以下为常见问题及解决方案汇总:

依赖缺失

# 安装常用依赖库
sudo apt-get install -y libssl-dev zlib1g-dev

该命令安装开发所需的常见依赖库,避免因缺失 .so 文件导致安装失败。

权限问题

使用 sudo 提升权限执行安装命令,或修改目标目录权限:

sudo chown -R $USER /usr/local

该命令将 /usr/local 目录权限赋予当前用户,避免权限拒绝错误。

环境路径冲突

可通过查看环境变量确认路径设置:

echo $PATH

若路径未包含所需目录,可临时添加:

export PATH=/usr/local/bin:$PATH

确保系统能够正确识别可执行文件位置。

第五章:后续学习资源与进阶方向

技术学习是一个持续演进的过程,尤其在 IT 领域,知识更新速度极快。掌握基础后,如何选择合适的学习资源和进阶方向,将直接影响个人技术成长的速度和深度。以下推荐的学习路径和资源,结合了当前社区主流实践与企业真实需求,适合不同阶段的开发者按需选择。

开源社区与实战项目

参与开源项目是提升编码能力和理解工程实践的最佳方式之一。GitHub 上有许多高质量的开源项目,例如:

  • FreeCodeCamp:提供完整的学习路径与实战项目,涵盖前端、后端、数据库、DevOps 等多个方向;
  • The Odin Project:以 Web 开发为主线,适合从零开始构建全栈能力;
  • Awesome入门项目:一个 GitHub 精选列表,包含各类技术方向的入门项目,适合练手与简历加分。

建议选择一个中等规模、持续维护的项目参与,不仅能提升代码能力,还能锻炼协作与代码评审能力。

技术书籍与在线课程

系统化的学习离不开高质量的内容输入。以下是一些被广泛认可的技术资源:

类别 推荐资源 适用人群
架构设计 《Designing Data-Intensive Applications》 后端/架构师
算法与数据结构 《算法导论》、《剑指 Offer》 刷题/面试者
前端进阶 《You Don’t Know JS》系列 JavaScript 开发者
DevOps 《Site Reliability Engineering》 运维/云原生工程师

在线平台如 Coursera、Udacity、极客时间等也提供了大量结构化课程,适合碎片化时间学习。

技术认证与职业路径

获取行业认可的技术认证,是职业发展的有力跳板。以下是几个主流方向的认证路径:

  • 云计算方向:AWS Certified Solutions Architect、阿里云ACP、Google Cloud Professional
  • 开发方向:Oracle Java 认证、Microsoft .NET 认证、Google 的 Android 认证
  • 安全方向:CISSP、CEH、OSCP
  • 数据库方向:MySQL OCP、MongoDB 认证开发者

建议根据职业规划选择对应的认证路径,并结合实战项目进行准备。

社区交流与技术博客

技术成长离不开持续学习与交流。推荐关注以下社区与平台:

graph TD
    A[技术社区] --> B(GitHub)
    A --> C(Stack Overflow)
    A --> D(V2EX)
    A --> E(CSDN/掘金/知乎)
    A --> F(InfoQ/OSChina)

通过阅读技术博客、参与讨论、提交 Pull Request 等方式,不仅能提升技术视野,还能结识志同道合的开发者,为未来的职业发展积累资源。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注