使用WSL搭建go开发环境并使用kratos框架

1、开启wsl并安装linux

WSL允许在windows运行linux发行版本,首先在windows程序和功能中开启wsl功能,具体操作勾选“适用于linuxwindows子系统”并重启系统。

在微软应用商店安装linux子系统:

 

安装完ubuntu后打开系统,开启root用户:

sudo passwd root

然后按照提示输入两次新的密码,并确认

切换成管理员用户登陆:

su root

以默认账户登录wslubuntu系统:

C:\Users\Administrator(当前系统用户)\AppData\Local\Microsoft\WindowsApps\ubuntu.exe config --default-user root

重启wsl :关闭wslwsl --shutdown  10s后,在执行wsl命令

2、linux中安装go开发环境

wget https://dl.google.com/go/go1.21.3.linux-amd64.tar.gz

tar -C /usr/local -xzf go1.21.3.linux-amd64.tar.gz

查看go安装版本 go version

查看go的开发环境配置: go env  配置相关环境:

export GOPATH=/root/go

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

export GOBIN='/root/go/bin'

Export GOPROXY="https://goproxy.cn, direct"

刷新配置文件:

source ~/.bash_profile source /etc/profile

go proxy代理设置:(一次性设置)

go env -w GOPROXY="https://goproxy.cn, direct"

3、安装protoc(probobuf)解析grpc proto文件

下载地址https://github.com/protocolbuffers/protobuf/releases文件:protoc-22.0-linux-x86_64.zip

下载解压后文件拷贝,cp protoc-22.0/bin/protoc  /usr/bin/protoc

更改权限 chmod 755 /usr/bin/protoc  

查看版本 protoc --version  显示libprotoc 22.0

4、安装依赖注入插件wire  

go install github.com/google/wire/cmd/wire

wire文件安装在GOPATHbin下可执行文件wire.exe,执行命令:

$GOPATH/bin/wire  wire.go(所在文件目录)  生成wire_gen.go文件(不可更改,再次生成会覆盖)

5、开发工具配置

1)goland

设置GOPATHGOROOT,步骤如下:File=> Settings=>Go=>GOROOT设置为\\wsl$\Ubuntu\usr\local\go\go1.21.3GOPATH设置为\\wsl$\Ubuntu\root\go

设置Go Modules(便于下载引用包):

 

2)vs code

安装wsl插件:

 

6、kratos框架使用

参考官网:https://go-kratos.dev/docs/getting-started/usage 使用kratos -v 查看安装版本

注:若提示无kratos命令,则代表kratos命令没有加入path路径。  kratos命令存在于GOPATHbin目录下.例如:go env 查看GOPATH/root/go. 则执行/root/go/bin/kratos -v,若没有问题,则加入path: export PATH=$PATH:/root/go/bin  刷新配置文件:source /etc/profile

创建kratos项目文件后,利用make initmake all等命令更新引用文件。几点注意事项归纳如下:

1若包引用报红线,则在引用包警示灯点击选择sync同步到当前项目。

2goland google/api/annotations.proto 标红

首先,看看自己安装Protocol Buffers插件没, 没有的话需要先安装,其次,设置语言和框架下面将Protocol Buffers的文件路径取消自动设置,添加项目的third_party路径file=>settings=>Languages and Frameworks

3)swagger文件的使用(按照kratos官网生成openapi.yaml文件)

 

备注:  make api 命令生成yaml文件,若报错:protoc-gen-go: program not found or is not executable,则通过命令安装:

 

go get -u github.com/golang/protobuf/{proto,protoc-gen-go}或

 

go get -u google.golang.org/protobuf,在gopath中找到 protoc-gen-go进行拷贝,如:cp protoc-gen-go /usr/local/bin,或直接导入export PATH=$PATH:/root/go/bin  刷新配置文件:source /etc/profile。  

go get -u github.com/go-kratos/swagger-api

 然后在internal/server/http.go​的NewHTTPServer中进行初始化和注册,请尽量将这个路由注册放在最前面,以免匹配不到。(浏览器中访问服务的​/q/swagger-ui/​路径即可打开Swagger UI

import "github.com/go-kratos/swagger-api/openapiv2"

openAPIhandler := openapiv2.NewHandler()

srv.HandlePrefix("/q/", openAPIhandler)

4)kratos run 端口占用问题

结束当前运行命令ctral+C,再次启用可能出现端口占用问题.

Windows操作先找到占用端口(9000)的pid,查看pid使用情况,killpid

netstat -ano|findstr 9000

tasklist|findstr 14096

taskkill /f /t /im 14096

Linux操作:

netstat -apn |grep 9000

ps -ef|grep 81506

kill -9 81506

5)访问服务地址

 服务配置http地址为:0.0.0.0:8000grpc地址:0.0.0.0:9000,linux中访问服务curl http://localhost:9000 wsl中查看linux子系统ip地址,ip addr | grep eth0,查看地址inetip地址。则外部访问为:http://ip:8000http://172.18.216.241:8000

 

 

posted @   丝絮  阅读(439)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示