接上一篇,操作系统弄好之后,轮到开发运行环境的搭建。

先说说目标,也就是我到底想搞什么飞机。先说说小目标吧。

现有一个手机App客户端,以答题小游戏作为其内容(例如:口算题,24点,科学百科等)

树莓派上部署服务端应用,为手机App提供数据库和API接口

树莓派同时作为物联信息的输出终端,譬如:

接入红、绿、黄三色的发光二极管,等待答题的时候亮黄灯;答题正确亮绿灯;答题错误亮红灯

接入点阵液晶面板,游戏结束输出分数

接入蜂鸣器,用声音来输出与二极管类似的信号

高级一点的,还可以驱动一个马达电机驱动小车前进后退

以上这些,可能有人会不屑的。小孩子玩泥沙一般的东西,好意思拿出来说?对,必须承认在IoT的领域,我就是幼儿园大班的水平。首先能自娱自乐玩的开心就好,顺便可以在中班小班的朋友面摆显一下,满足我的虚荣心。这就是我的目的。

好了,闲话少说,立刻开干吧。

.NET Core环境搭建

说说为啥用.NET Core,不用Python?其实用Python也不是不可以,本质都是一样找第三方的Library,堆起来而已。考虑效率优先,还是.NET Core用起来顺手。

首先,我先参考微软官网的安装方法

将 Microsoft 包签名密钥添加到受信任密钥列表,并添加包存储库。

wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb

sudo dpkg -i packages-microsoft-prod.deb

然后就是安装ASP.NET Core3.1了。注意:我装的是runtime,因为我是不需要在树莓派上编译项目,而是作为生产机把编译好的bin上传再运行,所以runtime足矣。如果需要编译的记得换成sdk。

sudo apt-get update;

sudo apt-get install -y apt-transport-https &&

sudo apt-get update &&

sudo apt-get install -y aspnetcore-runtime-3.1

这几行命令再常规的x64 linux系统上,应该能运行良好。可是,经实践证明,这arm64上玩不转了!于是只能转而求助与小度。

参考了下面这篇博文,我的问题终于迎刃而解。

https://cloud.tencent.com/developer/article/1524725

说白了,就是arm版的ubuntu需要手工安装配置.NET Core。好在,过程并不麻烦。如果大家懒得看上面那个链接的话,我就简单概括一下吧。

第一步,下载.net core。记得选ARM64的。

https://dotnet.microsoft.com/download/dotnet-core/3.1

咳咳,这个页面一堆链接,可能有的朋友会懵。看了半天不知道怎么选。算了,送佛送到西,我直接贴出我选的URL好了,跟不跟由你。没准过几天又有更新的版本,没几个月.NET5也来了……嗯,不好意思,扯远了。

SDK:https://download.visualstudio.microsoft.com/download/pr/186257d9-bca2-4dda-be74-006205965ec9/b2b63d45482701473d9731abc41ecc2a/dotnet-sdk-3.1.402-linux-arm64.tar.gz

Runtime:https://download.visualstudio.microsoft.com/download/pr/251cd0f7-2655-4f04-940d-6fb852c4389d/65f8897905e79ee9306be9428dad88fe/aspnetcore-runtime-3.1.8-linux-arm64.tar.gz

第二步,解压

mkdir /usr/dotnetcore/3.1

sudo mv aspnetcore-runtime-3.1.8-linux-arm64.tar.gz

cd /usr/dotnetcore/3.1

tar xf aspnetcore-runtime-3.1.8-linux-arm64.tar.gz

第三步,配置变量环境

按照参考博文用export的方式创建环境变量,貌似是临时的。一旦重启,这个变量环境设置将不复存在。所以,我换了一套持久化的全局的方法。

sudo nano /etc/profile

在文件的最后一行,增加环境变量配置

export DOTNET_ROOT=/usr/dotnetcore/3.1

export PATH=$PATH:$DOTNET_ROOT

保存退出后,执行sudo source /etc/profile 刷新环境变量

最后一步,测试一下dotnet是否配置成功

dotnet --info

Jexus安装配置

Jexus的安装相对简单很多,因为作者宇内流云很贴心地给我们准备了一键安装的脚本。

sudo curl https://jexus.org/release/arm64/install.sh|sudo sh

下载安装完毕,还需要将jexus设为systemd服务。继续引用大佬发的命令脚本

sudo systemctl enable /usr/jexus/jws.service

sudo systemctl start jws #启动

sudo systemctl stop jws #停止

sudo systemctl restart jws #重启

OK,Web服务的环境已经部署就位。接下来,便可以准备开发应用了!

0人点赞

程序人生

