目录

Linux Go 运行环境搭建

要在 Linux 上运行 Go 代码,需要安装 Go 编译器和设置 Go 环境变量。

Linux 服务器配置

鉴于目前大部分服务器使用 CentOS 系统,本文将介绍在 CentOS 上搭建 Go 环境。

  • root 用户登录 Linux 系统,并创建普通用户:
1
2
3
4
5
// 添加用户
$ useradd -m -s /bin/bash golang

// 修改密码
$ passwd golang
  • 将普通用户加入到 sudoers 中,以便普通用户就可以通过 sudo 命令来暂时获取 root 的权限:
1
2
3
4
5
6
7
8
9
$ # sed -i '/^root.*ALL=(ALL).*ALL/a\golang\tALL=(ALL) \tALL' /etc/sudoers
$ echo "golang ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/golang
$ vi sudo
$ golang ALL=(ALL) NOPASSWD:ALL

// 退出后以 golang 用户登录
$ exit
  • 配置 .bashrc 文件:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
$ mkdir -pv $HOME/workspace
$ vim ~/.bashrc
# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
  . /etc/bashrc
fi

# User specific environment
export LANG="en_US.UTF-8"
export PS1='[\u@dev \W]\$ '
export WORKSPACE="$HOME/workspace"
export PATH=$HOME/bin:$PATH

# Default entry folder
cd $WORKSPACE

依赖安装和配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 安装依赖
$ sudo yum -y install make autoconf automake cmake perl-CPAN libcurl-devel libtool gcc gcc-c++ glibc-headers zlib-devel git-lfs telnet lrzsz jq expat-devel openssl-devel

// 安装 git
$ cd /tmp
$ wget --no-check-certificate https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.38.1.tar.gz
$ tar -xvzf git-2.38.1.tar.gz
$ cd git-2.38.1/
$ ./configure
$ make
$ sudo make install
$ git --version
git version 2.36.1
$ tee -a $HOME/.bashrc <<'EOF'
# Configure for git
export PATH=/usr/local/libexec/git-core:$PATH
EOF

// 配置 git
$ git config --global user.name "username"
$ git config --global user.email "username@email.com"
$ git config --global credential.helper store
$ git config --global core.longpaths true
$ git config --global core.quotepath off
$ git lfs install --skip-repo

Go 编译环境安装和配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// 下载 Go 安装包
$ wget -P /tmp/ https://golang.google.cn/dl/go1.19.3.linux-amd64.tar.gz

// 解压安装
$ mkdir -pv $HOME/go
$ tar -xvzf /tmp/go1.19.3.linux-amd64.tar.gz -C $HOME/go
$ mv $HOME/go/go $HOME/go/go1.19.3

// 将以下环境变量追加到 $HOME/.bashrc 文件中
$ tee -a $HOME/.bashrc <<'EOF'
# Go envs
export GOVERSION=go1.19.3 # Go 版本设置
export GO_INSTALL_DIR=$HOME/go # Go 安装目录
export GOROOT=$GO_INSTALL_DIR/$GOVERSION # GOROOT 设置
export GOPATH=$WORKSPACE/golang # GOPATH 设置
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH # 将 Go 语言自带的和通过 go install 安装的二进制文件加入到 PATH 路径中
export GO111MODULE="on" # 开启 Go moudles 特性
export GOPROXY=https://goproxy.cn,direct # 安装 Go 模块时,代理服务器设置
export GOPRIVATE=
export GOSUMDB=off # 关闭校验 Go 依赖包的哈希值
EOF

// 测试 go 命令
$ go version
go version go1.19.3 linux/amd64

// 初始化工作区
$ mkdir -p $GOPATH && cd $GOPATH
$ go work init
$ go env GOWORK # 执行此命令,查看 go.work 工作区文件路径
/home/going/workspace/golang/go.work

// ProtoBuf 编译环境安装
$ cd /tmp/
$ git clone -b v3.21.9 --depth=1 https://github.com/protocolbuffers/protobuf
$ cd protobuf
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
$ protoc --version
libprotoc 3.21.9
$ go install github.com/golang/protobuf/protoc-gen-go@v1.5.2
  • 开发工具配置:
1
2
3
4
$ rm -f $HOME/.vim; mkdir -p ~/.vim/pack/plugins/start/
$ git clone --depth=1 https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go
$ vim
:GoInstallBinaries