ipfs的搭建和简单的操作

ipfs介绍

IPFS(InterPlanetary File System)是一个点对点的分布式超媒体分发协议,它整合了过去几年最好的分布式系统思路,为所有人提供全球统一的可寻址空间,包括Git、自证明文件系统SFS、BitTorrent和DHT,同时也被认为是最有可能取代HTTP的新一代互联网协议。

IPFS用基于内容的寻址替代传统的基于域名的寻址,用户不需要关心服务器的位置,不用考虑文件存储的名字和路径。我们将一个文件放到IPFS节点中,将会得到基于其内容计算出的唯一加密哈希值。哈希值直接反映文件的内容,哪怕只修改1比特,哈希值也会完全不同。当IPFS被请求一个文件哈希时,它会使用一个分布式哈希表找到文件所在的节点,取回文件并验证文件数据。

IPFS是通用目的的基础架构,基本没有存储上的限制。大文件会被切分成小的分块,下载的时候可以从多个服务器同时获取。IPFS的网络是不固定的、细粒度的、分布式的网络,可以很好的适应内容分发网络的要求。这样的设计可以很好的共享各类数据,包括图像、视频流、分布式数据库、整个操作系统、模块链、8英寸软盘的备份,还有静态网站。

IPFS提供了一个友好的WEB访问接口,用户可通过http://ipfs.io/hash 获取IPFS网络中的内容,也许在不久的将来,IPFS协议将会彻底替代传统的HTTP协议。

2、ipfs安装

ipfs官网

在这里下载对应的安装包
ipfs的搭建和简单的操作_第1张图片

作为windows的用户,只需要双击ipfs.exe即可,然后将go-ipfs文件夹的路径加入path环境变量当中,我们就可以到处使用ipfs的命令行了
随后记得调用

ipfs init

这样就在本地建立了一个IPFS节点
ipfs的搭建和简单的操作_第2张图片

调用

ipfs id

可以查看ipfs的节点,不过在这之前,我们要启动ipfs的节点服务器才能查看的到节点服务器的id

ipfs daemon

3、ipfs跨域资源共享CORS配置

之所以要进行cors配置呢,具体原理我也不是很明白啊,不过在之后的项目当中,当使用ipfs上传数据添加的时候,会发生拒绝访问的错误,必须要进行跨域的配置才可以。

首先退出ipfs的节点,好不容易才查到windows和mac不一样,为什么网上都是mac的命令行,坑了半天才运行好

然后ios的系统请依次运行

localhost:ipfs-http-demo yuechunli$ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST", "OPTIONS"]'

localhost:ipfs-http-demo yuechunli$ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'

localhost:ipfs-http-demo yuechunli$ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'

localhost:ipfs-http-demo yuechunli$ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers '["Authorization"]'

localhost:ipfs-http-demo yuechunli$ ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers '["Location"]'

windows依次执行

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods "[\"PUT\", \"GET\", \"POST\", \"OPTIONS\"]"

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"*\"]"

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials "[\"true\"]"

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers "[\"Authorization\"]"

ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers "[\"Location\"]"

完成之后,在官网中提供了一个例子
我们开启节点

ipfs daemon
ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme

就可以通过http://localhost:5001/webui看到官方给我们提供的项目例子了。

4、使用ipfs新增文件

将一个本地的文件添加到ipfs当中

ipfs add file.txt

然后通过

ipfs cat 生成的hash

查看文件的内容

然后新建终端

ipfs daemon

就可以在

https://ipfs.io/ipfs/文件的hash

网络上查看到自己的问价内容了

还有一些其他的命令行

查看文件内容

ipfs cat 文件的hash

拷贝文件到新的文件夹

ipfs files cp /ipfs/文件的hash/LiYueChun/file.txt

如果有多层目录,使用下面命令一将所有的目录上传ipfs

ipfs add -r 包含多层目录的文件夹名字

5、创建简易网页发布到ipfs

在自己新建的文件夹目录下创建index.html和style.css文件


<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>
h1 {
  color: red;
}

使用命令发布

ipfs add -r new/
added QmZ9KW5PYYmxGznsBgomafDumqWtuu6tahknNVMo3BmXjH new/index.html
added QmQEmS1eHxqmc31pm1hbWF8x8ESmX2ygbQPUgQX3WLLqVm new/style.css
added QmbFdD6BQrW6SwjsW5fTpYLW1LWv53FxPTouTto9Q5FED6 new

最后一行是根目录的hash,我们通过 https://ipfs.io/ipfs/<你的项目根目录hash>就可以访问网站了

5、ipns

什么是ipns呢,ipns又有什么作用呢。我们应该知道,本地通过ipfs daemon创建的节点是唯一的,但是我们的文件只要内容改变了就会产生不同的hash,ipns的作用就是将内容和本地的节点绑定,这样更新内容的时候我们就可以绑定本地节点,然后通过ipns+本地的节点来访问网站了,网站的网址也不用随着文件内容改变而改变了
那么怎么绑定:

ipfs name publish 你的上传的文件的hash

然后我们同过ipfs id查看到本地节点之后通过下面的链接来访问我们的网站,要注意是ipns哦

https://ipfs.io/ipns/QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP

你可能感兴趣的:(区块链技术)