要在 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
|
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
|