当前位置:   article > 正文

Thingsboard从配置到运行成功小白级别的步骤以及踩过的坑_failed to date mail configuration. settings not fo

failed to date mail configuration. settings not found!

目录

前言

必不可缺步骤

1.源码获取

2.安装运行环境

3.源码编译

4.将源码导入到IDEA

5.数据库安装

6.测试数据导入

总结


前言

最近在研究开源的ThingsBoard相关源码的内容,作为一个移动端APP的开发者,第一次接触这种后端项目,真的是无从下手,只能根据网上的步骤一点点的进行操作,项目好不容易编译成功了、数据库也安装成功了,但是就是项目运行不起来。把自己遇到的问题在一些QQ群中咨询,可能是自己的问题比较低级,也没有人回复,在网上也没有找到立即对症下药的帖子,自己一遍又一遍的换关键字搜索,功夫不负有心人,终于可以让项目运行起来,顺便把我遇到的问题记录下,相比较与网上有一些比较好的博客,更适合像我这种从前端看后端项目的人,里面的有些步骤可能是在我看到的有些博客中没有提到的,但是属于必不可缺少的。当然也有些我目前也搞不明白的步骤,还希望大神给予指导。

必不可缺步骤

这些步骤在运行这个项目的时候,对于之前的一个前端开发者来说,自己很容易忽略掉,现在把项目运行成功之后,才发现自己之前应该就多思考一下,细细想想都是些顺理成章的事情。

1.源码获取

自行从Github上获取源码即可。git地址:https://github.com/thingsboard/thingsboard/

2.安装运行环境

电脑的操作系统:MacOS Mojave,由于本地之前已经安装过Maven、JDK、Git、Nodejs、IDEA等,所以在编译过程中并没有因为这些没有安装报错信息,所以这里我不能提供一些因为这些环境而引起的报错信息,大家遇到一些因为这环境没有配置好而引起的问题可以自行搜索,有很多比较好的博客都有介绍。

3.源码编译

这里我第一次编译的时候应该用的是这个命令,这个应该是直接进入到项目的根目录下执行的,然后第一次编译的时间是挺长的,但是编译肯定是成功的,因为我记得当时有看到Build Success的提示

xxxMacBook-Pro:thingsboard-master xxx$ mvn clean install -DskipTests

当然后来由于自己一直项目运行一直报“ org.thingsboard.server.dao.exception.IncorrectParameterException: Failed to date mail configuration. Settings not found!”这个错误,以为是哪里配置文件有问题,所以导致项目一直运行不起来。然后搜到一篇博客介绍修改一些thingsboard的一些配置文件,然后用下面的这个命令执行过,这次执行速度要很快,不知道跟我修改ingsboard/pom.xml的两个配置有没有关系,但是我修复运行的这个报错信息,肯定不是因为修改这个配置才可以运行成功。

xxxMacBook-Pro:thingsboard-master xxx$ mvn clean install -Dmaven.test.skip=true

修改的tthingsboard/pom.xml的配置项如下:

(1)注释 thingsboard/pom.xml文件中有关liscense的配置信息,直接搜索"com.mycila"就可以找到下面的内容,大约在thingsboard/pom.xml文件的694行左右,修改如下:

  1. <!--注释配置项-->
  2. <!-- <plugin>
  3. <groupId>com.mycila</groupId>
  4. <artifactId>license-maven-plugin</artifactId>
  5. <version>3.0</version>
  6. <configuration>
  7. <header>${main.dir}/license-header-template.txt</header>
  8. <properties>
  9. <owner>The Thingsboard Authors</owner>
  10. </properties>
  11. <excludes>
  12. <exclude>**/.env</exclude>
  13. <exclude>**/*.env</exclude>
  14. <exclude>**/.eslintrc</exclude>
  15. <exclude>**/.babelrc</exclude>
  16. <exclude>**/.jshintrc</exclude>
  17. <exclude>**/.gradle/**</exclude>
  18. <exclude>**/nightwatch</exclude>
  19. <exclude>**/README</exclude>
  20. <exclude>**/LICENSE</exclude>
  21. <exclude>**/banner.txt</exclude>
  22. <exclude>node_modules/**</exclude>
  23. <exclude>**/*.properties</exclude>
  24. <exclude>src/test/resources/**</exclude>
  25. <exclude>src/vendor/**</exclude>
  26. <exclude>src/font/**</exclude>
  27. <exclude>src/sh/**</exclude>
  28. <exclude>packaging/*/scripts/control/**</exclude>
  29. <exclude>packaging/*/scripts/windows/**</exclude>
  30. <exclude>packaging/*/scripts/init/**</exclude>
  31. <exclude>**/*.log</exclude>
  32. <exclude>**/*.current</exclude>
  33. <exclude>.instance_id</exclude>
  34. <exclude>src/main/scripts/control/**</exclude>
  35. <exclude>src/main/scripts/windows/**</exclude>
  36. <exclude>src/main/resources/public/static/rulenode/**</exclude>
  37. <exclude>**/*.proto.js</exclude>
  38. <exclude>docker/haproxy/**</exclude>
  39. <exclude>docker/tb-node/**</exclude>
  40. <exclude>ui/**</exclude>
  41. <exclude>src/browserslist</exclude>
  42. <exclude>**/*.raw</exclude>
  43. </excludes>
  44. <mapping>
  45. <proto>JAVADOC_STYLE</proto>
  46. <cql>DOUBLEDASHES_STYLE</cql>
  47. <scss>JAVADOC_STYLE</scss>
  48. <jsx>SLASHSTAR_STYLE</jsx>
  49. <tsx>SLASHSTAR_STYLE</tsx>
  50. <conf>SCRIPT_STYLE</conf>
  51. <gradle>JAVADOC_STYLE</gradle>
  52. </mapping>
  53. </configuration>
  54. <executions>
  55. <execution>
  56. <goals>
  57. <goal>check</goal>
  58. </goals>
  59. </execution>
  60. </executions>
  61. </plugin>-->
  62. .....
  63. <!--紧跟着上面的这个就是这个隐藏信息-->
  64. <!-- <plugins>
  65. <plugin>
  66. <groupId>com.mycila</groupId>
  67. <artifactId>license-maven-plugin</artifactId>
  68. </plugin>
  69. </plugins>-->

(2)配置application\target\generated-sources\protobuf代码自动生成 ,还是在 thingsboard/pom.xml这个文件中搜索即可 ,大约在653行左右

  1. <configuration>
  2. <sources>
  3. <source>${basedir}/target/generated-sources</source>
  4. <!--配置application\target\generated-sources\protobuf代码自动生成-->
  5. <!-- source>${basedir}/target/generated-sources</source -->
  6. <source>${basedir}/target/generated-sources/grpc-java</source>
  7. <source>${basedir}/target/generated-sources/java</source>
  8. </sources>
  9. </configuration>

至于为什么去修改这两个配置我也不是很清楚,但是我觉得我之前项目就能编译成功,修改这两个配置文件还是可以编译成功,但并不是我后面能够成功运行项目的关键因素。编译成功之后的运行界面如下:

打包编译成功之后,就可以看到在application\target目录的内容如下:

4.将源码导入到IDEA

通过Maven工程的方式,将源码导入到IDEA中,这里不再多余介绍,我觉得对于一个不管是移动前端开发还是后端开发,这里应该不是问题。

5.数据库安装

从这里开始就是一个APP开发人员的噩梦了,这个地方我也是花了一段时间才搞明白,这个具体的内容可以参照我的另外一篇博文小白级别的thingsboard数据库安装

注意经过将数据库安装好了之后,创建好thingsboard数据库的所有表之后,还要将项目中的内容配置进行修改下,在application/src/main/resources/thingsboard.yml这个文件里,找到下面的内容,将默认的数据库名postgres改为thingsboard。

  1. datasource:
  2. driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
  3. url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
  4. username: "${SPRING_DATASOURCE_USERNAME:postgres}"
  5. password: "${SPRING_DATASOURCE_PASSWORD:*****}"<!--数据库的设置的密码,在项目中是明文-->
  6. hikari:
  7. maximumPoolSize: "${SPRING_DATASOURCE_MAXIMUM_POOL_SIZE:5}"

6.测试数据导入

这个是一个很关键的步骤,我觉得对于我这个新手来说,这个步骤给忽略了,如果没有在做这个步骤,在运行ThingsboardServerApplication这个类,启动服务的时候,会一直抛出“org.thingsboard.server.dao.exception.IncorrectParameterException: Failed to date mail configuration. Settings not found!”这个异常,报错信息如下:

  1. Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
  2. 2020-07-16 09:47:23,242 [main] ERROR o.s.boot.SpringApplication - Application run failed
  3. org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
  4. at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:156)
  5. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544)
  6. at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
  7. at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
  8. at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
  9. at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
  10. at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
  11. at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
  12. at org.thingsboard.server.ThingsboardServerApplication.main(ThingsboardServerApplication.java:38)
  13. 。。。。。。。
  14. 。。。。。。。
  15. Caused by: org.thingsboard.server.dao.exception.IncorrectParameterException: Failed to date mail configuration. Settings not found!
  16. at org.thingsboard.server.service.mail.DefaultMailService.updateMailConfiguration(DefaultMailService.java:80)
  17. at org.thingsboard.server.service.mail.DefaultMailService.init(DefaultMailService.java:69)
  18. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  19. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  20. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  21. at java.lang.reflect.Method.invoke(Method.java:498)
  22. at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389)
  23. at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333)
  24. at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157)
  25. ... 102 common frames omitted
  26. Process finished with exit code 1

刚开始的时候我也能感觉到是由于这个email没有配置引起的,我也之前也想到在步骤5中创建的数据库的内容是空的,但是一开始就是没有反应过来,后来我找到DefaultMailService这个类,把这个抛出异常的地方给隐藏,项目运行起来了,小窃喜了一分钟,继而就输入用户名和密码,在提示“Authorization fails”时候,我突然恍然大悟,都没有忘数据库里插入数据,即使输入给定的这个账号和密码,又怎么能去验证成功呢?所以就去寻找各种方式来解决这个怎么将测试数据插入到数据库中。下面就是导入测试数据的具体步骤:

(1)通过命令终端进入到application/target/bin/install目录下,里面有下面几个文件,直接执行install_dev_db.sh

 (2)会发现报错“Permission denied”

(3)修改文件权限“chmod +x install_dev_db.sh”

(4)在重复(1)步骤,结果错误信息如下:

  1. Logging system failed to initialize using configuration from 'logback.xml'
  2. java.lang.IllegalStateException: Logback configuration error detected:
  3. ERROR in ch.qos.logback.core.rolling.RollingFileAppender[fileLogAppender] - Failed to create parent directories for [/var/log/thingsboard/install.log]
  4. ERROR in ch.qos.logback.core.rolling.RollingFileAppender[fileLogAppender] - openFile(/var/log/thingsboard/install.log,true) call failed. java.io.FileNotFoundException: /var/log/thingsboard/install.log (No such file or directory)
  5. at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:169)
  6. 。。。。。。
  7. 。。。。。。
  8. at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
  9. at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
  10. at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
  11. at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:597)
  12. java.lang.IllegalStateException: Logback configuration error detected:
  13. ERROR in ch.qos.logback.core.rolling.RollingFileAppender[fileLogAppender] - Failed to create parent directories for [/var/log/thingsboard/install.log]
  14. ERROR in ch.qos.logback.core.rolling.RollingFileAppender[fileLogAppender] - openFile(/var/log/thingsboard/install.log,true) call failed. java.io.FileNotFoundException: /var/log/thingsboard/install.log (No such file or directory)
  15. ThingsBoard DB installation failed!

这种方式是由于要在系统的var/log下面创建文件夹,需要输入系统密码,所以我抱着试试的态度,直接进入到var/log创建了一个thingsboard的目录,然后在重复(1)步骤,神奇的事情发生了,页面出现了:

  1. MacBook-Pro:install xx$ install_dev_db.sh
  2. ===================================================
  3. :: ThingsBoard :: (v3.0.1-SNAPSHOT)
  4. ===================================================
  5. Starting ThingsBoard Installation...
  6. Installing DataBase schema for entities...
  7. Installing SQL DataBase schema part: schema-entities.sql
  8. Installing SQL DataBase schema indexes part: schema-entities-idx.sql
  9. Installing DataBase schema for timeseries...
  10. Installing SQL DataBase schema part: schema-ts-psql.sql
  11. Failed to execute query: CREATE TABLE IF NOT EXISTS ts_kv_indefinite PARTITION OF ts_kv DEFAULT; due to: ERROR: "ts_kv" is not partitioned
  12. Loading system data...
  13. Loading demo data...
  14. Installation finished successfully!
  15. ThingsBoard DB installed successfully!

此处要为自己鼓掌一分钟。。。。。步骤6真的搞了我一天,然后正是因为步骤6,我在浏览器里在输入http://localhost:8080/,我期盼的页面出现了

输入用户名和密码之后,界面进度条动了起来,自己心情小激动了一下,终于可以看到下面的这个界面了。

附账号和密码:

角色用户名密码
系统管理员sysadmin@thingsboard.orgsysadmin
租户管理员tenant@thingsboard.orgtenant

 

这个是系统管理员进去的主界面:

总结

感谢自己的耐心和坚持不懈,终于让项目成功的运行起来了。然后对后端项目有了一点点认知。一个后端项目要配置数据库的环境,还要配置开发环境,项目要编译打包,打包之后项目要启动服务,在启动之前,如果检查数据库是否需要插入测试数据(这个是否有这种类似数据检查的代码逻辑有关)等等。借着这个Thingsboard项目,正好把这些内容熟悉一下。加油!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/262636
推荐阅读
相关标签
  

闽ICP备14008679号