Gorm/Kitex/Hertz

59 阅读2分钟

安装

  • 在Vmare Workstation虚拟机上的Ubuntu22.04操作系统上操作

准备golang开发环境

sudo apt install golang

如果安装成功,在终端输入go version,则会显示版本号,比如go1.18.1 linux/amd64

Go Module设置

为了避免意外,我们通过阿里云Go Module代理仓库服务进行框架的导入

简介

go module公共代理仓库,代理并缓存go模块。你可以利用该代理来避免DNS污染导致的模块拉取缓慢或失败的问题,加速你的构建

操作

1.使用go1.11以上版本并开启go module机制

export GO111MODULE=on

2.导出GOPROXY环境变量

export GOPROXY=https://mirrors.aliyun.com/goproxy/

Gorm安装

# 生成 mod 文件(切换到模块根目录)
go mod init modulename
# 清理无效依赖,增加缺失依赖
go mod tidy  
# 在go.mod配置好后,才能安装gorm
go get -u gorm.io/gorm 
go get -u gorm.io/driver/sqlite 

在当前文件夹下生成go文件,添加以下代码并运行来测试框架是否安装成功

package main

import (
	"gorm.io/driver/sqlite"
	"gorm.io/gorm"
)

type Product struct {
	gorm.Model
	Code  string
	Price uint
}

func main() {
	db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
	if err != nil {
		panic("failed to connect database")
	}

	// Migrate the schema
	err = db.AutoMigrate(&Product{})
	if err != nil {
		return
	}

	// Create
	db.Create(&Product{Code: "D42", Price: 100})

	// Read
	var product Product
	db.First(&product, 1)                 // find product with integer primary key
	db.First(&product, "code = ?", "D42") // find product with code D42

	// Update - update product's price to 200
	db.Model(&product).Update("Price", 200)
	// Update - update multiple fields
	db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // non-zero fields
	db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})

	// Delete - delete product
	db.Delete(&product, 1)
}

安装Kitex

go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
  1. 通过export GOPATH=~/go确保 GOPATH 环境变量已经被正确地定义,并且export PATH=$GOPATH/bin:$PATH$GOPATH/bin添加到 PATH 环境变量之中,请勿将 GOPATH 设置为当前用户没有读写权限的目录
  2. 安装 kitex:go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
  3. 安装 thriftgo:go install github.com/cloudwego/thriftgo@latest
  4. 安装成功后,可以通过kitex --versionthriftgo --version查阅到具体的版本号

测试运行

将代码放置于 $GOPATH/src 下,需在 $GOPATH/src 下创建额外目录,进入该目录后再获取代码:

mkdir -p $(go env GOPATH)/src/github.com/cloudwego
cd $(go env GOPATH)/src/github.com/cloudwego
# 克隆该示例仓库到本地 
git clone https://github.com/cloudwego/kitex-examples.git
  1. 进入示例仓库的 hello 目录

    cd kitex-examples/hello

  2. 运行 server

    go run .

    效果大致如下: 屏幕截图_20230213_113737.png

  3. 运行 client

    另起一个终端后,go run ./client

注意:每次重新启动后均需要配置好环境,因此 通过export GOPATH=~/go确保 GOPATH 环境变量已经被正确地定义,并且export PATH=$GOPATH/bin:$PATH$GOPATH/bin添加到 PATH 环境变量之中

安装hertz

安装命令行工具 hz

首先,我们需要安装使用本示例所需要的命令行工具 hz:

  1. 确保 GOPATH 环境变量已经被正确地定义(例如 export GOPATH=~/go)并且将$GOPATH/bin添加到 PATH 环境变量之中(例如 export PATH=$GOPATH/bin:$PATH);请勿将 GOPATH 设置为当前用户没有读写权限的目录
  2. 安装 hz:go install github.com/cloudwego/hertz/cmd/hz@latest

更多 hz 使用方法可参考: hz

确定代码放置位置

  1. 若将代码放置于$GOPATH/src下,需在$GOPATH/src下创建额外目录,进入该目录后再获取代码:
  $ mkdir -p $(go env GOPATH)/src/github.com/cloudwego
  $ cd $(go env GOPATH)/src/github.com/cloudwego
  1. 若将代码放置于 GOPATH 之外,可直接获取

生成/编写示例代码

  1. 在当前目录下创建 hertz_demo 文件夹,进入该目录中
  2. 生成代码 hz new
  3. 整理 & 拉取依赖
$ go mod tidy
  1. 生成 go.mod 文件
$ go mod init hertz_demo
  1. 整理 & 拉取依赖
$ go mod tidy

运行示例代码

完成以上操作后,我们可以直接编译并启动 Server

$ go build -o hertz_demo && ./hertz_demo

效果大致如下

image.png