ThingsBoard源码本地部署实战:从环境准备到成功启动的避坑指南
1. 环境准备打好地基才能盖高楼第一次在本地部署ThingsBoard源码时我像大多数开发者一样直接clone代码就往IDE里导结果被各种依赖问题折腾得够呛。后来才发现源码部署就像装修房子水电改造环境配置没做好后面全是隐患。硬件配置建议我实测8GB内存的机器跑起来比较吃力编译阶段经常卡死。现在用的16GB内存开发机配合SSD硬盘整体流程能控制在30分钟内。如果只是学习测试云服务器建议选择2核4GB以上配置。软件环境需要特别注意版本匹配JDK官方推荐Java 11我用的OpenJDK 11.0.15Maven3.6.x以上3.8.1实测稳定PostgreSQL12.x版本最佳14.x会有兼容性警告Git2.30版本即可注意千万不要用Java 17虽然ThingsBoard新版开始支持但源码编译时会遇到各种反射API的兼容性问题我在这上面浪费过整整一天时间。安装完基础环境后建议先做个快速验证java -version mvn -v psql --version这三个命令能正常输出版本信息说明环境变量配置正确。有个容易忽略的点Maven的settings.xml文件需要提前配置好国内镜像源否则下载依赖时会慢到怀疑人生。2. 源码初始化别让网络问题坑了你从GitHub克隆代码后千万别急着用IDE打开。我吃过亏 - IDEA自动构建会漏掉关键资源文件生成。正确的打开方式是先在命令行执行mvn clean install -DskipTests这个命令背后做了三件重要的事生成protobuf协议文件后面消息通信的基础编译前端资源Vue组件打包准备数据库初始化脚本藏在target/data目录里常见坑点网络超时我在公司内网构建时因为maven中央仓库连接不稳定失败了5次。后来在settings.xml里配了阿里云镜像才解决mirror idaliyun/id urlhttps://maven.aliyun.com/repository/public/url mirrorOfcentral/mirrorOf /mirror内存不足可以临时设置环境变量增大内存export MAVEN_OPTS-Xmx2048m -XX:MaxPermSize1024m前端构建卡住如果停在frontend:build阶段超过10分钟可能是node_modules缓存问题。删除根目录下的node_modules文件夹重新构建即可。3. 数据库配置小心字段里的魔鬼细节PostgreSQL配置是个精细活我建议先创建专用用户和数据库CREATE USER thingsboard WITH PASSWORD 你的密码; CREATE DATABASE thingsboard OWNER thingsboard;修改application.yml时这几个参数最容易出错spring: datasource: url: jdbc:postgresql://localhost:5432/thingsboard username: thingsboard password: 你的密码 driverClassName: org.postgresql.Driver高频踩坑记录SQL文件找不到第一次运行ThingsBoardInstallApplication时报错schema.sql not found。这是因为初始化构建时生成的sql文件在target/data下需要手动复制到application/src/main/data目录。LwM2M模型加载失败这个错误提示很隐蔽Caused by: java.nio.file.NoSuchFileException: lwm2m-registry检查thingsboard.yml文件确保install.data_dir指向正确路径。我这边最后配置的是install: data_dir: application/src/main/data时区问题如果启动后时间显示不对在JDBC连接串后加上时区参数jdbc:postgresql://localhost:5432/thingsboard?currentSchemathingsboardstringtypeunspecifiedTimeZoneAsia/Shanghai4. IDE集成消除那些烦人的红色波浪线用IDEA打开项目后大概率会遇到两类问题第一类Protobuf相关错误症状是org.thingsboard.server.common.msg.gen.MsgProtos等类标红。这是因为项目使用了Google的Protocol Buffers需要安装Protobuf插件不同IDEA版本适配不同在Preferences - Build - Compiler - Annotation Processors中启用处理重新编译生成proto文件第二类License报错打包时出现的Some files do not have the expected license header警告有两种解决方案给新增文件添加头注释模板在根目录LICENSE.header在pom.xml中禁用检查不推荐plugin groupIdcom.mycila/groupId artifactIdlicense-maven-plugin/artifactId configuration skiptrue/skip /configuration /plugin实用技巧遇到反射警告WARNING: Illegal reflective access可以添加JVM参数--add-opens java.base/java.langALL-UNNAMED前端开发时可以单独启动Vue开发服务器cd ui-ngx npm install npm start5. 启动与调试从理论到实践的最后一公里完成上述步骤后通过ThingsBoardServerApplication启动主类。第一次启动会比较慢约1-2分钟控制台看到这个日志说明成功Started ThingsBoardServerApplication in 42.305 seconds常见启动异常处理端口冲突默认的8080端口被占用时修改application.yml中的server: port: 你的端口 address: 0.0.0.0数据库连接池耗尽在高压测试时可能出现调整连接池参数spring: datasource: hikari: maximum-pool-size: 50 connection-timeout: 30000缓存问题修改配置后建议清理缓存mvn clean compile rm -rf application/target/生产环境建议 虽然开发时可以直接运行main方法但正式环境建议用打包后的安装脚本Windowstarget/thingsboard-windows.batLinuxtarget/thingsboard-linux.sh这些脚本会自动处理服务注册、日志轮转等运维操作。我在内网测试时发现Windows脚本执行后窗口会闪退这时需要手动查看logs/thingsboard.log排查问题。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2473646.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!