Linux下Go-Zero微服务框架安装流程

① Linux下Go-Zero微服务框架安装流程

1.配置 Gomodule 和 Goproxy

$ go env -w GO111MODULE="on"
$ go env -w GOPROXY=https://goproxy.cn

2.1Goctl安装

//下载并安装
GOPROXY=https://goproxy.cn/,direct go install github.com/zeromicro/go-zero/tools/goctl@latest

//环境变量检测
go get下载编译后的二进制文件位于$GOPATH/bin目录下,要确保$GOPATH/bin已经添加到环境变量。

$ sudo vim /etc/paths

在最后一行添加如下内容
$GOPATH/bin

//验证安装成功
$ goctl -v

2.2Goctl IDEA安装

//找到 goland 插件 Goctl 并安装

3.Protoc安装

$ wget https://github.com/protocolbuffers/protobuf/releases/download/v3.20.0/protobuf-all-3.20.0.zip

$ unzip protoc-all-3.20.0.zip

$ cd protobuf-all-3.20.0

$ ./configure

$ make

$ make install

$ protoc --version

PS:异常情况

protoc --version => no such file or directory
在命令行执行:sudo ldconfig

4.再装protoc-gen-go(protoc-gen-go是protoc编译插件的Go版本)

$ go get github.com/golang/protobuf
$ cd github.com/golang/protobuf/protoc-gen-go
$ go build .

5.将protoc-gen-go文件放入gopath/bin/目录下

6.编写hello.proto测试插件安装是否成功

syntax = "proto3";

option go_package="./;protofile";
package protofile;

message Hello {

  string name = 1;
  int32 age = 2;
  string addr = 3;

}
$ protoc --go_out=./ hello.proto                  //针对rpc生成go文件
$ protoc --go_out=plugins=grpc:. hello.proto      //针对grpc生成go文件

7.Goctl详细使用

COMMANDS:
   bug         反映 goctl 出现了什么bug
   upgrade     升级 goctl 
   env         查看 goctl 环境信息
   migrate     migrate from tal-tech to zeromicro
   api         生成 api 文件						//常用
   docker      生成 docker 文件
   kube        生成 k8s yaml 文件
   rpc         生成 rpc 代码			  			//常用
   model       根据数据库的表生成模型代码			    //常用
   template    自定义模板

② Linux下Go-Zero微服务框架启动流程

1.初始化项目

$ go mod init zero-demo

2.1创建api文件

$ mkdir user-api
$ cd user-api
$ mkdir api
$ touch user.api
syntax = "v1"						//api语法版本

info(
    author: "user-api"
    date:   "2022-03-26"
    desc:   "api语法示例及语法说明"
)

type UserInfoRequest {
    UserId int64 `json:"userId"`
}

type UserInfoResponse {
    UserId   int64  `json:"userId"`
    Nickname string `json:"nickname"`
}

service user-api{
    @doc "获取用户信息"
    @handler userInfo
    post /user/info (UserInfoRequest) returns (UserInfoResponse)
}

2.2生成api文件

$ cd zero-demo/user-api/api
$ goctl api go -api *.api -dir ../ --style=goZero
//生成命令说明
dir    代码输出目录
--api   指定api源文件
--style 指定生成代码文件的文件名称风格,详情见文件名称命名style说明
$ cd zero-demo
$ tree 
.
├── go.mod
└── user-api
    ├── api
    │   └── user.api
    ├── etc
    │   └── user-api.yaml
    ├── internal
    │   ├── config
    │   │   └── config.go
    │   ├── handler
    │   │   ├── routes.go
    │   │   └── userInfoHandler.go
    │   ├── logic
    │   │   └── userInfoLogic.go
    │   ├── svc
    │   │   └── serviceContext.go
    │   └── types
    │       └── types.go
    └── user.go

2.3下载相关依赖文件

$ go mod tidy

3.1生成 Dockerfile 文件

$ cd zero-demo/user-api
$ goctl docker --go user.go
会生成Dockerfile文件

zero-demo/user-api/Dockerfile

3.2生成 K8s 文件

$ cd go-zero/zero-demo/user-api
$ goctl kube deploy -name user-api -namespace go-zero-looklook -image user-api:v1.0 -o user-api.yml -port 1001 -nodePort 31001
会生成配置文件

zero-demo/user-api/user-api.yml

4.1创建proto文件

$ mkdir user-rpc
$ cd user-rpc
$ mkdir pbfile
$ touch user.proto

4.2生成rpc/grpc文件

$ cd zero-demo/user-rpc/pbfile
$ goctl rpc protoc *.proto --go_out=../ --go-grpc_out=../  --zrpc_out=../ --style=goZero
$ cd zero-demo
$ tree 
.
├── go.mod
├── go.sum
├── user-api
	...
└── user-rpc
    ├── etc
    │   └── user.yaml
    ├── internal
    │   ├── config
    │   │   └── config.go
    │   ├── logic
    │   │   └── getUserInfoLogic.go
    │   ├── server
    │   │   └── usercenterServer.go
    │   └── svc
    │       └── serviceContext.go
    ├── pb
    │   ├── user_grpc.pb.go
    │   ├── user.pb.go
    │   └── user.proto
    ├── usercenter
    │   └── usercenter.go
    └── user.go

4.3再次下载相关依赖文件

$ go mod tidy

5.1创建model文件

$ mkdir model
$ cd model
$ touch user.sql
CREATE DATABASE ZeroDemo;
USE ZeroDemo;
CREATE TABLE `user`
(
    `id` int NOT NULL AUTO_INCREMENT COMMENT 'id',
    `username` varchar(255) NOT NULL UNIQUE COMMENT 'username',
    `password` varchar(255) NOT NULL COMMENT 'password',
    PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

5.2生成model文件

$ cd zero-demp/model
$ goctl model mysql ddl -c -src user.sql -dir .		//会生成操作数据库的 CRDU 的代码
$ tree
.
├── go.mod
├── go.sum
├── model
│   ├── usermodel_gen.go
│   ├── usermodel.go
│   ├── user.sql
│   └── vars.go
├── user-api
	...
└── user-rpc
	...

5.3再次下载相关依赖文件

$ go mod tidy
全部评论

相关推荐

2024-12-27 10:21
已编辑
海南师范大学 媒介策划
到我怀里来:身高体重住址这些就别写了,留几个关键的就行,工作经历突出重点写详细点
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务