在WSL2 Ubuntu中部署FastDFS服務的完整指南

在這里插入圖片描述

在WSL2 Ubuntu中部署FastDFS服務的完整指南

  • 📖 前言
  • 🛠? 環境準備
    • 1. 系統要求
    • 2. Ubuntu應用
  • 🚀 安裝服務
    • 1. 更新系統
    • 2. 安裝編譯依賴
    • 3. 下載源碼
    • 4. 編譯安裝
  • 🔧 配置服務
    • 1. 設置配置文件
    • 2. 創建數據目錄
    • 3. 配置Tracker服務
    • 4. 配置Storage服務
    • 5. 配置客戶端
  • 🚦 啟動服務
    • 1. 啟動Tracker
    • 2. 啟動Storage
    • 3. 驗證服務狀態
  • ? 功能驗證
    • 1. 新建并上傳測試文件
    • 2. 查看存儲文件
    • 3. 下載文件
  • 🌐 外部調用
    • 1. Tracker Server 的 IP 地址
    • 2. Java客戶端配置
    • 3. Java客戶端示例
  • 📝 結語

📖 前言

最近,Huazie 在開發文件服務器項目【FleaFS】,使用到了 FastDFS 來作為底層文件管理服務。為了方便本地測試,便部署了 FastDFS 的服務。

由于筆者的系統是 Windows 11 家庭版,因此本篇教程指南將指導大家在 WSL2 Ubuntu 子系統中直接安裝和配置 FastDFS 服務,無需 Docker虛擬機

方案特點

  • ? 原生 Linux 環境部署
  • ? 高性能低延遲
  • 🔄 與 Windows 文件系統無縫互通

🛠? 環境準備

1. 系統要求

組件要求
Windows版本Windows 10 2004+ 或 Windows 11
WSL版本WSL2
內存至少2GB空閑
磁盤空間至少5GB可用空間

如果本地的WSL版本較低,可以查看【官方文檔】進行手動更新。

2. Ubuntu應用

進入 Micorsoft 應用市場,搜索 Ubuntu,選擇 20.04 LTS 以上的版本安裝即可。

安裝好了,本地系統可搜索Ubuntu應用【筆者本地安裝的是 Ubuntu 24.04.2 LTS

🚀 安裝服務

1. 更新系統

sudo apt update && sudo apt upgrade -y

2. 安裝編譯依賴

sudo apt install -y git gcc make perl libperl-dev

3. 下載源碼

上述系統更新和編譯依賴安裝好了之后,我們就需要先后輸入下面命令來克隆fastdfs相關的項目:

git clone https://github.com/happyfish100/libfastcommon.git
git clone https://github.com/happyfish100/libserverframe.git
git clone https://github.com/happyfish100/fastdfs.git

如果上述命令執行后,提示未找到命令,則通過 sudo apt install git 安裝即可。多數情況下,WSLUbuntu 環境會默認配備 GitVim 等常用工具,以便于快速使用。

4. 編譯安裝

# 安裝libfastcommon
cd libfastcommon
sudo ./make.sh && sudo ./make.sh install# 安裝libserverframe
cd libserverframe
sudo ./make.sh && sudo ./make.sh install# 安裝FastDFS
cd ../fastdfs
sudo ./make.sh && sudo ./make.sh install

🔧 配置服務

1. 設置配置文件

在上述的 fastdfs 目錄中執行如下命令,用來設置配置文件(主要是將fastdfs相關的模板配置文件復制到/etc/fdfs中)。該腳本 不會覆蓋 現有的配置文件,請放心執行這個腳本。

sudo ./setup.sh /etc/fdfs

執行前:

執行后:

2. 創建數據目錄

sudo mkdir -p /data/fdfs/{client,tracker,storage,storage0}
sudo chmod -R 777 /data/fdfs

3. 配置Tracker服務

通過命令來編輯tracker.conf,如下:

sudo nano /etc/fdfs/tracker.conf

nanoLinux 系統中一個簡單易用的 命令行文本編輯器,適合快速編輯文件(尤其是配置文件或腳本)。有關它的詳細使用請自行搜索,這里不再贅述。

需要修改的關鍵配置如下:

port=22122
base_path=/data/fdfs/tracker

現在我們需要獲取 Tracker 服務器的 IP 地址

本篇我們的示例 Tracker 服務器在 WSLUbuntu
WSLUbuntu 終端里,使用 ip addr 命令來獲取網絡接口信息。

