【香橙派】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.pswp.cn/web/45498.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45498.shtml
英文地址,請注明出處:http://en.pswp.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…

B樹與B+樹的區別

B樹和B樹都是用于數據庫和文件系統的平衡樹數據結構&#xff0c;但它們有一些顯著的區別&#xff1a; 節點結構&#xff1a; B樹&#xff1a;每個節點存儲數據和指向子節點的指針。葉子節點也包含數據。 B樹&#xff1a;內部節點只存儲索引值&#xff0c;不存儲實際數據。所有…

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. 梯度消失梯度消失的概念梯度…

vue2中父組件向子組件傳值不更新視圖問題解決

1. 由于父組件更新了props里面的值, 但是子組件第一次接收后再修改沒有監聽到. 父組件修改值的時候使用this$set解決問題. 在 Vue 2 中&#xff0c;this.$set 通常用于更新數組中的特定元素。如果你想更新整個數組&#xff0c;可以直接賦值一個新的數組&#xff0c;或者你可以…

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…

Git---git本地配置commit_template提交模板,規范開發

如何在Git中配置Commit Template以規范開發 在軟件開發過程中&#xff0c;規范化的提交信息&#xff08;commit messages&#xff09;對于項目的可維護性和協作效率至關重要。Git 提供了配置 commit template 的功能&#xff0c;允許開發者預設一個模板&#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中去…

python xpath常用代碼功能

1、從文件中讀取html內容&#xff0c;然后xpath加載 with open(FilePath, r,encodingutf8) as file:html file.read() tree etree.HTML(html) 2、基本定位語法 / 從根節點開始選取 /html/div/span // 從任意節點開始選取 //input . 選取當前節點 .…

Web開發:<br>標簽的作用

br作用 介紹基本用法常見用途注意事項使用CSS替代 介紹 在Web開發中&#xff0c;<br> 標簽是一個用于插入換行符的HTML標簽。它是“break”的縮寫&#xff0c;常用于需要在文本中強制換行的地方。<br> 標簽是一個空標簽&#xff0c;這意味著它沒有結束標簽。 基本…

Python小工具—txt轉excel和word

1.txt轉excel import openpyxl# 創建一個新的Excel工作簿 wb = openpyxl.Workbook() sheet = wb.active# 題干和答案的標題 sheet[A1] = 題干 sheet[B1] = 答案# 打開txt文件并讀取內容 with open(xiti.txt, r, encoding=utf-8) as file:lines = file.readlines()# 初始變量 c…

VisualTreeHelper.GetChildrenCount

在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;VisualTreeHelper.GetChildrenCount 是一個非常有用的方法&#xff0c;用于獲取指定視覺對象的子元素數量。這對于遍歷復雜的用戶界面樹結構以進行查找、操作或檢查特定元素是非常有幫助的。 Visu…

【java深入學習第7章】用 Spring Boot 和 Java Mail 輕松實現郵件發送功能

引言 在現代的企業應用中&#xff0c;郵件發送是一個非常常見的功能。無論是用戶注冊后的驗證郵件&#xff0c;還是系統通知郵件&#xff0c;郵件服務都扮演著重要的角色。本文將介紹如何在Spring Boot項目中整合Java Mail&#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…

ubuntu服務器部署vue springboot前后端分離項目

上傳構建好的vue前端文件 vscode構建vue項目&#xff0c;會生成dist目錄 npm run build在服務器root目錄新建/projects/www目錄&#xff0c;把dist目錄下的所有文件&#xff0c;上傳到此目錄中 上傳ssl證書 上傳ssl證書到/projects目錄中 配置nginx 編輯 /etc/nginx/site…