.NET Core開發的iNeuOS物聯網平臺部署樹黴派(raspbian),從閘道器到雲端整體解決方案。助力2019中國.NET峰會。
2019 中國.NET 開發者峰會正式啟動
目 錄
1. 概述... 2
2. 樹莓派硬體配置... 2
3. 軟體資訊... 3
4. Raspbian下載及安裝... 3
5. 準備執行程式包... 4
6. 安裝SSH.. 4
7. 安裝.netcore. 4
8. 安裝mariadb. 5
9. 安裝nginx. 7
10. 配置iNeuOS資料庫和檔案... 8
11. 執行iNeuOS. 9
1. 概述
備註:為了文章的完整性,在《.NET Core開發的iNeuOS物聯網平臺部署在Ubuntu作業系統》中的內容適用於樹莓派部署,也將在這篇文章中出現。
iNeuOS成功部署在樹莓派上,意味著iNeuOS打通了從嵌入式到雲端整體鏈路,為中小企業在物聯網建設方面提供了整體解決方案,降低產品研發、專案執行方面的成本。iNeuOS部署在樹莓派主要意義在於:
(1) 可以形成企業閘道器產品,應用到系統建設中。
(2) 裝置容器可以遠端裝置資料採集進行遠端運維,並且支援裝置驅動線上更新。
(3) Web組態建模可以遠端配置和開發監測頁面,現場螢幕就地顯示。
(4) 與雲端系統無縫對接,快速進行私有云部署。
(5) 支援介面形式的二次開發,降低人員開發週期和成本。
(6) 降低企業開發和部署閘道器的成本,核心板+外殼+人工等費用,可以控制在幾百元左右。
某企業對集團級的物聯網平臺進行升級,符合對遠端部署的終端硬體閘道器可以進行遠端配置和運維的總體要求。
但是,也會有質疑,認為C/C++更適合嵌入式或閘道器級的開發,佔用資源少、執行效率高,當然這是最優的方案。iNeuOS在樹莓派的部署,在考慮開發成本、專案執行週期成本、人力成本等諸多因素,從整體解決方案方面為企業提供了更多的選擇路徑。
在實際部署和使用過程,.NET Core在raspbian下的執行效率,沒有想象中的差,另外執行效率只是我們選擇方案考慮的因素之一。
2. 樹莓派硬體配置
樹莓派3代b+開發板Raspberry Pi 3b,詳細配置引數,如下圖:
3. 軟體資訊
作業系統:raspbian September 2019
Kernel版本: 4.19
.NET Core版本:2.2.402
資料庫:MariaDB (與mysql基本相容)
4. Raspbian下載及安裝
下載地址: https://www.raspberrypi.org/downloads/raspbian/,如下圖:
使用Win32DiskImager工具把映象檔案寫到sd卡上,過程不再詳細介紹。
5. 準備執行程式包
把iNeuOS後臺介面服務和前端應用系統複製到Ubuntu作業系統下的work工作目錄,程式包中主要目錄,如下圖:
把Api和UI複製到Ubuntu作業系統的work目錄下,如下圖:
6. 安裝SSH
執行命令:
sudo vim /etc/ssh/sshd_config
增加如下配置資訊:
PasswordAuthentication yes PermitRootLogin yes
7. 安裝.netcore
sudo apt-get install curl libunwind8 gettext
curl -sSL -o dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/e0050c1d-ddc6-4ac9-ba3b-07d85eec5890/614dae615fe229f6b6f43658262a8f08/dotnet-sdk-2.2.402-linux-arm.tar.gz (不是固定下載連結地址,可以先下載好,上傳到raspbian系統,再執行下面的命令)
sudo mkdir -p /opt/dotnet
sudo tar zxf dotnet.tar.gz -C /opt/dotnet
sudo ln -s /opt/dotnet/dotnet /usr/local/bin
8. 安裝mariadb
(1)例項安裝
ubuntu上安裝mysql比較簡單,只需要幾條命令就可以完成,如下:
developer:~$ sudo apt-get install mariadb-server
安裝過程中會提示設定密碼,注意設定一樣,安裝完成之後可以使用如下命令來檢查是否安裝成功:
developer:~$ sudo netstat -tap | grep mysql
通過上述命令檢查之後,如果看到有mysql 的socket處於 listen 狀態則表示安裝成功。
登陸mysql資料庫可以通過如下命令:
mysql -u root -p
-u 表示選擇登陸的使用者名稱, -p 表示登陸的使用者密碼,上面命令輸入之後會提示輸入密碼,此時輸入密碼就可以登入到mysql。
(2)區分大小寫配置
在unbuntu下找到/etc/mysql/mysql.conf.d/mysqld.cnf檔案,在[mysqld]的下新增 lower_case_table_names=1 就行了。備註:為0時大小寫敏感,為1時大小寫不敏感,預設為0。如下圖:
(3)外網訪問許可權配置
本地mysql5.7資料庫,當使用127.0.0.1和localhost時可以連線,但當使用本地ip時192.168.*.則連線拒絕,當然外網通過192.168..*同樣無法連線。
解決方法如下:
1)登陸mysql,授權外網訪問許可權
developer:~$ use mysql;
developer:~$ update user set host = ‘%’ where user = ‘root’;
developer:~$ flush privileges;
2)修改my.cnf配置
在unbuntu下找到/etc/mysql/mysql.conf.d/mysqld.cnf檔案,把bind-address=127.0.0.1修改bind-address=0.0.0.0
3) 跳過許可權表。(與在Ubuntu下部署不一樣)
在unbuntu下找到/etc/mysql/mysql.conf.d/mysqld.cnf檔案(如果是mariadb資料庫,則是:/etc/mysql/mariadb.conf.d/50-server.cnf),加下配置: skip-grant-tables
(4)執行 sudo mysql_secure_installation 設定root密碼及許可權,如下圖:
其他設定,請根據實際情況進行選擇。
(5)服務命令
啟動方式:
使用 service 啟動:service mysql start
使用 mysqld 指令碼啟動:/etc/inint.d/mysql start
停止方式:
使用 service 啟動:service mysql stop
使用 mysqld 指令碼啟動:/etc/inint.d/mysql stop
重啟方式:
使用 service 啟動:service mysql restart
使用 mysqld 指令碼啟動:/etc/inint.d/mysql restart
9. 安裝nginx
安裝反向代理nginx,啟動,命令如下:
developer:~$ sudo apt-get install nginx
developer:~$ sudo service ngnix start
然後訪問一下本機的IP地址(127.0.0.1),如果出現如下頁面,說明已經安裝成功。
10. 配置iNeuOS資料庫和檔案
(1) 建立資料庫,我是在window下使用Navicat執行sql指令碼。如下圖:
(2) 修改後臺介面服務(API)訪問資料庫的配置檔案,考慮到安全性的問題,進行了加密,如下圖:
(3) 修改前端應用系統(UI)訪問後臺介面服務(API)的配置檔案UI\lib\buffos\js\目錄下request.js和uiconfig.js,如下圖:
11. 執行iNeuOS
(1) 執行後臺介面服務(API),修改appsettings.json配置檔案,可以偵聽本地所有IP的埠,增加Kestrel配置節,如下圖:
執行執行介面命令,如下圖:
(2) 配置nginx服務,訪問前端應用系統,如下:
安裝好之後進入到以下目錄,開啟default檔案,如下命令:
developer:~$ cd /etc/nginx/sites-available
developer:~$ sudo gedit default
修改為以下的內容,偵聽81埠,並指訪問的根目錄(UI)和瀏覽的預設頁(index.html),如下圖:
(3) 訪問URL(http://127.0.0.1:81或http://192.168.31.102:81)地址,效果如下圖:
登陸頁面,如下圖:
WEB組態建模開發,如下圖:
檢視應用顯示,如下圖:
參見前三篇文章:
《iNeuOS雲作業系統,.NET Core全系打造》
《iNeuOS 物聯網雲作業系統2.0釋出,整合裝置容器、檢視建模、機器學習》
《.NET Core開發的iNeuOS物聯網平臺部署在Ubuntu作業系統,無縫跨平臺》
物聯網&整合技術 QQ群:54256083
物聯網&集成合作 QQ群:727664080
網站:http://www.ineuos.net
&n