其中 inet 后面的 IP 地址(如 172.22.204.57)就是 WSLUbuntu 的實際被分配的 IP 地址,這個地址可作為 Tracker 服務器的 IP 地址。

4. 配置Storage服務

通過命令來編輯storage.conf,如下:

sudo nano /etc/fdfs/storage.conf

需要修改的關鍵配置如下:

group_name=group1
port=23000
tracker_server=172.22.204.57:22122
base_path=/data/fdfs/storage
store_path0=/data/fdfs/storage0

其中,tracker_server 就配置 3 中的 IP地址,端口 22122

5. 配置客戶端

通過命令來編輯client.conf,如下:

sudo nano /etc/fdfs/client.conf

需要修改的關鍵配置如下:

base_path=/data/fdfs/client
tracker_server=172.22.204.57:22122

tracker_server 同上修改即可。

🚦 啟動服務

1. 啟動Tracker

sudo fdfs_trackerd /etc/fdfs/tracker.conf restart

fdfs_trackerd :啟動 FastDFSTracker Server(跟蹤服務器) ,負責管理文件存儲的元數據(如 Storage 節點的狀態、文件映射關系)和調度客戶端請求。

2. 啟動Storage

sudo fdfs_storaged /etc/fdfs/storage.conf restart

fdfs_storaged :啟動 FastDFSStorage Server(存儲服務器) ,負責實際文件的存儲、同步和訪問。

3. 驗證服務狀態

檢查進程

ps -ef | grep fdfs

查看端口監聽

sudo netstat -tunlp | grep -E '22122|23000'

? 功能驗證

1. 新建并上傳測試文件

新建測試文件

echo "Hello WSL FastDFS,Huazie" | sudo tee /data/fdfs/test.txt

FastDFS 的文件上傳命令需要使用 fdfs_upload_file,如果不清楚具體使用,我們可以先通過如下命令查看:

fdfs_upload_file --help

上傳測試文件

sudo fdfs_upload_file /etc/fdfs/client.conf /data/fdfs/test.txt

上傳成功返回路徑:group1/M00/00/00/rBbMOWf5O7KAVMDWAAAAG3MLPyM018.txt

下面 Huazie 來將返回的路徑詳細分析下:

group1/M00/00/00/rBbMOWf5O7KAVMDWAAAAG3MLPyM018.txt
│      │   │  │  └── 文件名,基于文件內容哈希、時間戳等生成唯一標識
│      │   │  └── 二級子目錄(每級 256 個目錄,編號 00 到 FF)
│      │   └── 一級子目錄(每級 256 個目錄,編號 00 到 FF)
│      └── 存儲路徑標識符,對應配置文件中的 store_path0、store_path1 等
└── 文件所屬的存儲組(Group),支持多組擴展

2. 查看存儲文件

從配置服務小節的配置Storage服務中,我們可以看到存儲數據 store_path0 的配置路徑 /data/fdfs/storage0,因此上述上傳文件,可以通過如下命令查看存儲路徑:

ls -rtl /data/fdfs/storage0/data/00/00

如上圖中標紅的文件就是本地我們上傳的文件,可以看到文件名也和上面返回的內容對應上了。

3. 下載文件

FastDFS 的文件下載命令需要使用 fdfs_download_file,如果不清楚具體使用,我們可以先通過如下命令查看:

fdfs_download_file --help

sudo fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/rBbMOWf5O7KAVMDWAAAAG3MLPyM018.txt download.txt

cat download.txt

🌐 外部調用

1. Tracker Server 的 IP 地址

這里我們在上面配置 Tracker 服務時已經查看過,也可通過如下命令精確定位:

ip addr show eth0 | grep inet

2. Java客戶端配置

Huazie 這里就以 FleaFS 項目的配置【fdfs_client.conf】為例:

connect_timeout = 2
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 9090
http.anti_steal_token = no
http.secret_key = FastDFS1234567890tracker_server = 172.22.204.57:22122
#tracker_server = 172.22.204.58:22122## Whether to open the connection pool, if not, create a new connection every time
connection_pool.enabled = true
## max_count_per_entry: max connection count per host:port , 0 is not limit
connection_pool.max_count_per_entry = 500
## connections whose the idle time exceeds this time will be closed, unit: second, default value is 3600
connection_pool.max_idle_time = 3600
## Maximum waiting time when the maximum number of connections is reached, unit: millisecond, default value is 1000
connection_pool.max_wait_time_in_ms = 1000

