Skip to content

chjiyun/gin_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gin App

Go Web FrameWork Test

Gin中文文档

环境配置

  1. 安装golang,官网地址
  2. 设置环境变量 GOPATH,可自定义文件夹
  3. 设置module代理:
go env -w GOPROXY=https://goproxy.cn,direct
  1. 初始化air
# install for macOS, Linux
# binary will be $(go env GOPATH)/bin/air
curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
# install for windows
go install github.com/cosmtrek/air@latest
# You can initialize the .air.toml
air init 
  1. 安装依赖
go mod download
  1. 依赖管理
# 升级依赖
go get -u -d github.com/gin-gonic/gin
# 补全清理依赖
go mod tidy
  1. 单元测试

-v 参数作用是无论用例是否通过都显示结果

# 运行所有测试文件
go test -v
# 运行该目录下含有Basename的测试函数
go test -run Basename ./app/util -v
# 运行该目录下全字匹配Basename的测试函数
go test -run ^Basename$ ./app/util -v
  1. 数据源dsn配置加密

本地开发环境配置文件(config.dev.yml)不想暴露真实连接,可用对称加密(des)保护敏感数据,key 可用哈希算法工具生成一个长度大于16位的文本,根目录下新建hashkey.txt并粘贴密钥,然后git忽略跟踪这个文件

# 加密dsn连接信息,“src=”后填原文,密钥取自 hashkey.txt
go test -run ^TestEncrypt$ .\app\util -v -args "src=*"
# 解密dsn文本,“src=”后填加密文本
go test -run ^TestDecrypt$ .\app\util -v -args "src=*"
# 使用下面的测试函数生成一个sha1散列信息
go test -run ^TestSha1$ .\app\util -v -args "src=*"

启动

# 原始方式
go run ./main.go
# air启动,支持热重载
air

跨平台打包(交叉编译)

Windows下编译 Linux平台的64位可执行程序:

  1. cmd
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build -o .\build\ .\main.go
  1. powershell 注意:此方式打包后记得关闭当前shell窗口
$env:CGO_ENABLED=0
$env:GOOS="linux"
$env:GOARCH="amd64"
go build -o .\build\ .\main.go
# Mac下编译Linux, Windows平台的64位可执行程序:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

# xshell将文件上传到服务器
# -v, --verbose:输出传输过程中的提示信息
# -y, --overwrite:存在同名文件则替换
rz -y -v

手动部署

后台启动

# 如果已经运行先杀进程 
lsof -i:8000
kill pid
nohup ./main 1>info_2021_03_27.log 2>error.log & echo $! > pid.txt
  • 其中数字1代表标准输出,2代表错误信息输出,还有未使用的标准输入即数字0.
  • 1>/dev/null 2>&1 &的意思是标准信息输出到空设备即不做任何处理,也不做任何显示,/dev/null也可以替换为文本文件名(如 out.log),此时标准信息就会输出到指定文件.
  • 2>&1表示错误信息输出到标准输出,即输出同1>后面的位置,当然也可以直接指定新文件名(如 err.log).
  • 最后的& 表示程序后台运行
  • echo 输出pid到文件

一键部署(半自动)

如果不想自定义启动可用如下命令实现一键部署:

# 运行前前拉取最新git代码
chmod 755 ./build.sh
# 会自动创建log、file目录,自动build
./build.sh

若出现报错,显示pip命令不存在,则要安装相应的包,看这里ubuntu下安装yq

其他

# 如果git diff显示filemode已改变,则用下面的命令忽视文件mode监控
git config --add core.filemode false
# 不跟踪某文件的更改,比如 config 文件
git update-index --skip-worktree file1

查看编译时注入的版本信息

./gin_app -v
./gin_app version

linux安装go

请前往golang 官网下载页面,复制文件链接地址

# 下载压缩包
wget https://golang.google.cn/dl/go1.16.3.linux-amd64.tar.gz
# 解压
tar -C /usr/local -xzf go1.16.3.linux-amd64.tar.gz
# ~/.profile 文件末尾添加环境变量
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
# 生效
source ~/.profile

注意

若windows环境下使用logger后控制台出现这样的错误提示 "failed to rotate: failed to create new symlink ***.log ...", 请按照如下步骤解决:

  1. win + r 打开运行弹窗,输入secpol.msc
  2. 弹出一个本地安全策略窗口,依次找到安全设置>本地策略>用户权限分配,双击后右侧出现很多行策略,找到创建符号链接双击
  3. 新弹出的窗口中点击添加用户或组,把当前登录计算机的用户加进去,输用户名搜索即可,然后一路确定,还可能需要重启电脑

Gin 是什么?

Gin 是一个用 Go (Golang) 编写的 HTTP web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速度提高了近 40 倍。如果你需要极好的性能,使用 Gin 吧。

特性

Gin v1 稳定的特性:

  • 零分配路由。

  • 仍然是最快的 http 路由器和框架。

  • 完整的单元测试支持。

  • 实战考验。

  • API 冻结,新版本的发布不会破坏你的代码。

使用 Gin web 框架的知名项目:

  • gorush:Go 编写的通知推送服务器。

  • fnproject:原生容器,云 serverless 平台。

  • photoprism:由 Go 和 Google TensorFlow 提供支持的个人照片管理工具。

  • krakend:拥有中间件的超高性能 API 网关。

  • picfit:Go 编写的图像尺寸调整服务器。

  • gotify:使用实时 web socket 做消息收发的简单服务器。

  • cds:企业级持续交付和 DevOps 自动化开源平台。

About

gin框架二次搭建,整合gorm, redis, zap, cron,可作为模板开发web项目

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published