学习IPFS
?
注:以下所有操作均在CentOS 6.8 x86_64位系統下完成。
?
IPFS(InterPlanetary File System)是一個點對點的分布式超媒體分發協議,被認為是最有可能取代HTTP的新一代互聯網協議,關于IPFS的更多介紹可參考:IPFS官網。
#準備工作#
在下載IPFS之前可能需要“***”,詳見:Centos安裝***+安裝Privoxy+配置SSH使用代理。
#安裝IPFS#
這里我們直接下載其官方編譯好的版本(Prebuilt Package)。
# wget https://dist.ipfs.io/go-ipfs/v0.4.14/go-ipfs_v0.4.14_linux-amd64.tar.gz # tar zxf go-ipfs_v0.4.14_linux-amd64.tar.gz # mv go-ipfs /usr/local/配置環境:
# vim /etc/profile ... export IPFS_HOME=/usr/local/go-ipfs export PATH=$PATH:IPFS_HOME ... # source /etc/profile # ipfs version ipfs version 0.4.14可以看到IPFS已經安裝成功。
#使用IPFS#
一、創建IPFS節點
# ipfs init initializing IPFS node at /root/.ipfs generating 2048-bit RSA keypair...done peer identity: QmTW4AoQABDBxQwa4fn5yEqhAKXx2fyFXkksy6LQuDQWK1 to get started, enter:ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme這個時候默認會在~/目錄下創建一個.ipfs的目錄,里面包含了配置文件信息等。可以自由進行修改(比如可以把默認的10GB存儲空間改小點):
# vim /root/.ipfs/config ..."Datastore": {"StorageMax": "10GB",...},"Addresses": {"Swarm": ["/ip4/0.0.0.0/tcp/4001","/ip6/::/tcp/4001"], ...} ...也可以自己選擇指定的IPFS目錄:
# mkdir -p /data/ipfs # vim /etc/profile ... export IPFS_PATH=/data/ipfs ... # source /etc/profile # ipfs init generating 2048-bit RSA keypair...done peer identity: QmQa7NH5w7pxz34Sme96GUM8dH14upF3H67PDCX8nKXp4T to get started, enter:ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme這里將IPFS目錄改為/data/ipfs。
二、查看節點ID
# ipfs id {"ID": "QmQa7NH5w7pxz34Sme96GUM8dH14upF3H67PDCX8nKXp4T","PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDdpn...","Addresses": null,"AgentVersion": "go-ipfs/0.4.14/","ProtocolVersion": "ipfs/0.1.0" }這里可以看到QmQa7NH5w7pxz34Sme96GUM8dH14upF3H67PDCX8nKXp4T就是當前節點的ID值,每個節點都有一個唯一的ID值。
三、跨域資源共享
# ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST", "OPTIONS"]' # ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'四、啟動服務器
當前IPFS節點雖然創建成功,但還沒有啟動加入到IPFS網絡,外面無法訪問,需要啟動服務器:
# ipfs daemon & Initializing daemon... Swarm listening on /ip4/127.0.0.1/tcp/4001 Swarm listening on /ip4/172.18.167.60/tcp/4001 Swarm listening on /p2p-circuit/ipfs/QmQa7NH5w7pxz34Sme96GUM8dH14upF3H67PDCX8nKXp4T Swarm announcing /ip4/127.0.0.1/tcp/4001 Swarm announcing /ip4/172.18.167.60/tcp/4001 API server listening on /ip4/127.0.0.1/tcp/5001 Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080 Daemon is ready五、新增文件
我們可以將本地的一個文件添加到IPFS網絡中:
# pwd /root # vim foo.txt ... # cat foo.txt Hello World# ipfs add foo.txt added QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u foo.txt # ipfs cat QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u Hello World這個時候我們已經將一個文件foo.txt添加到當前的IPFS節點中,并且可以通過生成的唯一哈希值QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u來查看該文件內容,接下來我們需要將其同步到IPFS網絡中:
# ipfs daemon & Initializing daemon... ... Daemon is ready我們試著在本地瀏覽器打開地址(https://ipfs.io/ipfs/QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u)查看文件:
可以看到文件已經成功地同步到了IPFS網絡中。
六、新增文件夾
接下來我們可以在IPFS的根目錄下創建文件夾,并且可以將foo.txt文件cp或mv到新創建的文件夾中。
# ipfs files mkdir /foo # ipfs files cp /ipfs/QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u /foo/foo.txt # ipfs files ls / foo # ipfs files ls /foo foo.txt # ipfs files read /foo/foo.txt Hello World可以看到我們已經成功地將該文件cp到了一個foo的新建目錄下,接下來我們嘗試在本地創建一個目錄并將其上傳到IPFS網絡中:
# mkdir bar # vim bar/bar.txt # cat bar/bar.txt Hello World 2 # ipfs add -r bar/ added QmShGj2c1Qe2wQKMUNMx45EPoKsJmwewojrE1ETzXggUFG bar/bar.txt added QmepZ8kfqvfDgLtaA7jiCZowXsgn63bKxJLS5NPNiqU2A9 bar我們試著在本地瀏覽器打開地址(https://ipfs.io/ipfs/QmepZ8kfqvfDgLtaA7jiCZowXsgn63bKxJLS5NPNiqU2A9)查看文件夾:
?
轉載于:https://www.cnblogs.com/brishenzhou/p/8866941.html
總結
- 上一篇: WPF学习—模板
- 下一篇: NumPy 基础用法