3. Java客戶端示例

這里可查看 FleaFS 項目的 FastDFS 客戶端測試類 FastDFSClientTest,該類演示了上傳,下載,刪除文件等功能,有需要的可以參考一下。

public class FastDFSClientTest {private static final Logger LOGGER = LoggerFactory.getLogger(FastDFSClientTest.class);@Testpublic void uploadFile() {InputStream inputStream = IOUtils.getInputStreamFromClassPath("file/綠色田園風光.jpg");String fileName = "綠色田園風光.jpg";String fileId = FastDFSClient.uploadFile(inputStream, fileName);LOGGER.debug("FILE_ID : {}", fileId);}@Testpublic void downloadFile() throws Exception {InputStream inputStream = FastDFSClient.downloadFile("group1/M00/00/00/rBbMOWfqU3CAH_cdAARILk7ifpI048.jpg");File file = new File("E:\\綠色.jpg");FileUtils.copyInputStreamToFile(inputStream, file);}@Testpublic void deleteFile() {FastDFSClient.deleteFile("group1/M00/00/00/rBbMOWfqU3CAH_cdAARILk7ifpI048.jpg");}}

📝 結語

通過本篇的指導,相信大家已經可以成功在本地系統的 WSL2 Ubuntu 應用中部署原生的 FastDFS 文件存儲服務。

如有其他問題,歡迎大家在評論區交流討論!

FastDFS 感興趣的朋友,也可以研究研究 FastDFS官方文檔 。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/97050.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/97050.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/97050.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新手向:網絡編程完全指南

1. 引言:什么是網絡編程?網絡編程(Network Programming)是指利用計算機網絡實現程序間通信的技術。它構建在計算機網絡協議基礎上,通過編程實現不同設備間的數據交換與資源共享。從底層協議實現到高層應用開發&#xf…

阿里云——云存儲與數據庫服務

云存儲與數據庫服務 數據是數字時代的新石油,而存儲與數據庫服務就是保存和提煉這些石油的“油庫與煉油廠”。阿里云提供了從對象、塊、文件存儲到關系型、NoSQL、數據倉庫的全方位數據服務。本章將幫你構建一套清晰的數據存儲選型框架,并掌握核心服務的…

瀏覽器網頁路徑掃描器(腳本)

使用網頁路徑掃描器可以掃描網頁的路徑,一些工具如ffuf為在命令行上操作,比較不便,而其他資源不好找到 Website path scanner(Script-tampermonkey) 腳本發布在GitHub,本文章也關聯文件資源 GitHub:Website path scanner(Script-…

實戰原型模式案例

作者:小凱 分享、讓自己和他人都能有所收獲!😄 一、前言 老板你加錢我的代碼能飛 程序員這份工作里有兩種人;一類是熱愛喜歡的、一類是僅當成工作的。而喜歡代碼編程的這部分人會極其主動學習去豐富自己的羽翼,也非常喜…

微信小程序餐飲掃碼點餐小程序堂食外賣桌臺自助下單源碼

功能說明:商家助手APP、接單更方便前端頁面模版隨意挑選,可diy精裝設計線下買單餐桌點餐快速下單會員管理訂單管理優惠券核銷叫號取餐排隊叫號商品管理桌位管理數據統計售后訂單配送設置推廣碼硬件設備一、技術架構:PHPUniApp構建高性價比系統…

Linux應用軟件編程---網絡編程(TCP并發服務器構建:[ 多進程、多線程、select ])

TCP并發服務器構建一、服務器單循環服務器:服務端同一時刻只能處理一個客戶端的任務(TCP)并發服務器:服務端同一時刻可以處理多個客戶端的任務(UDP)二、TCP服務端并發模型1、多進程進程資源開銷大&#xff…

重構審計體驗!批量生成報表項目底稿的憑證檢查表

在審計工作中,我們通過序時賬或其他審計軟件篩選導出的憑證列表,要如何快速分發給各個報表項目底稿的憑證檢查表呢? “TB工具箱2025”正式上線“批量生成憑證表”的功能,通過一些巧妙的設計,使其具備高度的通用性&…

【c++進階系列】:萬字詳解二叉搜索樹(附源碼實現)

🔥 本文專欄:c 🌸作者主頁:努力努力再努力wz 💪 今日博客勵志語錄: 你可以走得慢,但別回頭 1.概念 二叉搜索樹,從其名字我們就能知道該數據結構是一個特殊的二叉樹,而二…

通過web服務做橫向移動

環境配置邊緣主機(win10):192.168.237.140 10.10.90.128內網主機(win7):10.10.90.129 web服務 -- upload-labs攻擊機:vps(120.26.114.196)windows10windows7假設已經拿下邊緣主機win10,vshell上線ipconfig查…

把CentOS 7默認yum源改成騰訊云鏡像

步驟計劃: 備份原有CentOS-Base.repo文件,防止配置出錯可恢復 下載騰訊云提供的CentOS 7鏡像源配置文件(對應CentOS-Base.repo) 清理并生成yum緩存,使新源生效 具體命令 # 備份原有源 sudo mv /etc/yum.repos.d/C…

歐盟《人工智能法案》生效一年主要實施進展概覽(二)

文章目錄前言三、《關于禁止的人工智能實踐指南》1. 整體適用2. 禁止的人工智能系統具體介紹(1)有害操縱和欺騙類及對脆弱性的有害利用類(2)社會評分類(3)個人刑事犯罪風險評估和預測類(4&#…

私域電商新范式:開源AI智能名片鏈動2+1模式S2B2C商城小程序賦能傳統行業流量轉化

摘要:本文聚焦私域電商領域,指出其并非僅局限于快消品等傳統電商行業,多數傳統行業同樣面臨私域流量利用難題。傳統行業手握私域流量或優質流量入口,卻不知如何有效轉化,陷入流量焦慮。在此背景下,開源AI智…

Axios 整理常用形式及涉及的參數

一、axios get請求 //形如 axios.get(url[, config]).then(response > {// 處理響應}).catch(error > {// 處理錯誤}); //無 config 的情況下, axios.get(https://api.example.com/data).then(response > {// 處理響應}) .catch(error > {// 處理錯誤})…

深度學習---卷積神經網絡CNN

卷積神經網絡CNN(Convolutional Neural Networks)一、圖像原理圖像在計算機中是一堆按順序排列的數字,數值為0到255。0表示最暗,255表示最亮。上圖是只有黑白顏色的灰度圖,而更普遍的圖片表達方式是RGB顏色模型&#x…

日志輸出觸發的死鎖問題排查記錄

現象描述 錯誤日志: Found one Java-level deadlock:"http-nio-8083-exec-106":waiting for ownable synchronizer 0x00000005cbfa6b90, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),which is held by "http-nio-8083-exec-10" …

UNIX網絡編程筆記:高級套接字編程20-25

廣播通信:局域網內的高效信息傳播 在局域網通信場景中,廣播是一種高效的一對多信息傳播方式 。它無需為每個接收者單獨建立連接,能一次性將消息送達網段內所有目標,廣泛應用于服務發現、網絡通知等場景。以下從基礎原理到實踐應用…

React Native核心技術深度解析_Trip Footprints

React Native 框架詳細技術解析 作為前端開發者,理解React Native需要從Web開發的角度出發,了解其獨特之處和技術實現。 🎯 React Native 核心概念 什么是React Native? React Native是Facebook開發的跨平臺移動應用開發框架&…

預算管理的“數字圍欄“:如何用實時預警終結行政費用超支

作為公司行政主管,每年最讓我忐忑的時刻不是年終總結,而是季度財務分析會。當CFO皺著眉頭指出行政費用又超支時,那種如坐針氈的感覺至今難忘。行政預算就像一匹難以馴服的野馬,明明已經嚴加管控,卻總在年底給我們"…

NTLM哈希深度解析:從原理到安全實踐

NTLM哈希深度解析:從原理到安全實踐作為一名白帽子黑客,深入理解NTLM哈希機制對保障企業網絡安全至關重要。1. NTLM哈希概述 NTLM(New Technology LAN Manager)是微軟推出的一套身份驗證協議套件,用于在Windows網絡中驗…

4-3.Python 數據容器 - 集合 set(集合 set 概述、集合的定義、集合的遍歷、集合的常用方法)

集合 set 概述集合用于存儲一系列元素集合存儲的元素是無序的,不支持索引集合存儲的元素是不可以重復的集合存儲的元素可以是不同類型的,例如、數字、字符串、甚至是其他集合集合是可變的,在程序運行時可以添加、刪除其中的元素一、集合的定義…