GitHub上拉取并运行一个go项目–go-admin(基于Gin + Vue + Element UI的前后端分离权限管理系统脚手架)
前言
在GitHub上拉取项目本来是一件很平常的事情,那么我今天为什么要说一下这个项目及其拉取过程呢?
-
这个项目是基于Gin + Vue + Element UI的前后端分离权限管理系统脚手架(包含了:多租户的支持,基础用户管理功能,jwt鉴权,代码生成器,RBAC资源控制,表单构建,定时任务等)3分钟构建自己的中后台项目;文档:https://doc.go-admin.dev Demo: https://www.go-admin.dev Antd beta版本:https://preview.go-admin.dev。
-
在这个项目中操作规则可能有一点点的不同,后面有讲。
-
这个项目适合要上项目的同学入门练手,脚手架级。
那接下来我们就好好的讲讲这个项目,中间的数据库真的搞醉我了,也是我太不小心了,这个时候就让我们知道拉取项目之后一定要读README.md之后在运行项目,一定要记住了,我这次就是按照之前的经验拉去,一直不能使用数据库,后面在学长的指导下才正常运行。
一.拉去项目
后端GitHub地址:https://github.com/go-admin-team/go-admin
# clone
$ git clone https://github.com/go-admin-team/go-admin.git
前端GitHub地址:https://github.com/go-admin-team/go-admin-ui
# clone
$ git clone https://github.com/go-admin-team/go-admin-ui.git
- 相信能看到这里的童鞋都是会git的吧。不会的可以不用往下看了😂。之前就说了,这个项目是一个前后端分离的项目,所以我们分别拉取前后端的代码,然后修改配置运行。
二.运行项目
2.1运行项目后端部分
TIP
请注意 Go version >= 1.15,并且 GO111MODULE=on (Go MOdule 模式);
- 使用编辑器打开我们拉取的项目,此处我是用的是GoLand编辑器。
2.1.1编译代码
编译
$ cd ./go-admin //如果在编辑器中打开终端默认是在这个项目中的,不用在操作这一步
$ go mod tidy
$ go build
windows 下 CGO 的问题
请注意 您如果是 windows 环境您或许可能会遇到
CGO
的问题E:\go-admin>go build # github.com/mattn/go-sqlite3 cgo: exec /missing-cc: exec: "/missing-cc": file does not exist
or
D:\Code\go-admin>go build # github.com/mattn/go-sqlite3 cgo: exec gcc: exec: "gcc": executable file not found in %PATH%
如何解决 cgo: exec /missing-cc: exec: “/missing-cc”: file does not exist
2.1.2配置数据源:
-
最关键的一步,配置文件中的配置(这一步大家好好看)
- 我出现的问题:
-
之前我也拉取过比较多的项目,所以自己感觉有了一点点的经验,所以我就比较快的过了一下指导文档,我把后端的项目拉取完了之后就将里面的数据库导入到自己本地的数据库中,但是这上面是二进制的,可是我可以使用navicat打开,我当时以为是navicat的问题,于是用了好多的办法将这个数据库导入到自己本地的数据库中,然后就是将自己的数据库配置到后端代码中,当我前后端都跑起来之后我发现既定的账号密码无法登陆,这个就比较难受了,找了学长和同学一起解决,一开始想到的是,作者修改的账号和密码,但是我们看数据库账号正确,密码加密了,然后我们就找到安全认证的代码,输入我们既定好的密码得到加密后的密码放到我们的数据库中,但是项目还是无法读取数据库,后续试了N种方法,最后终于得出是数据库错误的导入导致了项目的运行失败,知道了问题,我们就开始尝试使用各种方式来解决数据库错误导入的问题,但是这个数据库文件是二进制的文件,可以使用navicat或则DataGrip等图形化工具查看就是不能正常的导入。真的运行不出来就问了一个非常厉害的学长,你三下五除二就运行出来了,他说按照文档一步一步来就行了。可我还在疑问数据库怎么办,但是又不好意思问学长了,就自己看官方文档一步一步的在操作一遍,没有做其他的多余操作,果然—成功了!!!哈哈哈,原来不用手动导入数据库,在项目的配置文件中填写好自己本地的数据库名字密码和想要给本项目数据库起的名字后,运行项目后就直接自动导入了数据库。我去,果然是运行项目之前一定要看人家的README.md。这一次是一个血的教训呀!
-
首先找到配置文件,
config/settings.yml
, 同时也可创建开发环境配置,只需将默认配置文件config/settings.yml
复制到config/settings.dev.yml
即可,或者直接使用默认配置文件,直接修改config/settings.yml
即可。 -
注意⚠️:这个时候一定要记住自己是创建了一个上面所说的配置文件config/settings.de v.yml,还是自己在原有的config/settings.yml修改,这个在后面的运行上会运用到。
#注意:在配置文件中修改数据库的配置文件直接将本地数据的用户名,密码和想要本项目命名的数据库名填写好即可,初始化的时候就自动的导入数据库了。 database: # 数据库类型 mysql,sqlite3, postgres driver: mysql # 数据库连接字符串 mysql 缺省信息 charset=utf8&parseTime=True&loc=Local&timeout=1000ms source: user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
TIP
Mysql 版本 8.0+ ,在此版本下最优; 其他低版本的会出现
Error 1071: Specified key was too long; max key length is 1000 bytes
等这类问题;请根据本地数据库版本进行对应修改。
2.1.3初始化
项目中支持使用命令方式初始化基本数据结构和基础数据。 可以方便的使用 migrate
命令进行项目数据库结构和数据初始化。如下操作:
# 初始化
# macOS or linux 下使用 我这里的配置文件直接在settings.yml中修改的,部分童鞋的可能新创建了一个settings.dev.yml
$ ./go-admin migrate -c=config/settings.yml
# ⚠️注意:windows 下使用 我这里的配置文件直接在settings.yml中修改的,部分童鞋的可能新创建了一个settings.dev.yml
$ go-admin.exe migrate -c=config/settings.yml
TIP
可以通过 -c 参数实现本地多环境配置文件隔离 例如 开发环境命名为:settings.dev.yml
注意:1.2.0 之前版本需要将migrate
替换成 init
命令进行项目数据库结构和数据初始化。
2.1.4启动
初始化完成之后,我们就可以启动项目了
上面讲完之后,我们就可以使用自己的启动语句来启动项目了,
# 初始化
# macOS or linux 下使用 我这里的配置文件直接在settings.yml中修改的,部分童鞋的可能新创建了一个settings.dev.yml
$ ./go-admin migrate -c=config/settings.yml
# ⚠️注意:windows 下使用 我这里的配置文件直接在settings.yml中修改的,部分童鞋的可能新创建了一个settings.dev.yml
$ go-admin.exe migrate -c=config/settings.yml
如果看到一下数据内容,请检查一下数据库配置;
#看到这个记得看自己的配置文件
2020-07-31 16:09:41.989 [INFO] Logger init success!
2020-07-31 16:09:41.990 [INFO] mysql-drive.go:20: user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
2020-07-31 16:09:44.350 [FATA] mysql-drive.go:23: mysql connect error : dial tcp 127.0.0.1:3306: connect: connection refused
输出内容为下图,恭喜你!你已经成功了!
2.2运行项目前端部分
2.2.1下载前端视图源码
这里我们直接git clone
下来。
# clone
$ git clone https://github.com/go-admin-team/go-admin-ui.git
输出内容:
$ git clone https://github.com/go-admin-team/go-admin-ui.git
Cloning into 'go-admin-ui'...
remote: Enumerating objects: 584, done.
remote: Counting objects: 100% (584/584), done.
remote: Compressing objects: 100% (436/436), done.
remote: Total 584 (delta 127), reused 524 (delta 88), pack-reused 0
Receiving objects: 100% (584/584), 580.92 KiB | 16.00 KiB/s, done.
Resolving deltas: 100% (127/127), done.
恭喜!到目前为止说明 go-admin-ui 代码已经下载完成。
2.2.2安装 node & npm
如果本地已经安装过的可以跳过当前步骤;
根据本地系统进行版本选择 nodejs 不同版本的下载安装;
版本信息查看
$ node -v
v14.16.0
$ npm -v
6.14.11
正常返回版本号说明安装成功了可以进行下一步;
2.2.3npm install
- 这里注意一下,有人说上面不是已经下载npm了吗?为什么还要在项目中安装npm,这里说一下,本步骤是为了安装项目的npm,npm是包管理器,本项目安装好之后就可以使用
npm
来运行项目了。
$ cd go-admin-ui/
$ npm install # npm install --registry=https://registry.npm.taobao.org # 国内请使用
# 或者使用
$ cnpm install
TIP
这里还原包是需要一些时间的请耐心等待一下…
前端view 启动
启动项目,使用npm run dev
命令就好了。
# 启动页面
$ npm run dev
输出内容:
TIP
此时项目已经启动了,但是有一点请注意:检查 api (后端服务)是否也启动了。否则页面会提示错误的哦。
三.项目运行成功
- 在完成前后端的运行之后,我们点击前端的这个链接
- 我们看到这个页面,页面的初始账号是
admin
密码是123456
,这个输入框已经设置好了,我们只需要将验证码输入即可。
- 登陆成功,然后就是愉快的耍了。
结语
通过这个项目我学到了,运行别人的项目一定一定要看看他写的READED.md。就算自己使用经验来运行项目,如果遇到了问题要立刻马上会开看文档,这次真的白白浪费一天的时间,哈哈哈哈哈😂,大家平时拉取项目的时候也注意一下。