再玩树莓派(二)Jexus&.NetCore的更多相关文章

  1. JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

    JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...

  2. Qemu虚拟机 玩树莓派最新版系统 (截止2017-04-10)

    Qemu虚拟机可以玩 树莓派,大家都知道了吧.可是网上的教程好老,都是2012年的.我按照教程下载了最新版版本的树莓派系统怎么也跑不起来. 研究了好久,终于找到一个简单的方法,特意分享出来.转载请注意 ...

  3. 用Arduino玩GM65二维码扫描模块

    目录 用Arduino玩GM65二维码扫描模块 用Arduino玩GM65二维码扫描模块 最近在做Capstone,内容是我们之前实验室参加过的工程训练的物流搬运小车,所以现在来复盘一下我使用Ardu ...

  4. 玩树莓派(raspberry pi) 2/3 raspbian的遇到的一些问题

    raspberry pi买回来玩了一段时间,现在就记录一下入门遇到的一些问题吧. 首先是烧写镜像,和安装电脑系统是一样的道理. 先要有一个制作一个U启动盘.先将SD卡格式化,再用Win32DiskIm ...

  5. 树莓派4B安装netcore

    准备材料 SDFormatter.exe ---格式化SD卡,空的SD就可以不用了 2019-09-26-raspbian-buster.img ---下载好树莓派系统镜像 win32diskimag ...

  6. Python 初级 5 判断再判断(二)

    复习: 分支:完成测试并根据结果做出判断称为分支. 代码块:一行或放在一起的多行代码 缩进:一个代码行稍稍靠右一点 关系操作符(比较操作符):==, >, >=, <, <=, ...

  7. Session 知识点再整理(二) 自定义 Session 存储机制

    对于访问量大的网站,用默认的 Session 存储方式(以文件存储)不适合,因为文件的 I/O 开销会非常大,另外 Session 机制本身使 Session 不能跨机访问,在 Web 集群中无法达到 ...

  8. 再玩 DevStack(Mitaka版)- 基于 trystack.cn 源

    曾经就写过一篇关于DevStack安装OpenStack的文章< 使用 DevStack 高速部署 OpenStack 开发环境 >,时过境迁,如今有更好的方式来实现.想到曾经的复杂性,认 ...

  9. http协议再复习(二)

    HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法. HTTPS(Hypertext Transfer ...

随机推荐

  1. SpringBoot中关于Excel的导入和导出

    前言   由于在最近的项目中使用Excel导入和导出较为频繁,以此篇博客作为记录,方便日后查阅.本文前台页面将使用layui,来演示对Excel文件导入和导出的效果.本文代码已上传至我的gitHub, ...

  2. 3点带你快速学会Selenium工具的使用

    (一)Selenium IDE Firefox的一个插件,有助于我们理解测试框架.在附加组件里搜索下载,一般搜的结果里前几个都不是,得点那个查看更多才行,找到这个: 安装以后浏览器工具栏会有: 安装好 ...

  3. springBoot整合spring security实现权限管理(单体应用版)--筑基初期

    写在前面 在前面的学习当中,我们对spring security有了一个小小的认识,接下来我们整合目前的主流框架springBoot,实现权限的管理. 在这之前,假定你已经了解了基于资源的权限管理模型 ...

  4. GET和POST的本质区别

    前言:相信小伙伴们面试时候一定都遇到过这个问题,即使没有遇到过,至少也听说过,网上资料一大片,大概每个人都能说出来一些.但是总感觉面试装逼不成功,所以就翻阅了部分资料,进一步整理了下. 一般当我们提到 ...

  5. 《神经网络的梯度推导与代码验证》之CNN的前向传播和反向梯度推导

    在FNN(DNN)的前向传播,反向梯度推导以及代码验证中,我们不仅总结了FNN(DNN)这种神经网络结构的前向传播和反向梯度求导公式,还通过tensorflow的自动求微分工具验证了其准确性.在本篇章 ...

  6. Spine学习二 -播放Spine动画

    要想播放一个Spine动画,必须要在一个物体上绑定一个Spine播放的组件,这里暂时使用SkeletonAnimation组件. 然后就是编写动画的控制脚本. 这里提一个特性: [SpineAnima ...

  7. mysql5.7.29- windows64安装教程

    1.配置环境变量 MYSQL_HOME=D:\tools\mysql-5.7. path=%MYSQL_HOME%\bin 2.执行mysqld --initialize-insecure --use ...

  8. js+canvas画随机4位验证码

    啥都不说了,复制代码吧!!! <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  9. Ajax跨域解决方案大全

    题纲 关于跨域,有N种类型,本文只专注于ajax请求跨域(,ajax跨域只是属于浏览器"同源策略"中的一部分,其它的还有Cookie跨域iframe跨域,LocalStorage跨 ...

  10. 2018.12.30【NOIP提高组】模拟赛C组总结

    2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ...