记录编译Thingsboard遇到的一些问题
部署了一个thingsboard项目到阿里云服务器上,历时十一天,遇到了很多困难,国内关于Thingsboard的资料确实很少,所以想着写一篇博客记录一下,或许能够给以后编译遇到类似问题的人一些方向也好。
环境:阿里云ECS云服务器(2核8G 带宽1M)
操作系统:Centos7.9
源码:Thingsboard-3.4.2
首先最重要的是根据自己thingsboard package.json porm.xml文件中安装好对应版本的jdk,nodejs,yarn,maven,postgresql,安装好git。版本对应上是首要前提,不然可能出现很多莫名其妙的问题,切记不要给自己留坑。
编译过程中server-UI模块报错(yarn build失败)
这个模块是Thingsbaord很大的一个模块,编译时间最长,若是前面有什么问题,大部分是依赖相关的下载问题,网上大部分能找到解决方法。唯独这个yarn build,国内鲜有人提及,我在github讨论区看到有人有一样的报错,有人说是内存问题,有人设置了虚拟内存,结果他解决了,成功编译,但是我设置了之后还是无法成功编译,和github上另一个人一样,不过确实是内存问题,因为这个前端模块需要很大的资源,在我的实验下,与是否设置虚拟内存关系不大,需要将阿里云服务器升级至8G才可同时挂上梯子才可编译成功,4G无法编译成功,一般编译时间直接干到十分钟。若是升级到8G还不能成功,尝试置换掉ui-ngx模块,重新挂梯子(网速快的)进行编译,应该可以成功。
postgresql远程连接不上
在服务器上安装好postgresql后。使用navicat进行远程连接失败。显示连接失败,此时首先应查看:
1.阿里云安全组是否打开postgresql5432端口,若未打开,在阿里云服务器控制台打开。
2、linux内查看防火墙状态,5432端口是否打开,若关闭,打开。
3、同时配置postgresql的一些配置文件,此处网上相关文章很多,不再赘述。主要是listen_address和IPV4…,此处配置了则问题不大。
若上述都已查看并完成,则打开navicat,首先使用SSH即22端口进行服务器连接,再使用5432端口进行连接数据库,即可连接成功。
里云服务器控制台打开。
2、linux内查看防火墙状态,5432端口是否打开,若关闭,打开。
3、同时配置postgresql的一些配置文件,此处网上相关文章很多,不再赘述。主要是listen_address和IPV4…,此处配置了则问题不大。
若上述都已查看并完成,则打开navicat,首先使用SSH即22端口进行服务器连接,再使用5432端口进行连接数据库,即可连接成功。
postgresql locale相关问题
在windows10上安装postgresql时,一定要注意locale的设置,若你选择了default,则你的locale会根据你操作系统来进行设定,变成windows10的一个中文编码——Chinese (Simplified)_China.936,这个中文编码linux是不兼容的,linux上的中文编码只有zh_CN.utf-8,这个locale会影响postgresql索引相关,如果你选择了Chinese (Simplified)_China.936,在使用navicat迁移数据到linux服务器上的数据库时会失败。此时可以选择pgadmin4进行数据库迁移,可以解决locale不兼容的问题。
编译跳过测试
网上很多文章给出的编译跳过测试命令都一样,但是在后面还是报了一个编译的错误,我使用这个命令跳过测试进行编译成功。
mvn clean install -Dmaven.test.skip=true
执行数据库脚本报错
本来因为上面的locale问题,导致数据库无法迁移成功,我想使用数据库初始化脚本重新生成初始化数据,在执行的过程中遇到脚本中sudo和JAVA命令找不到,就tm离谱。(环境变量检查了很久,就是没问题)此处若是报错找不到执行的脚本文件,则进入文件,查看:set ff若不是unix改为unix.
我进入脚本文件,将找不到的sudo和java强行用本机绝对地址写入(查看地址使用which sudo | which java)可以运行成功,虽然还是报错,但是至少脚本可以执行了。虽然不知道具体是什么原因导致的,若是有人遇到类似问题,可以尝试一下,就当提供一个思路。
到此处,编译部署顺利结束。
之后分别运行后端和前端,若顺利启动即可访问http://localhost:4200/login使用thingsbaord了。
由于国内的资料非常少,在遇到报错的过程中,查找的过程真是非常的痛苦,所以记录一下一些自己遇到的问题,也希望能够提供一些思路吧!