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发布,集成设备容器、视图建模、机器学习》https://www.cnblogs.com/lsjwq/p/11716909.html