Panther 從一位小白走來,雖然現在也還是小白,但是我取之于民,不定時将自己所學到的都分享給大家,這篇為大家分享2019/9/5下午整理的,由于最近一段時間忙着學習angularjs+kubernetes沒有怎麼發部落格,前段時候剛為幾台新機搭建了環境并成功的運作,這裡就為大家簡單介紹一下,我是如何配置運作的,這些都是大家的功勞,大家庭裡的人太多了,大家跟我們來就對了
@上海-fRanson 、@琉璃、@大俠
QQ群 | QQ号 |
---|---|
China Thingsboard | 726442610 |
thingsboard所需的環境及開發工具
java jdk1.8、maven3.5.4、tomcat8.5.4、idea2019.1.1、git2.22.0、node10.16.2、postgresql9.6.14、navicat、vpn
查詢本機是否安裝過環境,避免重複安裝,如有已經安裝過的,自然就不用再次安裝
cmd
dxdiag
檢視電腦是多少位的作業系統,以下指令提示該電腦的作業系統,本篇以win64位作業系統為例,如安裝環境不同請自行下載下傳對應版本的軟體
java -version
檢視是否安裝java jdk
mvn -version
檢視是否安裝maven
node -v
npm -v
檢視是否安裝nodejs環境,安裝node自帶會安裝npm指令
one vpn安裝
two 安裝目錄
每次安裝結束記得通過cmd檢測一下是否安裝成功,如果大家跟着我的步驟還是沒有操作成功,網盤中我也粘貼了我們群 中大神的操作步驟,大家自行查閱
- jdk安裝
- maven安裝
- tomcat安裝
- idea安裝
- git安裝
- nodejs安裝
- postgresql安裝
- navicat安裝
three 百度網盤的位址連結
連結位址
https://pan.baidu.com/s/196yaHDQcx03Ri7dZWUYbsg
提取碼
2329
開始打地基
jdk安裝
- 運作工具包中的 jdk-8u162-windows-x64
- 下一步 下一步,需要注意的就是路徑的位址,一般都是自定義的後期還需要配置環境變量
- 圖檔僅供參考,配置完java_home的路徑,在将java_home添加到path中,最後查詢 maven安裝
- 運作工具包中的 apache-maven-3.5.4
- 下一步 下一步,需要注意的就是路徑的位址,一般都是自定義的後期還需要配置環境變量
- 流程如上圖,配置完maven_home的路徑,在将maven_home添加到path中,最後查詢
- 有情提示,如果對于修改maven倉庫的位址不是很熟悉或者沒有使用過,不必修改他的倉庫位址,idea會自動擷取maven的預設位址 tomcat安裝
- 運作工具包中的 apache-tomcat-8.5.40-windows-x64
- 下一步 下一步,需要注意的就是路徑的位址,一般都是自定義的後期還需要配置環境變量
- 流程如上圖,配置完catalina_base的路徑,在将catalina_base添加到path中,最後啟動tomcat,并修改使用者名和密碼 idea安裝
- 運作工具包中的ideaIU-2019.1.1 下一步下一步,注冊碼激活 工具包中存在
- 安裝完成之後需要內建自己的jdk、maven、tomcat、設定idea護眼色、修改maven負載最大值、idea安裝lombok插件(如果不安裝log會報錯,可能影響項目無法啟動)
-
因為過程比較瑣碎,百度網盤中我把每一步都貼上了網址,大家可以根據連結的訓示操作
git安裝
- 運作工具包中的Git-2.22.0-64-bit 下一步下一步
- 自定義安裝路徑,安裝成功後空白地方右鍵 nodejs安裝
- 運作工具包中的node-v10.16.2-x64 下一步下一步
- cmd查詢,因為安裝node,會自帶npm postgresql安裝
- 運作工具包中的postgresql-9.6.14-2-windows-x64 下一步下一步
- 切記 切記,輸入密碼一定要自己常用的
-
安裝pgsql會遇到,這種錯誤,直接複制到百度,即可
There has been an error.
an error occured executing the Microsoft VC++ runtime installer
navicat安裝
- 運作工具包中的navicat100_pgsql_en 下一步下一步
- 這裡示範的是英文版的,因為英文版的安裝簡單,注冊碼同在檔案夾内
- 連接配接pgsql
-
将該目錄下的4個sql檔案導入到pgsql中,點選public右鍵,運作本地sql,會出現22張表格
thingsboard\b\thingsboard-master\dao\src\main\resources\sql
下載下傳項目,導入idea,成功運作
官網提示最新為2.4.0 這裡我們不通過git下載下傳,當然也可以通過git下載下傳,打包過程都是一樣的,我們直接下載下傳zip壓縮包為最新的版本2.4.1
https://github.com/thingsboard/thingsboard
當下載下傳之後,idea內建過maven并修改過最大接入值時,幾分種就可以導入該項目;
我們打包項目,通過idea的終端Terminal 輸入指令
在該終端下運作打包指令
mvn clean install -DskipTests
在這裡如果一切順利,就應該解決問題啦,打包成功,啟動項目,但是一般問題沒那麼簡單,肯定會報錯的;
聲明一下,項目打包不需要修改任何代碼,通過maven的導入就可以執行打包操作!現在我們都沒有修改,這樣也好針對不同的問題做出對應的修改;
*我這裡列舉幾種解決辦法 *
一: 在終端直接打包成功,那就最好啦,這個時候通過maven單獨清理 ui + web ui ;兩個檔案
thingsboard ServerUI
ThingsBoard Web UI Microservice
Lifecycle – > clean --> compile
如果執行操作都為成功的話,修改
目錄下的資料庫配置檔案,這裡根據建立資料庫的使用者名和密碼進行修改thingsboardmaster\application\src\main\resources\thingsboard.yml
二:如果自己剛從網上下載下傳下來的項目,無論怎樣都無法打包的話就是前端依賴出現啦問題,a無法翻牆,b依賴出現啦問題;第一個好解決,我重點講解一下第二個
出現第二種情況就是因為,UI子產品+web ui子產品的 node_modules依賴缺少;ui下的node_modules的依賴為1001個, web ui子產品下的node_modules的依賴為358個,将工具包中好的依賴導入到你的項目中,再次打包,每次打包結束java程序,從任務管理器中結束掉
打包成功,啟動時報錯,惠普的會出現9001端口被占用,百度一下 結束被占用的端口,最後都啟動成功使用ngrok工具,解壓修改端口号啟動
打包教程
我剛下載下傳的zip 檔案 第一次打包 報錯
ui 中的node_modules,解壓到 ui目錄下 單獨打包 ui目錄
這樣就可以解決ui打包不通過的問題
打包成功,然後 在到主目錄下打包
出現端口被占用 , 任務管理器 結束目前程序,結束Javase 程序
cmd 運作
taskkill /f /im java.exe
另外出現其他的錯誤,先嘗試maven重新整理整個項目
關于打包成功 後 ,如還有提示 msg.gen 引入錯誤的如圖,如圖 maven 重新整理以下就好了
包括出現不是有效win32的這種情況
出現這種問題就是因為你的maven關于node的依賴沒有下載下傳完全
1.首先從maven庫中檢視node依賴是否完整,因為我沒有配置maven倉庫 我的就在c盤下
C:\Users\Panther\.m2\repository\com\github\eirslett\node\10.16.0
2.檢視pgk是否有v2.6,這些都是關于tb的依賴,都是需要有的
C:\Users\Panther\.pkg-cache
最後知識補充一下
thingsboard改造使用mysql資料庫
thingsboard從2.2版本開始,相容關系型資料庫與非關系型資料庫共用(關系型資料庫儲存實體類資訊、非關系型資料庫cassandra儲存遙測資料資訊)。由于國内偏向使用mysql資料庫,而非postgresql。是以,通過修改thingsboard.yml的JDBC連結,可以實作使用mysql資料庫的目的。
同理,如果需要改成使用oracle或者其他資料庫,也是修改配置檔案即可。因為thingsboard使用了JPA作為持久化手段,是以基本相容目前流行的資料庫。
thingsboard.yml配置修改如下:
DATABASE_ENTITIES_TYPE sql
SPRING_JPA_DATABASE_PLATFORM org.hibernate.dialect.MySQL5InnoDBDialect
SPRING_DRIVER_CLASS_NAME com.mysql.jdbc.Driver
SPRING_DATASOURCE_URL jdbc:mysql://${mysql_ip}:3306/thingsboard?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC
SPRING_DATASOURCE_USERNAME ${mysql_username}
SPRING_DATASOURCE_PASSWORD ${mysql_password}