likes
comments
collection
share

【兔年创意投稿】兔兔的奇妙旅程(七)欲善其事,先利其器&&纯Linux终端下搭建Go项目环境

作者站长头像
站长
· 阅读数 23

我正在参加「兔了个兔」创意投稿大赛,详情请看:「兔了个兔」创意投稿大赛

作者注:之前提到的lab4已经做好了,但是这几天出了点小意外,我没办法访问课程官网,所以没能结合要求分析过程。就暂时先鸽一鸽。现在假设几只兔子已经完成了os的lab,又决定一起搞个系统工程。

书接上回。

几只兔子决定要做一个项目,并且由于项目中会用到一些只支持Linux环境的框架,所以全员都用Linux环境。

突突和达达通过putty以ssh的方式连接到了一个Linux服务器,其只有小黑框没有图形界面。

  • 为什么不用xshell呢?

因为这是付费的。

  • 为什么不破解呢?

因为其实用习惯之后会发现鼠标右键比鼠标右键再选择粘贴方便,而其他功能基本用不上。对于追求简单快速的人来说,免费的putty已经够用了。

虽然它们发现,用本地Windows系统下的Intellj系列产品或vscode都可以远程连接服务器,但是操作起来有点卡。于是它们觉得配环境、下包之类的东西可以直接在终端操作一波,等到大量编码、代码调试之类的问题再用云IDE。

安装Go

下载安装包

可以有两种方式。 第一是直接去官网下载,第二是使用国内的镜像。

  1. 官网下载: go.dev

  2. 国内镜像: studygolang.com/dl

这里选择第二种方式。

直接在Linux终端输入:

wget 对应的下载源

比如,突突输入的是: wget https://studygolang.com/dl/golang/go1.19.5.linux-amd64.tar.gz

尽量选高版本的,因为:

  • 很多新兴的框架、中间件等等优先支持高版本
  • 高版本可以兼容低版本
  • Go可以交叉编译,不用担心开发过程中和队友的Go版本不一致

解压缩

tar -zxvf go1.19.5.linux-amd64.tar.gz -C /usr/local/lib

tar是Linux中的压缩和解压缩命令,当参数是z x f 这几项时表示解压缩。

参数具体含义有:

  • f: 表示对象是文件
  • z: 表示文件对象是gzip
  • x: 表示提取

而v则是要显示解压缩的细节,view

-C 后跟文件解压后存放到的地址

配置环境变量

关于Linux环境变量的配置,改这两个文件都可以(不同的Linux版本对应的文件名和后缀可能有一点出入)

  • ~/.vimrc
  • /etc/profile

这两者的区别可用两句话概括:

  • /etc/profile中设定的变量(全局)可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是”父子”关系。
  • /etc/profile,/etc/bashrc 是系统全局环境变量设定;而 ~/.profile,~/.bashrc是用户家目录下的私有环境变量设定

向两个文件之一的末尾写入如下代码:

export GOROOT=/usr/local/lib/go
export GOPATH=$HOME/gowork
export GOBIN=$GOPATH/bin
export PATH=$GOPATH:$GOBIN:$GOROOT/bin:$PATH

代码解释:

  • 前面把文件解压到了/usr/local/lib/目录下
  • $HOME 就是当前用户的home路径,比如如果是以root身份登录的,那这个$HOME路径就是/root。 兔子们提前在这个路径下新建了一个gowork文件夹。

使用source 文件名使前述写入代码的文件生效。

注:如果发现环境变量无法生效

检查方式:输入go env看是否有关于Go版本及内容的相关信息。

可以留意一下如下几点:

  • 重新登录一下终端。

如果改的是profile,由于它是登录式shell的配置文件,是在登录时才执行里面的操作,有可能系统还没刷新。 或者也可以往~/.bashrc尾部追加一句source /etc/profile。因为bashrc是在系统启动后就会自动运行。

  • 检查一下上述的export代码,是否只是简单复制粘贴,而没有结合自己系统文件路径的实际情况。

配置代理

由于Go是Google公司发明的语言,Google已退出国内市场,其相关产品如果直接访问会比较困难。而国内的七牛云公司提供了代理。 详情见:goproxy.cn/

按照其上的步骤在终端输入以下命令:

export GO111MODULE=on 
export GOPROXY=https://goproxy.cn

至此步骤就全部完成了。

框架搭建与示例代码运行——以字节研发的http框架hertz为例

安装及检查

  • 在终端中输入如下命令: go install github.com/cloudwego/hertz/cmd/hz@latest
  • 检查是否已安装成功 hz -v

框架的本质及代码位置

框架的本质就是生成一套流程化、规范化的代码(脚手架),使用者只需要修改这些代码中的一小部分,从而省去了大量配置的麻烦。 所以,代码生成在哪里也很关键。

  • 如果当前文件夹是在$GOPATH/src目录下,可以直接hz new 生成代码文件
  • 否则,要指定module文件:
hz new -mod hertz/demo

这里的demo是指,之后会生成一个名为demo的可执行文件

依赖拉取

go mod tidy

tidy的意思是整洁,这里也是指会整理相关依赖,去掉一些不需要的,补充需要的,并进行拉取。

编译

go build

运行

./demo

可以看到终端输出了一些正在监听端口之类的信息。新建一个终端窗口,输入: curl 127.0.0.1:8888/ping

如果能返回{"message":"pong"} 说明接口调通。

图景

在上述的示例执行中,hertz生成了以下文件 【兔年创意投稿】兔兔的奇妙旅程(七)欲善其事,先利其器&&纯Linux终端下搭建Go项目环境

参考文献

下期看点

下一期将会带大家深入看看hertz的代码,研究一下它的生态、使用场景等等,也将看看其他框架,比如RPC框架kitex;同时将会补充更新一篇关于Git使用的文章。

转载自:https://juejin.cn/post/7188889401584255032
评论
请登录