【香橙派】Orange pi AIpro开发板使用之一键部署springboot项目

前言

        最近有幸收到一份新款 OrangePi AIpro 开发板,之前手里也捣鼓过一些板子,这次尝试从零开始部署一个简单的后端服务。OrangePi AIpro 采用昇腾AI技术路线,具体为4核64位处理器+AI处理器,可配16GB内存容量,各种复杂应用都能流畅运行,板载1000Mbps以太网,传输更快更稳定,配置了各种丰富的接口,应用场景广泛。

开发板简介

  1. OrangePi AIpro 开发板配备4核64位处理器+ AI处理器, 8GB/16GB的LPDDR4X内存,足以满足大部分的AI推理应用场景和其他大内存的产品应用场景,速度更快,功耗更低。
  2. 支持双HDMI视频输出,支持双4K高清输出,支持一个MIPI DSI屏输出,支持两个MIPI接口摄像头输入,足够满足在有视频源输入场景的需求。
  3. 板载支持1000Mbps以太网,拥有wifi 2.5G/5G和有线两种接入方式,网络连接更大、更稳定,传输更高速。
  4. 板载M.2接口,支持接入SATA/NVMe SSD 2280硬盘,增加海量数据存储空间,满足快速读写和大容量存储的需求。
  5. 汇聚了MIPI DSI、MIPI CSI、USB 3.0、Type-C 3.0、HDMI 2.0、千兆以太网、支持SATA/NVMe SSD 2280的M.2插槽等各类流行的接口,可应用于外部设备控制和扩展。

配图:

硬件规格参数
OrangePi AIpro 开发板和斐讯N1盒子(历史遗留产物)的大小对比
开发板详细图

开发版资料

        在体验的过程中, OrangePi AIpro 开发板的资料是非常全面,这也是我完全没有想到的,这也让我在后面的配置中少走了很多弯路。不过这里也稍微提一点建议,可以将资料分发在不同的平台进行下载,毕竟“云盘限速”很烦人。

        开发版资料:访问链接

官方资料截图

系统安装

1、前期准备

必需品

        Orange Ai Pro开发版一块、TF卡(建议32GB或以上)、TF读卡器、一台电脑、有线网络或WIFI

非必需品

        HDMI显示器连接线、串口线、显示器、外接鼠标、外接键盘等

电脑所需安装软件

        balenaEtcher(烧录镜像软件)、MobaXterm(或其他远程软件,如xShell等)

镜像准备

        下载官方镜像中的 ubuntu 镜像 

2、烧录镜像

        将准备的TF卡插入TF读卡器,并插入准备好的电脑中,确认TF卡中的数据已经备份(数据无价);

        在电脑打开 balenaEtcher 软件,将准备的镜像烧录到TF卡中,如图1-2-1。建议使用 Portable 版本不需要安装,打开即可使用。烧录过程中出现了如图1-2-2报错,我是通过 7zip 解压后重新烧录,可以成功。

图1-2-1

        

图1-2-2

3、配置TF卡启动

        确认 OrangePi AIpro 开发板启动设置是否配置为从 TF 卡启动,如果不是,得按照文档拨动开关到从 TF 卡启动的配置下(拨动开关都拨到右边)。拨动开关位置如图1-3-1,拨动开关对应说明如图1-3-2。注意:切换拨码开关后,必须插拔电源重新上下电才能生效。开发板的复位按键是不会使新的拨动开关配置生效。

图1-3-1
图1-3-2

4、上电启动

        将TF卡插到 OrangePi AIpro 开发板上,如图1-4-1,有条件可接入 HDMI 显示器,重新下上电。等待1分钟左右,屏幕上显示系统登录页面,如图1-4-2。登录的账号为HwHiAiUser,密码为Mind@123。

图1-4-1
图1-4-2

5、远程连接

        在 OrangePi AIpro 开发板上输入 ifconfig 获取当前设备ip或者在路由器上获取  OrangePi AIpro 开发板的ip地址。
        打开 MobaXterm 或其他ssh工具(如xShell等),在工具中输入ip地址、端口号、用户名,点击连接,端口号默认22,如图1-5-1。输入密码后即可连接上,注意输入密码时不会显示,直接输入后回车即可。

