器部署指南:以 Google Drive 作為云存儲(chǔ)后端(upspinserver-drive 搭建實(shí)戰(zhàn)))
后端密碼學(xué)【免費(fèi)下載鏈接】upspinUpspin: A framework for naming everyones everything.項(xiàng)目地址https://gitcode.com/gh_mirrors/up/upspin點(diǎn)擊查看免費(fèi)下載導(dǎo)讀本文是 doc/server_setup.mdupspinserver通用部署手冊(cè)的配套專題專門講解如何將 Upspin 的 StoreServer 存儲(chǔ)層切換到 Google Drive使用戶數(shù)據(jù)不再保存在服務(wù)器本地磁盤而是存放在你的 Google Drive 空間內(nèi)。讀完本文你將掌握構(gòu)建upspinserver-drive與upspin-setupstorage-drive兩個(gè)變體二進(jìn)制、通過 OAuth2 授權(quán)碼將服務(wù)器與 Google Drive 賬戶綁定、以及如何銜接upspin setupserver完成整個(gè)部署閉環(huán)同時(shí)你會(huì)從源碼層面理解 Upspin 的存儲(chǔ)后端抽象機(jī)制cloud/storage注冊(cè)與撥號(hào)模型。定位與前置條件這是server_setup主流程的存儲(chǔ)環(huán)節(jié)本指南是 Setting upupspinserver手冊(cè)的一部分請(qǐng)先閱讀該文檔。在 Upspin 的部署流程中搭建一個(gè)完整安裝需要依次經(jīng)歷五個(gè)步驟signup為管理員賬戶注冊(cè)公共密鑰configure your domain配置域名并為服務(wù)器創(chuàng)建 Upspin 用戶setup storage即本文場(chǎng)景若選擇云存儲(chǔ)則配置云端存儲(chǔ)服務(wù)deploy將upspinserver部署到 Linux 服務(wù)器configure運(yùn)行upspin setupserver完成服務(wù)器配置。其中除了部署之外每一步都有對(duì)應(yīng)的upspin子命令輔助完成。按 setupstorage.go 中幫助文本的定義整個(gè)流程是setupdomain第一步、setupstorage第二步、setupserver最終步——本文要做的正是中間的第二步并且是針對(duì)Google Drive這個(gè)特定存儲(chǔ)位置的變體。在動(dòng)手之前你需要備好主文檔 Prerequisites 中要求的三個(gè)值一個(gè)可添加 DNS 記錄的互聯(lián)網(wǎng)域名下文沿用文檔示例example.com你的 Upspin 用戶名一個(gè)郵箱地址例如yougmail.com它將成為安裝的管理員upspinserver將要運(yùn)行的主機(jī)名例如upspin.example.com。此外請(qǐng)注意主文檔中的命令約定local$前綴表示在本地機(jī)器執(zhí)行server%前綴表示在服務(wù)器上執(zhí)行。構(gòu)建upspinserver-drive與upspin-setupstorage-driveUpspin 有多種upspinserver變體每種變體對(duì)應(yīng)一種存儲(chǔ)位置服務(wù)器本地磁盤或某個(gè)云存儲(chǔ)提供商。使用云存儲(chǔ)的二進(jìn)制都帶有一個(gè)標(biāo)識(shí)提供商的后綴例如 GCP 對(duì)應(yīng)upspinserver-gcp這些二進(jìn)制也存放在各自獨(dú)立的倉(cāng)庫(kù)中。Google Drive 對(duì)應(yīng)的就是upspinserver-drive與upspin-setupstorage-drive存放在drive.upspin.io倉(cāng)庫(kù)。要使用 Google Drive 存儲(chǔ)先獲取drive.upspin.io倉(cāng)庫(kù)并安裝兩個(gè)變體命令local$ go get drive.upspin.io/cmd/...該命令會(huì)同時(shí)安裝upspin-setupstorage-drive和upspinserver-drive兩個(gè)命令。從倉(cāng)庫(kù)源碼可以理解為什么需要變體通用版 cmd/upspinserver/main.go 只通過空導(dǎo)入_ upspin.io/cloud/storage/disk注冊(cè)了本地磁盤后端而upspinserver本身是 DirServer 與 StoreServer 的組合體詳見 serverutil/upspinserver/main.go。drive 變體則在通用實(shí)現(xiàn)之上額外注冊(cè) Google Drive 存儲(chǔ)后端從而讓 StoreServer 把數(shù)據(jù)對(duì)象寫入你的 Drive 空間而不是$HOME/upspin/storage。倉(cāng)庫(kù)的 serverutil/frontend/frontend.go 中也保留了drive.upspin.io: ...的映射記錄印證該倉(cāng)庫(kù)確實(shí)是獨(dú)立的 drive 實(shí)現(xiàn)。另外按照主文檔 Set up storage 的說明你需要為服務(wù)器構(gòu)建對(duì)應(yīng)操作系統(tǒng)與處理器架構(gòu)的二進(jìn)制主文檔假設(shè) 64 位 Linux即local$ GOOSlinux GOARCHamd64 go build drive 倉(cāng)庫(kù)中的 upspinserver 入口包對(duì)比如果選擇服務(wù)器本地磁盤則構(gòu)建upspin.io/cmd/upspinserver數(shù)據(jù)默認(rèn)存于$HOME/upspin/storage但本地磁盤方案在磁盤故障時(shí)所有 Upspin 數(shù)據(jù)都會(huì)丟失。使用 Google Drive 這類云存儲(chǔ)則可以規(guī)避單機(jī)磁盤損壞的風(fēng)險(xiǎn)。授權(quán)你的 Google Drive 賬戶OAuth2 授權(quán)碼流程為了讓 Upspin 服務(wù)器能在你的 Google Drive 空間中存儲(chǔ)數(shù)據(jù)需要向它提供OAuth2 授權(quán)碼以完成賬戶授權(quán)。運(yùn)行以下命令并把example.com替換為你的域名local$ upspin setupstorage-drive -domainexample.com命令執(zhí)行后會(huì)輸出一個(gè) URL 供你訪問。操作流程為在瀏覽器中打開該 URL在 Google 頁(yè)面中授權(quán) Upspin 訪問你的 Drive復(fù)制頁(yè)面顯示的授權(quán)碼將授權(quán)碼粘貼到運(yùn)行命令的終端窗口中按回車。授權(quán)成功后終端應(yīng)顯示如下提示You should now deploy the upspinserver binary and run upspin setupserver.這句話說明存儲(chǔ)環(huán)節(jié)配置完成可以進(jìn)入主文檔的部署deploy與配置configure階段了。這條命令在底層做了什么setupstorage系列命令的實(shí)際作用可以從倉(cāng)庫(kù)內(nèi)同名實(shí)現(xiàn)推斷。雖然 drive 專屬代碼位于外部倉(cāng)庫(kù)drive.upspin.io但本地磁盤版本 cmd/upspin-setupstorage/setupstorage.go 揭示了通用機(jī)制命令讀取-where默認(rèn)$HOME/upspin/deploy與-domain拼出的部署目錄并通過ReadServerConfig讀取該目錄下的serverconfig.jsonJSON 編碼的 ServerConfig隨后寫入StoreConfig字段本地版寫入backendDisk、basePath...并用WriteServerConfig持久化最后在標(biāo)準(zhǔn)錯(cuò)誤輸出提示下一步操作??梢酝茢鄒pspin setupstorage-drive -domainexample.com所做的就是在完成 OAuth2 授權(quán)后把 Drive 后端所需的選項(xiàng)后端類型、授權(quán)憑據(jù)等寫入serverconfig.json的StoreConfig字段——這正是隨后upspin setupserver需要連同密鑰一起推送到服務(wù)器、供 StoreServer 撥號(hào)使用的關(guān)鍵配置見 subcmd/server.go 中SetupServerFiles列出的文件清單。數(shù)據(jù)存放位置與管理關(guān)于數(shù)據(jù)管理文檔給出兩條重要說明所有 Upspin 數(shù)據(jù)都存放在 Google Drive 的 Application Data 文件夾中與你的常規(guī)個(gè)人文件完全隔離。這意味著用戶在你的 Drive 主界面中看不到這些數(shù)據(jù)它們不會(huì)占用我的文件視圖也不會(huì)被誤刪或混入日常同步。你可以通過 Google Drive 的管理應(yīng)用Manage Apps頁(yè)面查看并管理 Upspin 所占用的 Drive 存儲(chǔ)空間例如在需要清理或撤銷訪問權(quán)限時(shí)進(jìn)行操作。這兩點(diǎn)與cloud/storage的存儲(chǔ)抽象是一脈相承的Upspin 只把存儲(chǔ)后端當(dāng)作一個(gè)按引用ref存取字節(jié)塊的接口來使用后端到底落在本地磁盤還是 Drive 的隱藏應(yīng)用數(shù)據(jù)區(qū)對(duì)上層邏輯完全透明。銜接主流程部署與配置服務(wù)器授權(quán)完成后回到主文檔 Set up a server and deploy 繼續(xù)部署二進(jìn)制把upspinserver-drive部署到服務(wù)器并配置為開機(jī)自啟、監(jiān)聽80與443端口。任何有公網(wǎng) IP、能運(yùn)行 Go 程序的機(jī)器均可Linux、macOS、Windows 等主文檔建議個(gè)人安裝至少 1 核 CPU、2GB 內(nèi)存、20GB 磁盤空間同時(shí)為upspin.example.com創(chuàng)建指向服務(wù)器 IP 的 DNSA記錄。測(cè)試連通性此時(shí)服務(wù)器處于setup mode啟動(dòng)日志會(huì)出現(xiàn)Configuration file not found. Running in setup mode.用瀏覽器訪問https://upspin.example.com/應(yīng)看到Unconfigured Upspin Server字樣。運(yùn)行upspin setupserverlocal$ upspin setupserver -domainexample.com -hostupspin.example.com這一步實(shí)現(xiàn)在 cmd/upspin/setupserver.go會(huì)把setupdomain創(chuàng)建的服務(wù)器用戶注冊(cè)到公共密鑰服務(wù)器將$where/$domain下的Writers、public.upspinkey、secret.upspinkey、serverconfig.json通過 HTTPSPOST到服務(wù)器的/setupserver端點(diǎn)重啟服務(wù)器并為管理員用戶創(chuàng)建根目錄。同時(shí)它會(huì)創(chuàng)建 StoreServer 的Writers組文件upspinexample.com/Group/Writers只有列表中的用戶才被允許向該服務(wù)器寫入數(shù)據(jù)——如需擴(kuò)容可參閱upspin setupwriters。驗(yàn)證讀寫local$ echo Hello, Upspin | upspin put yougmail.com/hello local$ upspin get yougmail.com/hello Hello, Upspin能讀到回顯即表示整個(gè)upspinserver含 Google Drive 存儲(chǔ)后端已成功打通。源碼視角存儲(chǔ)后端是如何被插拔的理解本專題背后的插件化機(jī)制對(duì)排查問題或日后切換后端都很有幫助。核心位于 cloud/storage/storage.goStorage接口只要求四個(gè)方法LinkBase返回引用下載的基礎(chǔ) URL不支持直鏈的后端返回upspin.ErrNotSupported、Download按引用取字節(jié)、Put按引用存字節(jié)、Delete按引用刪除且實(shí)現(xiàn)必須支持并發(fā)安全Lister接口可選提供帶分頁(yè)令牌的List供 StoreServer 枚舉已有引用Register(name, fn)注冊(cè)機(jī)制每個(gè)后端Disk、GCP、Drive 等在自己的init中調(diào)用storage.Register注冊(cè)構(gòu)造函數(shù)例如本地磁盤后端在 cloud/storage/disk/disk.go 注冊(cè)為DiskDial(name, opts...)撥號(hào)機(jī)制按名稱查找已注冊(cè)構(gòu)造器并通過WithOptions(k1v1,k2v2)或WithKeyValue傳入后端特有選項(xiàng)——drive 變體的upspin-setupstorage-drive所寫入的StoreConfig選項(xiàng)正是最終走這條路徑生效的。因此無(wú)論數(shù)據(jù)落在本地磁盤還是 Google DriveStoreServer 側(cè)看到的都是同一個(gè)字節(jié)存取抽象差異只體現(xiàn)在注冊(cè)了哪個(gè)后端以及serverconfig.json里的StoreConfig寫了什么。常見維護(hù)場(chǎng)景重置與重新配置如果部署過程中出現(xiàn)配置錯(cuò)誤主文檔提供了重啟流程刪除$HOME/upspin/server后重跑upspin setupserver即可。需要特別注意的是該目錄同時(shí)包含目錄服務(wù)器數(shù)據(jù)與本地磁盤方案下的存儲(chǔ)對(duì)象刪除即等于清空全部數(shù)據(jù)而使用云存儲(chǔ)方案時(shí)清理后應(yīng)一并刪除存儲(chǔ)桶中的孤立對(duì)象以免繼續(xù)為廢棄數(shù)據(jù)付費(fèi)。對(duì)于 Google Drive 方案對(duì)應(yīng)的清理動(dòng)作即是在管理應(yīng)用頁(yè)面中移除 Upspin 占用的應(yīng)用數(shù)據(jù)。至此你已經(jīng)完成了以 Google Drive 為存儲(chǔ)后端的 Upspin 服務(wù)器搭建從構(gòu)建upspinserver-drive、OAuth2 授權(quán)到部署與配置的完整鏈路都已打通接下來即可使用upspin命令行及生態(tài)工具正常讀寫你的 Upspin 樹。贊分享后端密碼學(xué)【免費(fèi)下載鏈接】upspinUpspin: A framework for naming everyones everything.項(xiàng)目地址https://gitcode.com/gh_mirrors/up/upspin點(diǎn)擊查看免費(fèi)下載相關(guān)推薦circleImageView4cj 圓形圖片組件從 cjpm.toml 到 hvigor 構(gòu)建工程結(jié)構(gòu)與打包發(fā)布全解析circleImageView4cj 圓形圖片組件從 cjpm.toml 到 hvigor 構(gòu)建工程結(jié)構(gòu)與打包發(fā)布全解析 circleImageView4c后端密碼學(xué)Upspin 使用 Backblaze B2 云存儲(chǔ)upspinserver-b2cs 服務(wù)器搭建實(shí)戰(zhàn)指南Upspin 使用 Backblaze B2 云存儲(chǔ)upspinserver b2cs 服務(wù)器搭建實(shí)戰(zhàn)指南 本指南是 Upspin 服務(wù)器搭建總綱doc/s后端密碼學(xué)終極指南在iOS設(shè)備上運(yùn)行Minecraft Java版的完整教程終極指南在iOS設(shè)備上運(yùn)行Minecraft Java版的完整教程 PojavLauncher是一個(gè)專為iOS和Android設(shè)備設(shè)計(jì)的Minecraft J游戲開發(fā)移動(dòng)開發(fā)上一篇iNTERCEPT前端架構(gòu)解析SSE流式數(shù)據(jù)與實(shí)時(shí)可視化實(shí)現(xiàn)下一篇jQuery DrawSVG API完全參考手冊(cè)所有配置選項(xiàng)與方法的詳細(xì)解析創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考