beego 的安装是典型的 Go 安装包的形式:
go get github.com/astaxie/beego
常见问题:
git 没有安装,请自行安装不同平台的 git,如何安装请自行搜索。
git https 无法获取,请配置本地的 git,关闭 https 验证:
git config --global http.sslVerify false
无法上网怎么安装 beego,目前没有好的办法,接下来我们会整理一个全包下载,每次发布正式版本都会提供这个全包下载,包含依赖包。
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
您可以通过如下的方式安装 bee 工具:
go get github.com/beego/bee
提示:安装bee包后,需要将$GOPATH/bin路径添加到环境变量path中, 否则会提示找不到bee命令,$GOPATH代表的就是你的GOPATH路径,如果你不知道GOPATH路径在哪里,执行下go env命令,会列出所有go相关的环境变量,从里面找到GOPATH路径。
# go env | grep GOPATH
GOPATH="/root/go"
vim /etc/profile
末尾添加
export PATH=$PATH:/root/go/bin
export GOPATH=/root/go
source /etc/profile
echo $GOPATH
/root/go
执行bee命令
# bee
2022/04/12 16:01:40 INFO ▶ 0001 Getting bee latest version...
2022/04/12 16:01:41 WARN ▶ 0002 Update available 1.12.0 ==> 2.0.2
2022/04/12 16:01:41 WARN ▶ 0003 Run `bee update` to update
2022/04/12 16:01:41 INFO ▶ 0004 Your bee are up to date
Bee is a Fast and Flexible tool for managing your Beego Web Application.
USAGE
bee command [arguments]
AVAILABLE COMMANDS
version Prints the current Bee version
migrate Runs database migrations
api Creates a Beego API application
bale Transforms non-Go files to Go source files
fix Fixes your application by making it compatible with newer versions of Beego
pro Source code generator
dlv Start a debugging session using Delve
dockerize Generates a Dockerfile for your Beego application
generate Source code generator
hprose Creates an RPC application based on Hprose and Beego frameworks
new Creates a Beego application
pack Compresses a Beego application into a single file
rs Run customized scripts
run Run the application by starting a local development server
server serving static content over HTTP on port
update Update Bee
Use bee help [command] for more information about a command.
ADDITIONAL HELP TOPICS
Use bee help [topic] for more information about that topic.
new 命令是新建一个 Web 项目,我们在命令行下执行 bee new <项目名> 就可以创建一个新的项目。但是注意该命令必须在 $GOPATH/src 下执行。最后会在 $GOPATH/src 相应目录下生成如下目录结构的项目:
mkdir /root/go/src/
bee new myproject
myproject/
├── conf - 配置文件存放目录
│ └── app.conf - beego应用配置文件,里面包含一些默认的配置包括启动端口、运行模式等等
├── controllers - 控制器目录
│ └── default.go
├── main.go - 入口文件
├── models - model目录,存放我们的业务逻辑和数据库相关的操作
├── routers - 路由配置目录,主要存放我们各个业务模块的路由设置
│ └── router.go
├── static - 静态资源目录,默认静态资源访问url为 "http://域名/static/资源路径"
│ ├── css
│ ├── img
│ └── js
├── tests - 单元测试脚本目录
│ └── default_test.go
└── views - 视图模板目录
└── index.tpl
上面的 new 命令是用来新建 Web 项目,不过很多用户使用 beego 来开发 API 应用。所以这个 api 命令就是用来创建 API 应用的,执行命令之后如下所示:
bee new apiproject
从上面的目录我们可以看到和 Web 项目相比,少了 static 和 views 目录,多了一个 test 模块,用来做单元测试的。
同时,该命令还支持一些自定义参数自动连接数据库创建相关 model 和 controller: bee api [appname] [-tables=""] [-driver=mysql] [-conn="root:
我们在开发 Go 项目的时候最大的问题是经常需要自己手动去编译再运行,bee run 命令是监控 beego 的项目,通过 fsnotify监控文件系统。但是注意该命令必须在 $GOPATH/src/appname 下执行。 这样我们在开发过程中就可以实时的看到项目修改之后的效果:
cd /root/go/src/myproject
#设置环境为国内代理
go env -w GOPROXY=https://goproxy.cn
#使用以下命令来整理依赖
go mod tidy
这个命令会:
删除不需要的依赖包
下载新的依赖包
更新go.sum
#初始化mod 模块
go mod init
#运行项目
bee run
#提示:bee运行项目,支持热编译,就是如果你修改了go文件,bee会自动重新编译,你只要刷新页面就可以看到最新的效果,不需要手动编译。
#可以直接运行main.go文件, 例如: go run main.go,这种方式每次修改文件,需要手动编译。
通过浏览器访问: http://localhost:8080 , 可以看到如下效果:
pack 目录用来发布应用的时候打包,会把项目打包成 zip 包,这样我们部署的时候直接把打包之后的项目上传,解压就可以部署了:
bee pack
这个命令目前仅限内部使用,具体实现方案未完善,主要用来压缩所有的静态文件变成一个变量申明文件,全部编译到二进制文件里面,用户发布的时候携带静态文件,包括 js、css、img 和 views。最后在启动运行时进行非覆盖式的自解压。
这个命令是动态获取 bee、beego 和 Go 的版本,这样一旦用户出现错误,可以通过该命令来查看当前的版本
bee version
这个命令是用来自动化的生成代码的,包含了从数据库一键生成 model,还包含了 scaffold 的,通过这个命令,让大家开发代码不再慢
bee generate scaffold [scaffoldname] [-fields=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
The generate scaffold command will do a number of things for you.
-fields: a list of table fields. Format: field:type, ...
-driver: [mysql | postgres | sqlite], the default is mysql
-conn: the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test
example: bee generate scaffold post -fields="title:string,body:text"
bee generate model [modelname] [-fields=""]
generate RESTful model based on fields
-fields: a list of table fields. Format: field:type, ...
bee generate controller [controllerfile]
generate RESTful controllers
bee generate view [viewpath]
generate CRUD view in viewpath
bee generate migration [migrationfile] [-fields=""]
generate migration file for making database schema update
-fields: a list of table fields. Format: field:type, ...
bee generate docs
generate swagger doc file
bee generate test [routerfile]
generate testcase
bee generate appcode [-tables=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"] [-level=3]
generate appcode based on an existing database
-tables: a list of table names separated by ',', default is empty, indicating all tables
-driver: [mysql | postgres | sqlite], the default is mysql
-conn: the connection string used by the driver.
default for mysql: root:@tcp(127.0.0.1:3306)/test
default for postgres: postgres://postgres:[email protected]:5432/postgres
-level: [1 | 2 | 3], 1 = models; 2 = models,controllers; 3 = models,controllers,router
这个命令是应用的数据库迁移命令,主要是用来每次应用升级,降级的SQL管理。
bee migrate [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
run all outstanding migrations
-driver: [mysql | postgresql | sqlite], the default is mysql
-conn: the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test
bee migrate rollback [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
rollback the last migration operation
-driver: [mysql | postgresql | sqlite], the default is mysql
-conn: the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test
bee migrate reset [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
rollback all migrations
-driver: [mysql | postgresql | sqlite], the default is mysql
-conn: the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test
bee migrate refresh [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
rollback all migrations and run them all again
-driver: [mysql | postgresql | sqlite], the default is mysql
-conn: the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test
这个命令可以通过生成Dockerfile文件来实现docker化你的应用。
例子:
生成一个以1.6.4版本Go环境为基础镜像的Dockerfile,并暴露9000端口:
$ bee dockerize -image="library/golang:1.6.4" -expose=9000
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.6.2
2016/12/26 22:34:54 INFO ▶ 0001 Generating Dockerfile...
2016/12/26 22:34:54 SUCCESS ▶ 0002 Dockerfile generated.
更多帮助信息可执行bee help dockerize.
bee 工具的源码目录下有一个 bee.json 文件,这个文件是针对 bee 工具的一些行为进行配置。该功能还未完全开发完成,不过其中的一些选项已经可以使用:
参考文档:bee工具的使用
参考文档:beego教程