背景
老板拍脑袋决定,让我更改一下grafana的功能项。经过试错之后发现更改并没有想象中的那么简单,于是要进行简单的二次开发
环境部署
由于不想在自己的Mac想安装杂乱的开发环境,决定在docker内搞定开发环境。由于我愚钝,未能搞定Goland连接docker 参考链接,退而求其次,使用 docker -w 挂载本地代码到docker中
- git clone 自己想要的分支。在此使用的是v6.3.4
git clone --branch v6.3.4 https://github.com/grafana/grafana.git
若是github克隆太慢,可以使用gitee网站
git clone --branch v6.3.4 https://gitee.com/mirrors/grafana.git
- 运行docker。在此使用的是ubuntu:20.04
docker run -it -p 3000:3000 --name grafana6_test -v /path/go_code/grafana:/root/go/src/github.com/grafana/grafana -w /root/go/src/github.com/grafana/grafana ubuntu:20.04 /bin/bash
进入docker容器之后,需要安装一系列的开发环境
安装go,vim,wget
apt install golang
apt install vim
apt install wget
配置GOPATH环境变量,并使配置生效
vim ~/.profile
# 最后增加一行
export GOPATH='/root/go'
source ~/.profile
安装nvm,并使用nvm安装nodejs。参考GitHub
nvm是nodejs的版本管理工具,类似于python的pyenv
若是wget不能下载,可以在浏览器中打开链接,复制代码,在docker中保存为 install.sh,然后使用 bash install.sh 安装
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
然后在~/.profile里增加
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
安装相对应的nodejs版本。6.3.4对应版本为v10,在此安装v10.23.1。会自动安装npm工具
nvm install v10.23.1
使用npm安装yarn
npm install --global yarn
编译和运行
进入工作目录
cd /root/go/src/github.com/grafana/grafana
- 前端环境
安装相关依赖
npm install -g node-gyp
yarn install --pure-lockfile
若是yarn install --pure-lockfile特别慢,可以在 ~/.npmrc添加以下内容
sass_binary_site = [https://npm.taobao.org/mirrors/node-sass/](https://npm.taobao.org/mirrors/node-sass/) phantomjs_cdnurl = [https://npm.taobao.org/mirrors/phantomjs/](https://npm.taobao.org/mirrors/phantomjs/) registry = [http://registry.npm.taobao.org](http://registry.npm.taobao.org/)
执行编译
yarn start
编译完成后,在public文件夹中多了个build文件夹
编译完成后并不会跳转到输入命令状态,大概会显示
[Webpack] + 2995 hidden modules
[Webpack] No type errors found
[Webpack] Version: typescript 3.4.1
[Webpack] Time: 54060ms
- 后端环境
go run build.go setup
go run build.go build
可能会报错
/root/go/pkg/mod/golang.org/x/xerrors@v0.0.0-20190410155217-1f06c39b4373/adaptor_go1_13.go:16:14: undefined: errors.Frame /root/go/pkg/mod/golang.org/x/xerrors@v0.0.0-20190410155217-1f06c39b4373/format_go1_13.go:12:18: undefined: errors.Formatter
需要升级一下xerrors,命令为
go get -u golang.org/x/xerrors
启动服务
bin/linux-amd64/grafana-server start