Go语言笔记服务 - 环境配置 | 青训营笔记

144 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记。昨天刚听了Go语言实战项目的直播课,今天便尝试照着视频即手册里的步骤跑项目代码。高高兴兴的拉取了源码,结果好家伙,不跑不知道,一跑满地都是坑。一趟坑踩过来人都踩麻了,以至于最后仅仅是成功运行了示例项目也让我充满成就感。。。这里记录了踩的坑尝试运行项目过程中的一些关键点,愿之后不在重蹈。

1. DockerDesktop

示例项目用到了几个重要的依赖:MySQL数据库、ETCL做服务注册与发现、Jaeger做分布式追踪。项目目录里直接提供了docker-compose文件,以便我们通过docker快速的获取和搭建以上三个服务。但问题是我这 Windows 系统上面也没有 Docker 呀,于是按照手册上的建议首先下载了 Docker Desktop。

image.png

光速下载完,但是下完以后发现这个东西还是要依赖linux系统才能跑的,它需要 WSL!

2. WSL

WSL就是windows平台的linux子系统。用起来像是主机上开了一台linux的虚拟机,但是它共享了windows的文件系统,并且占用资源比起直接开一台虚拟机明显要少得多。 除了上述的Docker Desktop外手册中也提到项目构建的工具kitex也需要在linux环境下使用,因此我们不得不配置WSL啦。。。

我的系统默认是有wsl,但为支持docker desktop 还需要更新为wsl 2,使用指令:wsl --set-default-version 2

使用wsl -l -v查看已安装的子系统状态,版本已变为2

C:\Users\Tian>wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-20.04           Running         2
  docker-desktop-data    Stopped         2
  docker-desktop         Stopped         2

之后因为还要在ubuntu子系统下跑项目,需要先给它装个Go,这个已经装了好几次了都装麻了,需要注意的主要也就是改下环境变量,ubuntu下可以直接在/etc/profile中添加如下代码:

# 加入GO环境变量
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH

之后还要注意改下GOPROXY,以免等会儿装kitex报错,还有把GO111MODULE改成on,可以直接在linux下使用如下命令:

 > go env -w GO111MODULE=on 
 > go env -w GOPROXY=https://goproxy.cn,direct

也可以直接添到环境变量里或者修改env文件,都一样。

之后按照官网指示安装kitex:

 > go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
 > go install github.com/cloudwego/thriftgo@latest

3. 启动项目

首先在linux子系统控制台中切到项目目录下,使用 docker-compose up 指令启动三个docker容器,然后按照手册里面给定的步骤,一步一步build并运行三个服务就可以了。

ps:示例项目中给出了shell脚本用于build和运行,十分的方便快捷,但这里有个坑,就是我通过vscode打开的.sh文件发现其为 CRLF 换行,在ubuntu子系统里运行时会出错。需要手动转换成 LF 行尾才能正常运行。

之后可以使用手册里提到的 postman 工具来发送http请求以测试我们的项目是否运行正常。之后也可以访问jaeger看看demonote、demouser俩服务的跟踪信息哈。