图1-5-1

6、更新配置

        在命令行中执行以下命令切换root账号

sudo -i

        在命令行执行以下命令创建对应文件夹备用

mkdir -p /data/software
mkdir -p /data/download
mkdir -p /data/project

        在命令行执行以下命令更新 apt 包,确保后续能下载更新包

apt update

环境配置

1、安装运维工具

        进入下载文件夹/data/download

cd /data/download

        输入以下命令运行安装运维工具 1panel,参考在线文档:链接

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

2、安装JDK和maven环境

        在命令行执行以下命令安装jdk17和maven

apt install openjdk-17-jdk
apt install maven

        系统默认存在git环境,可以不用安装

3、编写springboot测试用例

        编写 springboot 项目,在项目中编写一个接口,返回字符串信息。代码如下:

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/test")
public class TestController {@RequestMapping(value = "/get",method = RequestMethod.GET)public String get(){return "Hello World";}}

        或者直接使用项目地址:gitee地址

4、一键发布

         通过ip和配置的端口进入运维页面,登录配置的用户名和密码。登录后在左侧菜单中点击创建计划任务,如图2-4-1

图2-4-1

        创建 Shell 脚本的任务,脚本内容中输入以下脚本,如图2-4-2

#发布分支或tag
projectTag=master
#发布jar包版本
projectVersion=0.0.1-SNAPSHOT
#git名称
gitName=springboot
#系统名称
projectName=springboot
#基本路径
basePath=/data/project
#git仓库token
gitToken=token
#git仓库地址
git=gitee.com/hufewzk/springboot.git
gitPathName=git
dockerPathName=docker
#系统clone路径
projectPath=${basePath}/${projectName}
#docker发布系统路径
dockerPath=${projectPath}/${dockerPathName}/${projectName}
# 移除项目文件夹
if [ -d "${projectPath}/" ];thenrm -rf ${projectPath}/
elseecho '不存在'${projectPath}'项目文件夹'
fi
#创建项目文件夹
mkdir -p ${projectPath}/${dockerPathName}/${projectName}
cd ${projectPath}
git clone --branch ${projectTag} https://oauth2:${gitToken}@${git}
mv ${gitName} ${gitPathName}
cd ${gitPathName}
mvn clean package -Dmaven.test.skip=true
mv ${projectPath}/${gitPathName}/target/${gitName}-${projectVersion}.jar /${projectPath}/${dockerPathName}/${projectName}.jar
mv ${projectPath}/${gitPathName}/workWXbin/linux /${projectPath}/${dockerPathName}/linux
mv ${projectPath}/${gitPathName}/Dockerfile ${projectPath}/${dockerPathName}/Dockerfile
mv ${projectPath}/${gitPathName}/docker-compose.yml ${dockerPath}/docker-compose.yml
cd ${projectPath}/${dockerPathName}
docker stop ${projectName}
docker rm ${projectName}
docker rmi ${projectName}/${projectName}:latest
docker rmi $(docker images -f "dangling=true" -q)
docker build --rm -t ${projectName}/${projectName}:latest .
cd ${dockerPath}
/usr/local/bin/docker-compose up -d
2-4-2

        点击执行,在报告中显示输出信息,没有报错则发布成功。在容器中也能看到发布的 springboot 项目

5、测试接口

        在电脑浏览器中输入 http://{ip}:8081/test/get 访问,浏览器打印如下,则发布成功,如图2-5-1

图2-5-1

使用测评

        这款 OrangePi AIpro 开发板除了能满足普通应用程序的需求,如:自开发项目、Home Assistant、Halo等,也能部署 AI 项目,有强大 AI 处理器的性能支撑,如:Ollama、RAGFlow、官方示例等。它拥有的丰富的硬件接口、便捷的开发环境和完整的文档支撑,能应对不同的使用场景。其功耗低,运行稳定,搭一个 nas 也是一个不错的选择。

        资源消耗和运行时间如图3-1-1、图3-1-2:

图3-1-1
图3-1-2

