【兔年创意投稿】兔兔的奇妙旅程(七)欲善其事,先利其器&&纯Linux终端下搭建Go项目环境
我正在参加「兔了个兔」创意投稿大赛,详情请看:「兔了个兔」创意投稿大赛
作者注:之前提到的lab4已经做好了,但是这几天出了点小意外,我没办法访问课程官网,所以没能结合要求分析过程。就暂时先鸽一鸽。现在假设几只兔子已经完成了os的lab,又决定一起搞个系统工程。
书接上回。
几只兔子决定要做一个项目,并且由于项目中会用到一些只支持Linux环境的框架,所以全员都用Linux环境。
突突和达达通过putty以ssh的方式连接到了一个Linux服务器,其只有小黑框没有图形界面。
- 为什么不用xshell呢?
因为这是付费的。
- 为什么不破解呢?
因为其实用习惯之后会发现鼠标右键比鼠标右键再选择粘贴方便,而其他功能基本用不上。对于追求简单快速的人来说,免费的putty已经够用了。
虽然它们发现,用本地Windows系统下的Intellj系列产品或vscode都可以远程连接服务器,但是操作起来有点卡。于是它们觉得配环境、下包之类的东西可以直接在终端操作一波,等到大量编码、代码调试之类的问题再用云IDE。
安装Go
下载安装包
可以有两种方式。 第一是直接去官网下载,第二是使用国内的镜像。
-
官网下载: go.dev
-
国内镜像: 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生成了以下文件
参考文献
下期看点
下一期将会带大家深入看看hertz的代码,研究一下它的生态、使用场景等等,也将看看其他框架,比如RPC框架kitex;同时将会补充更新一篇关于Git使用的文章。
转载自:https://juejin.cn/post/7188889401584255032