|
|
发表于 2022-12-2 15:42:29
|
显示全部楼层
CloudBeaver是一个Web服务器,它提供了一个丰富的Web界面。它由两部分组成:
- 服务器后端:它是用Java编写的,并重用DBeaver的“平台”库
- 前端部分:它是用TypeScript和JavaScript编写的
CloudBeaver支持其他数据库的操作方式有两种:
- 方式一:git clone 源码,修改相关plugin.xml文件后进行构建

源码构建方式
- 方式二:docker pull 最新版cloudbeaver镜像,执行镜像后进入容器,修改与扩展数据库相关的jar包

docker修改容器方式
需要说明的是:
- 方式二整个过程相当于修改了方式一构建好的服务
- 当存在已经修改好的jar包时,可以不用每次都修改当前服务的plugin.xml文件,而是直接将修改好的jar包替换上去并添加驱动即可,但是要保证修改好的jar包名称要与当前服务原jar包的名称一致
方式一:源码构建
此方式要求先安装相应的依赖,这些依赖有着硬性的版本要求,为了保证正常构建,必须下载相应的版本,构建过程中根据镜像源的不同也会对构建结果产生影响 步骤一:安装环境依赖
依赖版本要求(请一定按照该版本要求):
- Java 17
- Apache Maven (3.8.6+)
- Node.js (14.x)
- Yarn
- NPM + Lerna
安装依赖:
- 添加 Node.js(版本 14.x 最低版本 14.17)和 Yarn 最新版本存储库:
注意:最后一行命令是添加Node.js(14.x) 版本依赖库,由于使用的镜像是源镜像,会导致下载变慢,这里推荐不执行最后一行,而是下载相应版本包(亲测14.20可行),进行手动安装,然后修改node.js镜像源 curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
注意:这里的maven、nodejs、npm建议下载版本包手动安装并配置镜像源,一是避免版本错误,二是避免下载安装过慢,安装完毕后不要不忘记配置环境变量,执行 source /etc/profile 来刷新环境变量,安装完后请检查一下版本是否都达到要求了 sudo apt update
sudo apt install openjdk-17-jdk
sudo apt install maven
sudo apt install yarn
sudo apt install nodejs
sudo apt install npm
sudo npm install -g lerna
maven镜像源(亲测配置此镜像源构建是最顺利的)
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>nju_mirror</id>
<mirrorOf>central</mirrorOf>
<url>https://repo.nju.edu.cn/repository/maven-public/</url>
</mirror>
<!-- 中央仓库1 -->
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>
<!-- 中央仓库2 -->
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>npm镜像源
#设置淘宝镜像源
npm config set registry https://registry.npm.taobao.org
#查看使用的镜像源
npm config get registry
#安装淘宝镜像源
npm install -g cnpm --registry=https://registry.npm.taobao.org步骤二:构建和部署
注意:第一次构建会比较耗时,因为会将dbeaver源码下载下来 git clone https://github.com/dbeaver/cloudbeaver.git
cd cloudbeaver/deploy
./build.sh最终构建好的可以在 deploy/cloudbeaver 中找到,而dbeaver源码也可以在cloudbeaver源码同级目录找到
Cloudbeaver底层依赖Dbeaver,用过Dbeaver的朋友都知道,如果想要Dbeaver支持一种新的数据库(驱动),可以编写一个插件,这插件在这种数据库的JDBC Driver外封装了一层,针对这种数据库增加特殊的操作界面,但如果新的数据库只要求支持通用的JDBC操作,则可以使用已有的org.jkiss.dbeaver.ext.generic插件,不需要专门编写插件代码。这里扩展数据库驱动就是用这种方法,并没有专门为扩展数据库写一个Dbeaver插件。
扩展数据库步骤:
- 首先进入dbeaver源码目录,修改plugins/org.jkiss.dbeaver.ext.generic/plugin.xml,增加驱动描述,如下(通过查找drivers字符串可以找到添加位置):
<driver
id=&#34;dm&#34;
label=&#34;DM&#34;
icon=&#34;icons/dm_icon.png&#34;
iconBig=&#34;icons/dm_icon.png&#34;
class=&#34;dm.jdbc.driver.DmDriver&#34;
sampleURL=&#34;jdbc:dm://{host}[:{port}]/[{daStabase}]&#34;
defaultPort=&#34;5432&#34;
webURL=&#34;https://www.dameng.com/&#34;
description=&#34;DM JDBC driver&#34;>
<file type=&#34;jar&#34; path=&#34;drivers/dm&#34; bundle=&#34;drivers.dm&#34;/>
</driver>
- id=&#34;dm&#34; 是达梦数据库驱动的ID,后面cloudbeaver的配置中,要用这个字符串识别。
- label=&#34;DM&#34; 显示在界面数据库驱动的名称。
- icon 和 iconBig 是自定义驱动的图标文件,路径是相对于plugins/org.jkiss.dbeaver.ext.generic/,例如 icon=&#34;icons/dm_icon.png&#34; 表示图标文件在plugins/org.jkiss.dbeaver.ext.generic/icons/dm_icon.png。这两个图标文件可以是同一个,这里需要将图标文件放入相应。
- class=&#34;dm.jdbc.driver.DmDriver&#34; 是java源文件导入(import)jdbc驱动时的类名,DM JDBC驱动的jar文件(DmJdbcDriver18.jar)里提供的类就是dm.jdbc.driver.DmDriver。
- sampleURL=&#34;jdbc:dm://{host}[:{port}]/[{database}]&#34; 是DM的JDBC连接字符串。
- defaultPort=&#34;5432&#34; 默认连接DM的端口号,可以随便写,因为创建连接时还可以在页面修改。
- webURL=&#34;https://www.dameng.com/&#34; 可以随便写。
- description=&#34;DM JDBC driver.&#34; 可以随便写,只用来在界面显示。
- 表示 DM JDBC Driver的jar包,在cloudbeaver编译结果(deploy/cloudbeaver)目录下的drivers/dm/中。
- 进入cloudbeaver源码目录,修改server/bundles/io.cloudbeaver.resources.drivers.base/plugin.xml,增加下面内容:
+ <resource name=&#34;drivers/dm&#34;/>
</extension>
<!-- Bundles -->
+ <bundle id=&#34;drivers.dm&#34; label=&#34;DM drivers&#34;/>
</extension>
<!-- Enabled drivers -->
+ <driver id=&#34;generic:dm&#34;/>
</extension>其中resource对应上一步plugins/org.jkiss.dbeaver.ext.generic/plugin.xml中的path,bundle对应其中的bundle,driver id对应其中的id
2. 如果没有下载好的数据库驱动,需要maven仓库进行下载,则执行此步,否则跳过(这里以opengauss数据库为例):
2.1 修改cloudbeaver源码目录下/server/drivers/pom.xml,增加下面内容:
<module>sqlite</module>
<module>sqlserver</module>
<module>trino</module>
+ <module>opengauss</module>
</modules>
<build>2.2 创建目录 server/drivers/opengauss,再在其中创建pom.xml,内容如下图,这样构建cloudbeaver时,maven会到中央仓库下载opengauss-jdbc-3.0.0.jar,它就是OpenGauss的JDBC驱动。
<project xmlns=&#34;http://maven.apache.org/POM/4.0.0&#34; xmlns:xsi=&#34;http://www.w3.org/2001/XMLSchema-instance&#34;
xsi:schemaLocation=&#34;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&#34;>
<modelVersion>4.0.0</modelVersion>
<artifactId>drivers.opengauss</artifactId>
<version>1.0.0</version>
<parent>
<groupId>io.cloudbeaver</groupId>
<artifactId>drivers</artifactId>
<version>1.0.0</version>
<relativePath>../</relativePath>
</parent>
<properties>
<deps.output.dir>opengauss</deps.output.dir>
</properties>
<dependencies>
<dependency>
<groupId>org.opengauss</groupId>
<artifactId>opengauss-jdbc</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
</project>3. 重新编译cloudbeaver:
cd cloudbeaver/deploy
./build.sh如果执行了第三步的情况下,编译好的cloudbeaver/drivers/目录下会多出一个opengauss目录,里面有opengauss-jdbc-3.0.0.jar。
如果没有执行第三步,即已下载好相应的数据库驱动(如达梦数据库驱动),则还需要执行以下步骤:
- 在编译好的cloudbeaver/drivers/目录下新建dm文件夹(与第一步驱动path对应)
- 将DM JDBC驱动的jar文件(DmJdbcDriver18.jar)放置dm文件夹下
4. 启动服务
cd cloudbeaver
./run-server.sh默认情况下,服务器侦听端口8978(可以在 conf/cloudbeaver.conf 中更改它)。因此,只需导航到http://localhost:8978。
方式二:修改docker容器
CloudBeaver 映像位于 DockerHub:https://hub.docker.com/r/dbeaver/cloudbeaver 上。
- dbeaver/cloudbeaver:latest- 最新版本。
- dbeaver/cloudbeaver:dev- 最新的开发人员版本。
步骤一:安装镜像
要安装最新版本的 CloudBeaver,请使用以下脚本:
sudo docker pull dbeaver/cloudbeaver:latest步骤二:运行镜像
sudo docker run --name cloudbeaver -d --rm -ti -p 8978:8978 -v /var/cloudbeaver/workspace:/opt/cloudbeaver/workspace dbeaver/cloudbeaver:latest参数说明:
| 参数 | 说明 | | --name cloudbeaver | 容器名称 | | --rm | 在停止时移除容器 | | -ti | 启用终端模式(允许停止容器CTRL+C) | | -p 8080:8978 | 将 CloudBeaver 公共端口 (8978) 映射到主机端口(例如 8080) | | -v local_path:/opt/cloudbeaver/workspace | 将本地文件夹“/var/cloudbeaver/workspace”挂载到服务器工作区。容器重启后需要保留 CloudBeaver 数据。 | | dbeaver/cloudbeaver:latest | 容器标识 | 步骤三:修改容器文件
获取容器中/opt/cloudbeaver/server/plugins/目录下两个与扩展数据库相关的jar包:
- org.jkiss.dbeaver.ext.generic_[version].jar
- io.cloudbeaver.resources.drivers.base_[version].jar
docker cp container_id:<docker容器内的路径> <本地保存文件的路径>得到jar包后,需要注意的是,jar包名称不能修改,我们只改其中的配置文件
- 将两个jar包后缀改为.zip,后解压
对于org.jkiss.dbeaver.ext.generic_[version].zip解压后可以得到 icons文件夹 与 plugin.xml
对于io.cloudbeaver.resources.drivers.base_[version].zip解压后可以得到plugin.xml
- 编辑org.jkiss.dbeaver.ext.generic_[version].zip解压得到的plugin.xml,并将 dm_icon.png 放入 icons 目录下
添加驱动描述:
<driver
id=&#34;dm&#34;
label=&#34;DM&#34;
icon=&#34;icons/dm_icon.png&#34;
iconBig=&#34;icons/dm_icon.png&#34;
class=&#34;dm.jdbc.driver.DmDriver&#34;
sampleURL=&#34;jdbc:dm://{host}[:{port}]/[{daStabase}]&#34;
defaultPort=&#34;5432&#34;
webURL=&#34;https://www.dameng.com/&#34;
description=&#34;DM JDBC driver&#34;>
<file type=&#34;jar&#34; path=&#34;drivers/dm&#34; bundle=&#34;drivers.dm&#34;/>
</driver>
- id=&#34;dm&#34; 是达梦数据库驱动的ID,后面cloudbeaver的配置中,要用这个字符串识别。
- label=&#34;DM&#34; 显示在界面数据库驱动的名称。
- icon 和 iconBig 是自定义驱动的图标文件,路径是相对于plugins/org.jkiss.dbeaver.ext.generic/,例如 icon=&#34;icons/dm_icon.png&#34; 表示图标文件在plugins/org.jkiss.dbeaver.ext.generic/icons/dm_icon.png。这两个图标文件可以是同一个,这里需要将图标文件放入相应。
- class=&#34;dm.jdbc.driver.DmDriver&#34; 是java源文件导入(import)jdbc驱动时的类名,DM JDBC驱动的jar文件(DmJdbcDriver18.jar)里提供的类就是dm.jdbc.driver.DmDriver。
- sampleURL=&#34;jdbc:dm://{host}[:{port}]/[{database}]&#34; 是DM的JDBC连接字符串。
- defaultPort=&#34;5432&#34; 默认连接DM的端口号,可以随便写,因为创建连接时还可以在页面修改。
- webURL=&#34;https://www.dameng.com/&#34; 可以随便写。
- description=&#34;DM JDBC driver.&#34; 可以随便写,只用来在界面显示。
- 表示 DM JDBC Driver的jar包,在cloudbeaver编译结果(deploy/cloudbeaver)目录下的drivers/dm/中。
- 编辑io.cloudbeaver.resources.drivers.base_[version].zip解压得到的plugin.xml
在相应位置添加以下三行,与上一步配置对应:
<resource name=&#34;drivers/dm&#34;/>
<bundle id=&#34;drivers.dm&#34; label=&#34;DM drivers&#34;/>
<driver id=&#34;generic:dm&#34;/>
- 修改完成后将两个目录重新压缩为jar包,注意压缩包名称要与下载时一致,最关键的版本号别忘了
2. 将修改好的jar包上传至容器原位置,即 /opt/cloudbeaver/server/plugins 目录下,覆盖原来的两个jar包
3. 添加数据库驱动(以达梦数据库为例):
docker exec -it ContainerID /bin/bash
- 在cloudbeaver/drivers/目录下新建dm文件夹(与第一步驱动path对应)
- 将本地DM JDBC驱动的jar文件(DmJdbcDriver18.jar)放置容器dm文件夹下
docker cp 本地文件的路径 container_id:<docker容器内的路径>步骤四:重启容器
docker restart ContainerID再次访问cloudbeaver界面,添加驱动可以看到达梦数据库驱动已经扩展完毕 |
|