1 beego 的安装
beego 的安装是典型的 Go 安装包的形式:
启用模块支持(默认是开启的)
go env -w GO111MODULE=on
安装
go get github.com/astaxie/beego
这里可能提示go.mod不存在,可以通过go mod init 初始化一个
2 beego 升级
分为 go 方式升级和源码下载升级:
- Go 升级,通过该方式用户可以升级 beego 框架,强烈推荐该方式:
go get -u github.com/astaxie/beego
- 源码下载升级,用户访问 https://github.com/astaxie/beego ,下载源码,然后覆盖到 $GOPATH/src/github.com/astaxie/beego 目录,然后通过本地执行安装就可以升级了:
go install github.com/astaxie/beego
3 安装bee工具
go get github.com/beego/bee
如果bee.exe没有生成,则手动编译再复制到GOPATH/bin中,这里我是没有通过这种方式生成bee.exe的,我是采用的另一种方式,手动编译生成bee.exe,然后复制到GOPATH/bin
GOPATH如何查看?
G:\goproject>go env
set GO111MODULE=on
set GOBIN=%%GOPATH%%\bin
set GOPATH=C:\Users\leell\go
set GOPROXY=https://goproxy.cn,direct
set GOROOT=D:\Program Files\Go
上面GOBIN、GOPATH、GOROOT几个环境都能看出,这里记得把GOBIN添加到PATH中
注:GOROOT是go的安装目录,GOPATH是go的指定工作目录,GOBIN是工作目录生成的bin文件路径
手动生成bin.exe方式:
进入GOPATH/pkg\mod/github.com/beego/bee/v2@v2.1.0下,执行go build
cd %GOPATH%
cd pkg\mod\github.com\beego\bee\v2@v2.1.0
go build
然后将bee.exe复制到GOPATH/bin中。
查看bee
E:\project2\goworkspace>bee
Bee is a Fast and Flexible tool for managing your Beego Web Application.
dev - 用于辅助开发Beego和Bee的命令
update - 更新Bee工具至最新版本
version - 打印当前Bee版本
bale - 将非Go文件转换为Go源文件
fix - 通过使其与Beego的新版本兼容来修复您的应用程序
dockerize - 为您的Beego应用程序生成Dockerfile和docker-compose.yaml
migrate - 运行数据库迁移
new - 创建一个新的Beego应用程序
pack - 将Beego应用程序压缩为一个单独的文件
rs - 运行自定义脚本
server - 在端口上通过HTTP提供静态内容服务
run - 通过启动本地开发服务器运行应用程序
pro - 源代码生成器
api - 创建一个Beego API应用程序
generate - 源代码生成器
hprose - 基于Hprose和Beego框架创建一个RPC应用程序
dlv - 使用Delve启动调试会话
4 bee工具的使用
4.1 创建项目
创建项目更多介绍请移步:通过bee创建第一个beego项目-CSDN博客
web项目
bee new beego-web
api项目
bee api beego-api
4.2 项目运行
bee run [appname] [-gendoc] [-downdoc] [-e=runmode] [-gendoc=true]
- appname: 应用的名称,默认为当前目录的名称。如果省略,则使用当前目录的名称作为应用名称。
- -gendoc: 根据注释生成 API 文档,默认为 false。
- -downdoc: 下载 Swagger UI,默认为 false。
- -e=runmode: 设置应用运行的模式,可选值为 dev、prod 或 test。默认为 dev。
- -gendoc=true: 启用生成 API 文档,该参数的默认值为 true。
4.2 项目打包
pack 目录用来发布应用的时候打包,会把项目打包成 zip 包,这样我们部署的时候直接把打包之后的项目上传,解压就可以部署了:
bee pack
打包linux包
set GOOS=linux
通过bee创建第一个beego项目-CSDN博客 这篇文章中也有过介绍项目打包。
4.3 自动化生成代码
通过generate这个命令是用来自动化的生成代码的,包含了从数据库一键生成 model
bee generate scaffold [scaffoldname] [-fields=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
generate scaffold 命令会为你执行一系列操作。
-fields: 表字段列表。格式:field:type,多个字段之间用逗号分隔。
-driver: [mysql | postgres | sqlite],默认为 mysql。
-conn: 驱动使用的连接字符串,默认为 root:@tcp(127.0.0.1:3306)/test。
示例: bee generate scaffold post -fields="title:string,body:text"
bee generate model [modelname] [-fields=""]
根据字段生成 RESTful 模型。
-fields: 表字段列表。格式:field:type,多个字段之间用逗号分隔。
bee generate controller [controllerfile]
生成 RESTful 控制器。
bee generate view [viewpath]
在指定路径生成 CRUD 视图。
bee generate migration [migrationfile] [-fields=""]
生成用于更新数据库模式的迁移文件。
-fields: 表字段列表。格式:field:type,多个字段之间用逗号分隔。
bee generate docs
生成 Swagger 文档文件。
bee generate test [routerfile]
生成测试用例。
bee generate appcode [-tables=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"] [-level=3]
根据现有数据库生成应用代码。
-tables: 用逗号分隔的表名列表,默认为空,表示所有表。
-driver: [mysql | postgres | sqlite],默认为 mysql。
-conn: 驱动使用的连接字符串。
默认值(mysql): root:@tcp(127.0.0.1:3306)/test
默认值(postgres): postgres://postgres:postgres@127.0.0.1:5432/postgres
-level: [1 | 2 | 3],1 = models; 2 = models,controllers; 3 = models,controllers,router。
(1)通过 bee generate scaffold 构建代码
scaffold是一个综合性代码生成命令
PS C:\Users\leell\go\src\quickstart> bee generate scaffold user -fields="id:int,name:string" -conn="leellun:fansimao@tcp(127.0.0.1:3308)/test"
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v2.1.0
2024/01/18 19:47:12 INFO ▶ 0001 Do you want to create a 'user' model? [Yes|No]
yes
2024/01/18 19:47:14 INFO ▶ 0002 Using 'User' as model name
2024/01/18 19:47:14 INFO ▶ 0003 Using 'models' as package name
create C:\Users\leell\go\src\quickstart/models/user.go
2024/01/18 19:47:14 INFO ▶ 0004 Do you want to create a 'user' controller? [Yes|No]
yes
2024/01/18 19:47:18 INFO ▶ 0005 Using 'User' as controller name
2024/01/18 19:47:18 INFO ▶ 0006 Using 'controllers' as package name
2024/01/18 19:47:18 INFO ▶ 0007 Using matching model 'User'
create C:\Users\leell\go\src\quickstart/controllers/user.go
2024/01/18 19:47:18 INFO ▶ 0008 Do you want to create views for this 'user' resource? [Yes|No]
yes
2024/01/18 19:47:21 INFO ▶ 0009 Generating view...
create C:\Users\leell\go\src\quickstart/views/user/index.tpl
create C:\Users\leell\go\src\quickstart/views/user/show.tpl
create C:\Users\leell\go\src\quickstart/views/user/create.tpl
create C:\Users\leell\go\src\quickstart/views/user/edit.tpl
2024/01/18 19:47:21 INFO ▶ 0010 Do you want to create a 'user' migration and schema for this resource? [Yes|No]
yes
create C:\Users\leell\go\src\quickstart/database/migrations/20240118_194724_user.go
2024/01/18 19:47:24 INFO ▶ 0011 Do you want to migrate the database? [Yes|No]
通过上面提示就知道bee会一步一步的询问你需要生成什么?包括model、controller、views、migration。并且最后还会循问是否在数据库创建表结构,当然需要安装相关依赖包,需要的话根据提示自行安装。
(2)bee generate model生成模型
bee generate model user -fields="id:int,name:string"
(3)bee generate appcode生成controller、model、router
PS C:\Users\leell\go\src\quickstart> bee generate appcode -tables=user -driver=mysql -conn="leellun:fansimao666@tcp(127.0.0.1:3308)/test"
2024/01/18 20:02:34 INFO ▶ 0006 Creating model files...
create C:\Users\leell\go\src\quickstart/models/user.go
2024/01/18 20:02:34 INFO ▶ 0007 Creating controller files...
create C:\Users\leell\go\src\quickstart/controllers/user.go
2024/01/18 20:02:34 INFO ▶ 0008 Creating router files...
create C:\Users\leell\go\src\quickstart\routers\router.go
2024/01/18 20:02:34 SUCCESS ▶ 0009 Appcode successfully generated!
4.4 生成docker应用
PS C:\Users\leell\go\src\quickstart> bee dockerize -baseimage=golang:1.20.2 -expose=9000
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v2.1.0
2024/01/18 20:26:04 INFO ▶ 0001 Generating Dockerfile and docker-compose.yaml...
2024/01/18 20:26:04 SUCCESS ▶ 0002 Dockerfile generated.
2024/01/18 20:26:04 SUCCESS ▶ 0003 docker-compose.yaml generated.
将会生成两个文件 Dockerfile和docker-compose.yaml,有了Dockerfile想要生成Docker镜像,用docker build就行了,具体生成docker镜像和push镜像,在这就不详细说明了。
常见问题
- git https 无法获取,请配置本地的 git,关闭 https 验证:
git config --global http.sslVerify false