今天也根據(jù)官網(wǎng)的文檔開始一步步搭建ipfs運行環(huán)境弃锐,我們先來看一下IPFS的簡介:
IPFS(InterPlanetary File System)是一個點對點的分布式超媒體分發(fā)協(xié)議,它整合了過去幾年最好的分布式系統(tǒng)思路担败,為所有人提供全球統(tǒng)一的可尋址空間昔穴,包括Git、自證明文件系統(tǒng)SFS提前、BitTorrent和DHT吗货,同時也被認(rèn)為是最有可能取代HTTP的新一代互聯(lián)網(wǎng)協(xié)議。
IPFS用基于內(nèi)容的尋址替代傳統(tǒng)的基于域名的尋址岖研,用戶不需要關(guān)心服務(wù)器的位置卿操,不用考慮文件存儲的名字和路徑警检。我們將一個文件放到IPFS節(jié)點中孙援,將會得到基于其內(nèi)容計算出的唯一加密哈希值害淤。哈希值直接反映文件的內(nèi)容,哪怕只修改1比特拓售,哈希值也會完全不同窥摄。當(dāng)IPFS被請求一個文件哈希時,它會使用一個分布式哈希表找到文件所在的節(jié)點础淤,取回文件并驗證文件數(shù)據(jù)崭放。
IPFS是通用目的的基礎(chǔ)架構(gòu),基本沒有存儲上的限制鸽凶。大文件會被切分成小的分塊币砂,下載的時候可以從多個服務(wù)器同時獲取。IPFS的網(wǎng)絡(luò)是不固定的玻侥、細(xì)粒度的决摧、分布式的網(wǎng)絡(luò),可以很好的適應(yīng)內(nèi)容分發(fā)網(wǎng)絡(luò)的要求凑兰。這樣的設(shè)計可以很好的共享各類數(shù)據(jù)掌桩,包括圖像、視頻流姑食、分布式數(shù)據(jù)庫波岛、整個操作系統(tǒng)、模塊鏈音半、8英寸軟盤的備份则拷,還有靜態(tài)網(wǎng)站。
1曹鸠、下載IPFS
打開官網(wǎng)https://ipfs.io/ 隔躲,點擊【Try it】
點擊 【Install IPFS now】
點擊【Download go-ipfs】, 下載對應(yīng)版本的IPFS安裝文件
下載完之后,將文件解壓到你想要存放的目錄物延,如:E:\Workplace\BlockChain\go-ipfs
2宣旱、安裝IPFS
打開CMD,進(jìn)入ipfs文件目錄
E:
cd E:\Workplace\BlockChain\go-ipfs
輸入 dir 查看目錄信息叛薯,然后輸入ipfs init 開始初始化 ipfs網(wǎng)絡(luò)環(huán)境浑吟,并且系統(tǒng)會分配一個屬于你自己的IPFS網(wǎng)絡(luò)哈希值(類似你在IPFS網(wǎng)絡(luò)中的一張身份證ID)。有了這個ID耗溜,別人就可以訪問到你的節(jié)點
~>dir // 查看目錄信息
~>ipfs init // 初始化 ipfs網(wǎng)絡(luò)環(huán)境
輸入上面獲取的內(nèi)容 ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme
,
出現(xiàn) Hello and Welcome to IPFS!
那恭喜你组力!說明你的電腦已經(jīng)成功安裝IPFS并已經(jīng)加入到IPFS網(wǎng)絡(luò)了。
3抖拴、IPFS環(huán)境配置
IPFS安裝的默認(rèn)配置將存放到你的用戶文件夾根目錄下(C:\Users\abc\.ipfs)文件夾名.ipfs燎字,接下來打開config腥椒,里面的是ipfs的一些基礎(chǔ)配置數(shù)據(jù),可以根據(jù)自己的需求修改里面的配置
配置修改請參考官網(wǎng)文檔
4候衍、運行測試
輸入 ipfs daemon
啟動IPFS服務(wù)監(jiān)聽笼蛛,目的是用于監(jiān)聽IPFS網(wǎng)絡(luò)通信數(shù)據(jù),使用的監(jiān)聽端口是5001蛉鹿。注意要并保持開啟狀態(tài)滨砍,才能守護(hù)監(jiān)聽的進(jìn)程
另開一個cmd,同樣進(jìn)入ipfs目錄妖异,試著執(zhí)行一些基礎(chǔ)命令
輸入 ipfs help
惋戏,獲取一些常用的命令
輸入 ipfs id
,可以查看你的通信ID信息
查看配置信息
輸入 ipfs swarm peers
可以查看附近也在使用IPFS網(wǎng)絡(luò)節(jié)點伙伴他膳,如果列出有數(shù)據(jù)說明你并不是一個人在使用IPFS網(wǎng)絡(luò)
5响逢、嘗試調(diào)用一個ipfs網(wǎng)絡(luò)中的文件:
打開官網(wǎng)點擊 右上角 Docs -> 選擇目錄 Getting Started
找到Going online,復(fù)制代碼 ipfs cat /ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ/cat.jpg >cat.jpg
粘貼到CMD棕孙,回車確認(rèn)即可獲得ipfs網(wǎng)絡(luò)的的一個貓的圖片資源舔亭,也說明我們的ipfs環(huán)境可以訪問網(wǎng)絡(luò)中的文件了。
6散罕、可視化界面
IPFS網(wǎng)絡(luò)狀態(tài)保持開啟分歇,此時瀏覽器輸入http://localhost:5001/webui 你可以看到一個漂亮的可視化IPFS管理界面,里面可以做一些基礎(chǔ)的資源獲取查看操作
7欧漱、上傳一個文件以及在ipfs獲取自己上傳的文件
將自己的文件放在ipfs配置目錄(E:\Workplace\BlockChain\go-ipfs)职抡,如我的test.txt這個文檔
執(zhí)行命令 ipfs add test.txt
,顯示如下误甚,說明我的文件已經(jīng)加入了我的ipfs網(wǎng)絡(luò)節(jié)點中缚甩,并且生成了一個test.txt這個文件的唯一哈希值 QmPAUBJmKa1KTeSo7qn4q2N9DT3yhBxPWf1ELHku3nMbci
,
輸入命令 ipfs cat QmPAUBJmKa1KTeSo7qn4q2N9DT3yhBxPWf1ELHku3nMbci
獲得文件信息
此時我們可以通過上面返回的文件哈希值 QmPAUBJmKa1KTeSo7qn4q2N9DT3yhBxPWf1ELHku3nMbci
,
獲取我們上傳的文件,在剛才的可視化界面把哈希值粘貼到搜索欄即可得到我們上傳的文件信息
注意:我們剛才的文件獲取操作都是只在我們本機(jī)內(nèi)網(wǎng)建立的ipfs環(huán)境中窑邦,我們嘗試使用https://ipfs.io/ipfs/QmPAUBJmKa1KTeSo7qn4q2N9DT3yhBxPWf1ELHku3nMbci
查看信息擅威,出現(xiàn)沒有找到資源的提示,說明我們上傳的文件還沒有同步到ipfs外網(wǎng)冈钦,所以訪問不了郊丛。
接下來執(zhí)行下面的命令同步節(jié)點數(shù)據(jù)到IPFS網(wǎng)絡(luò):
先把剛在運行的 ipfs daemon
服務(wù)停止(Ctrl + c),然后重新啟動 ipfs daemon
再次在瀏覽器訪問,可以看到我們上傳的文件瞧筛,說明我們現(xiàn)在已經(jīng)成功把文件上傳到ipfs網(wǎng)絡(luò)節(jié)點了厉熟。
8、發(fā)布到PNS较幌,創(chuàng)建簡易的網(wǎng)頁發(fā)布到IPFS
在這里我先自己寫一個簡單的網(wǎng)頁給大家演示揍瑟,先在桌面新建一個site
文件夾,然后按照下面的步驟在site
文件夾中建立index.html
和style.css
文件乍炉。
8.1 創(chuàng)建一個index.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello IPFS!</title>
<link rel="stylesheet" href="./style.css" />
</head>
<body>
<h1>Hello IPFS!</h1>
</body>
</html>
8.2 創(chuàng)建一個style.css文件
h1 {
color: green;
}
8.3 添加到ipfs
> ipfs add -r site/
added QmS4a85WLxie6Zy6Tntg6CccyGHyV4823Vo1vkjGBYhetP site/index.html
added QmZL2UBTwnhcLv66fARL9UV8W8a9ZA4iwTLcaUCsB1u1yW site/style.css
added QmPAygbESghBjPbLhGJAda5rA9GCBMHMGfgwLoB61DfnxX site
最后一行是項目根目錄的hash
绢片,你先通過ipfs daemon
同步網(wǎng)絡(luò)滤馍,然后可以通過https://ipfs.io/ipfs/<你的項目根目錄hash>
,即https://ipfs.io/ipfs/QmPAygbESghBjPbLhGJAda5rA9GCBMHMGfgwLoB61DfnxX
訪問項目底循。
8.4 訪問網(wǎng)站
瀏覽器打開https://ipfs.io/ipfs/QmPAygbESghBjPbLhGJAda5rA9GCBMHMGfgwLoB61DfnxX巢株,效果圖如下:
]
8.5 發(fā)布到IPNS
當(dāng)我們修改網(wǎng)站內(nèi)容重新添加到ipfs
時,hash
會發(fā)生變化此叠,當(dāng)我們網(wǎng)站更新時纯续,我們可以將網(wǎng)站發(fā)布到IPNS
随珠,在IPNS
中灭袁,允許我們節(jié)點的域名空間中引用一個IPFS hash
,也就是說我們可以通過節(jié)點ID
對項目根目錄的IPFS HASH
進(jìn)行綁定窗看,以后我們訪問網(wǎng)站時直接通過節(jié)點·ID
訪問即可茸歧,當(dāng)我們更新網(wǎng)站時,重新發(fā)布到IPNS
即可显沈。
> ipfs name publish QmPAygbESghBjPbLhGJAda5rA9GCBMHMGfgwLoB61DfnxX
Published to QmVhF9zg4qcrVTw8jkkCGvTJGXJjvwX6CvRuxzUErEyx97: /ipfs/QmPAygbESghBjPbLhGJAda5rA9GCBMHMGfgwLoB61DfnxX
當(dāng)我們執(zhí)行ipfs name publish
命令時软瞎,會返回我們的節(jié)點ID
,你可以通過ipfs id
進(jìn)行查看驗證是否是你的節(jié)點ID
拉讯。
驗證id:
> ipfs id
{
"ID": "QmVhF9zg4qcrVTw8jkkCGvTJGXJjvwX6CvRuxzUErEyx97",
"PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6fMRFRKKg7rn7fJVVENsmSp/qftAV0FApEEFi0LNJOW9oYENCNykCc6Vpwg0/9oXjfkywAJqENgEycUV1ZdK75Ef9NJlY5vy62e2aitF83ock89zAeXXLU4GhXifW/foT5DsHHSe0rseBmybZDHjAOJtfhaN4K4yusw23wzvt9Fg8S3qNszEaImYtWUlS08piiR0tWdz+24I/oWiSnWB855KVCdLnYnwy6M3OLgeuJvXB2XGwnbtj4Q1jvp9rf/KGjHtb0KB9DwfowZ/ypvrDUNakbjNGYfn3I+AvRl1Qz4++o57VtbRmZYThygWnz9vTjqj0NDX2ftYh6MrZkSg5AgMBAAE=",
"Addresses": [
"/ip4/127.0.0.1/tcp/4001/ipfs/QmVhF9zg4qcrVTw8jkkCGvTJGXJjvwX6CvRuxzUErEyx97",
"/ip4/192.168.0.4/tcp/4001/ipfs/QmVhF9zg4qcrVTw8jkkCGvTJGXJjvwX6CvRuxzUErEyx97",
"/ip4/169.254.187.113/tcp/4001/ipfs/QmVhF9zg4qcrVTw8jkkCGvTJGXJjvwX6CvRuxzUErEyx97",
"/ip6/::1/tcp/4001/ipfs/QmVhF9zg4qcrVTw8jkkCGvTJGXJjvwX6CvRuxzUErEyx97",
"/ip4/182.139.92.248/tcp/32065/ipfs/QmVhF9zg4qcrVTw8jkkCGvTJGXJjvwX6CvRuxzUErEyx97"
],
"AgentVersion": "go-ipfs/0.4.14/",
"ProtocolVersion": "ipfs/0.1.0"
}
驗證id綁定的網(wǎng)站hash:
> ipfs name resolve <peerId>
> ipfs name resolve QmVhF9zg4qcrVTw8jkkCGvTJGXJjvwX6CvRuxzUErEyx97
/ipfs/QmPAygbESghBjPbLhGJAda5rA9GCBMHMGfgwLoB61DfnxX
我們現(xiàn)在就可以根據(jù)節(jié)點id
涤浇,通過IPNS
進(jìn)行訪問了:
https://ipfs.io/ipns/QmVhF9zg4qcrVTw8jkkCGvTJGXJjvwX6CvRuxzUErEyx97
注意上面是ipns而不是ipfs。
8.6 修改網(wǎng)站內(nèi)容魔慷,重新發(fā)布到IPNS
現(xiàn)在去style.css中修改字體顏色:
h1 {
color: red;
}
重新添加site
文件夾到ipfs
:
> ipfs add -r site/
added QmS4a85WLxie6Zy6Tntg6CccyGHyV4823Vo1vkjGBYhetP site/index.html
added QmUTwP64HnrQp3GJuVeuvwaQ79rxa8waQL5yj3qkCswqvk site/style.css
added QmWhEUU1ksDShPTqhPEEXohfnhBvpwaCHtxhnbf3Fi1piH site
可以看到除了index.html
文件的hash
值沒變外只锭,style.css
和site
文件夾的hash
值都不是之前的hash
值了。
瀏覽器打開https://ipfs.io/ipfs/QmWhEUU1ksDShPTqhPEEXohfnhBvpwaCHtxhnbf3Fi1piH院尔,效果圖如下:
重新發(fā)布到IPNS:
> ipfs name publish QmWhEUU1ksDShPTqhPEEXohfnhBvpwaCHtxhnbf3Fi1piH
Published to QmVhF9zg4qcrVTw8jkkCGvTJGXJjvwX6CvRuxzUErEyx97: /ipfs/QmWhEUU1ksDShPTqhPEEXohfnhBvpwaCHtxhnbf3Fi1piH
再次根據(jù)節(jié)點id
蜻展,通過IPNS
進(jìn)行訪問:
https://ipfs.io/ipns/QmVhF9zg4qcrVTw8jkkCGvTJGXJjvwX6CvRuxzUErEyx97
可以看到,由于網(wǎng)站的內(nèi)容發(fā)生了變化邀摆,對應(yīng)的hash
值也發(fā)生了變化纵顾,這會導(dǎo)致其他人通過舊的網(wǎng)站hash
值,訪問不到更新后的網(wǎng)站栋盹。而使用IPNS
施逾,將每次更新后的網(wǎng)站hash
值綁定到我們的節(jié)點id
,他人只需要記住你的節(jié)點id
例获,通過IPNS汉额,就可以一直訪問最新的網(wǎng)站內(nèi)容。
以上簡介的IPFS的環(huán)境搭建和基礎(chǔ)的幾個命令操作
參考文章
http://www.reibang.com/p/9e7fb59d2bb5
https://steemit.com/ipfs/@daxiang/ipfs-windows