结论

        OrangePi AIpro 开发板满足了我日常开发和生活使用,性价比高,完善的文档支撑和丰富的样例,会让使用者少走很多弯路。建议的话,还是希望文档等资料能够提供不同途径的下载方式,如阿里云盘、夸克云盘等;还有在扇热风扇的声音上还能够减少一点。后续这块板子我也将用来发布 Home Assistant ,将智能家居设备联动起来,期待它能有更好的表现。

        最后期待国产AI开发板能够越做越好,在未来的项目中能够发挥越来越重要的作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字化赋能,加油小程序让出行更便捷高效

在快节奏的现代生活中,每一次加油不仅是车辆续航的必要步骤,也成为了人们日常生活中不可或缺的一环。随着科技的飞速发展,传统加油模式正逐步向智能化、便捷化转型,其中,加油小程序作为这股浪潮中的佼佼者,…

el-date-picker手动输入日期,通过设置开始时间和阶段自动填写结束时间

需求&#xff1a;根据开始时间&#xff0c;通过填写阶段时长&#xff0c;自动填写结束时间&#xff0c;同时开始时间和节数时间可以手动输入 代码如下&#xff1a; <el-form ref"ruleForm2" :rules"rules2" :model"formData" inline label-po…

yolov5 上手

0 介绍 YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型&#xff0c;由华盛顿大学的约瑟夫-雷德蒙&#xff08;Joseph Redmon&#xff09;和阿里-法哈迪&#xff08;Ali Farhadi&#xff09;开发。YOLO 于 2015 年推出&#xff0c;因其高速度和高精确度而迅速受到…

人工智能算法工程师(中级)课程13-神经网络的优化与设计之梯度问题及优化与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程13-神经网络的优化与设计之梯度问题及优化与代码详解。 文章目录 一、引言二、梯度问题1. 梯度爆炸梯度爆炸的概念梯度爆炸的原因梯度爆炸的解决方案 2. 梯度消失梯度消失的概念梯度…

powerdesigner导出表数据库设计文档excel

1、连接数据库&#xff0c;导出表结构的sql脚本 2、打开powerdesigner&#xff0c;生成项目空间表 sql脚本用第一步的脚本 3、用script脚本生成excel 脚本信息 Option Explicit Dim rowsNum rowsNum 0 -------------------------------------------------------------…

CV12_ONNX转RKNN模型(谛听盒子)

暂时简单整理一下&#xff1a; 1.在边缘设备上配置相关环境。 2.配置完成后&#xff0c;获取模型中间的输入输出结果&#xff0c;保存为npy格式。 3.将onnx格式的模型&#xff0c;以及中间输入输出文件传送到边缘设备上。 4.编写一个python文件用于转换模型格式&#xff0c…

[iOS]内存分区

[iOS]内存分区 文章目录 [iOS]内存分区五大分区栈区堆区全局区常量区代码区验证内存使用注意事项总结 函数栈堆栈溢出栈的作用 参考博客 在iOS中&#xff0c;内存主要分为栈区、堆区、全局区、常量区、代码区五大区域 还记得OC是C的超类 所以C的内存分区也是一样的 iOS系统中&a…

51单片机STC89C52RC——19.1 SG90舵机(伺服电机)

目的/效果 独立按键K1&#xff0c;K2 实现加舵机减角度增减&#xff0c;LCD1602显示舵机转角度数&#xff08;上电默认90度&#xff09; 一&#xff0c;STC单片机模块 二&#xff0c;SG90舵机 2.1 简介 舵机只是我们通俗的叫法&#xff0c;它的本质是一个伺服电机&#xf…

react 案例的实现

先看一下如下效果 效果 这是一个 简单的 效果 左边是用户名进行登录 右边是一个答题还有遮罩 相信大家还有刚刚创建好的 react 脚手架了&#xff0c;没有的话可以运行以下命令 creact-react-app 项目名称 把项目名称四个字 改成 自己想要的一个名字 最好是英文的在 App.js中去…

Web开发:<br>标签的作用

br作用 介绍基本用法常见用途注意事项使用CSS替代 介绍 在Web开发中&#xff0c;<br> 标签是一个用于插入换行符的HTML标签。它是“break”的缩写&#xff0c;常用于需要在文本中强制换行的地方。<br> 标签是一个空标签&#xff0c;这意味着它没有结束标签。 基本…

【Ubuntu】安装使用pyenv - Python版本管理

当我们在Ubuntu上使用Python进行开发的时候&#xff0c;可能会遇到版本不兼容的问题&#xff0c;当然你可以选择使用apt的方式安装不同版本的python环境 但是存在一定的问题&#xff1a;安装不同版本的Python通常不会改变默认的python3命令指向的版本&#xff0c;而且就算你进行…

分布式对象存储minio

本教程minio 版本&#xff1a;RELEASE.2021-07-*及以上 1. 分布式文件系统应用场景 互联网海量非结构化数据的存储需求 电商网站&#xff1a;海量商品图片视频网站&#xff1a;海量视频文件网盘 : 海量文件社交网站&#xff1a;海量图片 1.1 Minio介绍 MinIO 是一个基于Ap…

区块链与云计算的融合:新时代数据安全的挑战与机遇

随着信息技术的迅猛发展&#xff0c;云计算和区块链技术作为两大前沿技术在各自领域内展示出了巨大的潜力。而它们的结合&#xff0c;即区块链与云计算的融合&#xff0c;正在成为数据安全领域的新趋势。本文将探讨这一融合对数据安全带来的挑战和机遇&#xff0c;以及其在企业…

平替ChatGPT的多模态智能体来了

在人工智能领域&#xff0c;多模态技术的融合与应用已成为推动技术革新的关键。今天&#xff0c;我们用智匠AI实现了完全由国产模型驱动的多模态智能体——智酱v0.1.0&#xff0c;它不仅能够媲美ChatGPT的多模态能力&#xff0c;更在联网搜索、图片识别、画图及图表生成等方面展…

redis原理之底层数据结构(二)-压缩列表

1.绪论 压缩列表是redis最底层的结构之一&#xff0c;比如redis中的hash&#xff0c;list在某些场景下使用的都是压缩列表。接下来就让我们看看压缩列表结构究竟是怎样的。 2.ziplist 2.1 ziplist的组成 在低版本中压缩列表是由ziplist实现的&#xff0c;我们来看看他的结构…

大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】

大数据面试SQL题复习思路一网打尽&#xff01;(文档见评论区)_哔哩哔哩_bilibiliHive SQL 大厂必考常用窗口函数及相关面试题 大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】大数据面试SQL题-笔记02【...】 目录 01、力扣网-sql题 1、高频SQL50题&#xff08…

数据结构——hash(hashmap源码探究)

hash是什么&#xff1f; hash也称为散列&#xff0c;就是把任意长度的输入&#xff0c;通过散列算法&#xff0c;变成固定长度的输出&#xff0c;这个输出值就是散列值。 举例来说明一下什么是hash&#xff1a; 假设我们要把1~12存入到一个大小是5的hash表中&#xff0c;我们…

矿产资源潜力预测不确定性评价

研究目的&#xff1a; 不确定性评估&#xff1a; 到底什么叫不确定性&#xff0c;简单来说就是某区域内的矿产资源量&#xff0c;并不确定到底有多少&#xff0c;你需要给出一个评估或者分布。 研究方法&#xff1a; 1.以模糊集来表示某些量&#xff1a; 关于什么是模糊集&am…

信通院全景图发布 比瓴科技领跑软件供应链安全,多领域覆盖数字安全服务

近日&#xff0c;中国信息通信研究院在2024全球数字经济大会—数字安全生态建设专题论坛正式发布首期《数字安全护航技术能力全景图》&#xff08;以下简称全景图&#xff09;。 比瓴科技入选软件供应链安全赛道“开发流程安全管控、交互式安全测试、静态安全测试、软件成分分…

智慧水利:迈向水资源管理的新时代,结合物联网、云计算等先进技术,阐述智慧水利解决方案在提升水灾害防控能力、优化水资源配置中的关键作用

本文关键词&#xff1a;智慧水利、智慧水利工程、智慧水利发展前景、智慧水利技术、智慧水利信息化系统、智慧水利解决方案、数字水利和智慧水利、数字水利工程、数字水利建设、数字水利概念、人水和协、智慧水库、智慧水库管理平台、智慧水库建设方案、智慧水库解决方案、智慧…