那么,我們?cè)撛趺礃影盐覀兊木W(wǎng)站部署在IPFS之上,或者是如何在IPFS之上部署靜態(tài)內(nèi)容(例如個(gè)人網(wǎng)站)呢?
接下來(lái),我會(huì)列出可用于任何文件,例如純HTML文件,由靜態(tài)網(wǎng)站生成器(如Jekyll,Hugo,Hexo和Gatsby)生成的網(wǎng)站,甚至是媒體文件的部署方法,因此,讓我們開(kāi)始吧。
如果您已安裝并正在運(yùn)行IPFS Desktop,則可以使用常規(guī)文件選擇器添加文件。只需導(dǎo)入包含您靜態(tài)網(wǎng)站內(nèi)容的目錄即可。
IPFS CLI允許使用add子命令添加文件和目錄。
最后一行打印的哈希是整個(gè)目錄的CID,因此也是我們網(wǎng)站的CID。我們可以看到托管在
“https://ipfs.io/ipfs/QmeUG2oZvyx4NzfpP9rruKbmV5UNDmTQ8MoxuhTJGVZVTW/”上的示例網(wǎng)站
提示:在您的網(wǎng)站中使用相對(duì)鏈接非常重要,因?yàn)镮PFS網(wǎng)關(guān)的URL類似于<gateway>/ipfs/<cid>/file.ext。
在最后一節(jié)中,我們添加的文件可以在我們的 IPFS節(jié)點(diǎn)網(wǎng)絡(luò)中找到,這就是IPFS網(wǎng)關(guān)能夠解析它并將其顯示在瀏覽器中的原因。
但是,一旦關(guān)閉IPFS?daemon,該站點(diǎn)很可能將無(wú)法訪問(wèn)。即使在IPFS上請(qǐng)求了某些內(nèi)容之后,接收節(jié)點(diǎn)也成為該內(nèi)容的主機(jī),但是在12小時(shí)后將對(duì)這些內(nèi)容進(jìn)行收集。那么,我們?nèi)绾卧跊](méi)有服務(wù)器的分散式網(wǎng)站中全天候備份您的網(wǎng)站?
Welcome,Pinning
在IPFS上固定一些內(nèi)容的節(jié)點(diǎn)將永遠(yuǎn)托管它(直到取消pinning它)。諸如Pinata之類的固定服務(wù),可將文件固定在其IPFS節(jié)點(diǎn)上。如此一來(lái),網(wǎng)站將始終可用。
在Pinata中,如果內(nèi)容已經(jīng)上傳到IPFS,則可以上傳文件或僅提供其哈希值。這是我固定我們上面上傳的示例網(wǎng)站的方式。
提示:最好使用多種固定服務(wù)固定您的站點(diǎn),以實(shí)現(xiàn)冗余。
自動(dòng)化部署
您可能已經(jīng)注意到,使用IPFS非常容易,至少比處理我們使用的傳統(tǒng)網(wǎng)絡(luò)要容易。但是,每次您要更改文件時(shí)都必須重復(fù)此過(guò)程,這并不是很方便。因此,我們可以借助Fleek這樣的工具,可以幫助自動(dòng)完成上面列出的所有步驟。
Fleek就像Travis或CircleCi一樣用于IPFS部署。您可以將其Github帳戶與其關(guān)聯(lián),并使用Github掛鉤,F(xiàn)leek將在每次推送至Github存儲(chǔ)庫(kù)時(shí)觸發(fā)部署。他們還固定部署的所有內(nèi)容。
此外,我使用Hexo生成了此博客,并且能夠在Fleek本身中添加一個(gè)構(gòu)建步驟,因此無(wú)需生成HTML并將其推送到我的存儲(chǔ)庫(kù)。這是我使用的構(gòu)建命令: