<h1><a name="t0"></a><a name="t0"></a><a id="ipfs_0"></a>一、ipfs节点安装与使用</h1>

1.1下载节点软件

到官网下载windows版的ipfs节点软件:32位,64位
如果你不能访问官网,可以使用百度云盘镜像:32位,64位

1.2解压节点软件

下载后解压到指定目录,例如d:\go-ipfs,开一个控制台窗口,测试:

D:\go-ipfs > ipfs version
Ipfs version 0.4.14
可以将该目录加入环境变量PATH,

或者将d:\go-ipfs\ipfs.exe拷贝到windows系统目录,以便在任何目录中可以启动ipfs.exe。

1.3 初始化本地仓库

和git类似,ipfs节点也需要先初始化一个本地仓库。执行init子命令来初始化本地仓库:
D:\go-ipfs> ipfs init
Initializing IPFS node at C:\Users\hubwiz\.ipfs
generating 2048-bit RSA keypair...done
peer identity: QmQaTgU1TLNHPBEvLGgWK1G9FgVByyUZNVhDs789uWPtku
to get started, enter:
 ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

默认情况下,ipfs将在当前用户主目录(例如:对于hubwiz用户,其主目录就是C:\Users\hubwiz)下建立.ipfs子目录,作为本地仓库的根目录。

如果你的C盘空间不够大,或者你就是希望使用其他目录作为本地仓库根目录,可以设置IPFS_PATH环境变量,使其指向目标路径,例如D:\my_ipfs_root

1.4重新初始化

如果你期望重新初始化节点,会提醒你不能这么做,否则会改写你的密钥:

D:\go-ipfs> ipfs init
Initializing IPFS node at C:\Users\hubwiz\.ipfs
Error: ipfs configuration file already exists!
Reinitializing would overwrite your keys.
这挡不住我们。如果你必须重新初始化的话,先删除原来的仓库根目录即可:
D:\go-ipfs> del C:\users\hubwiz\.ipfs

1.5将文件添加到本地仓库

使用add子命令将指定的文件添加到本地仓库,例如将当前目录的README.md文件添加到本地仓库:
D:\go-ipfs> ipfs add README.md
465 B / ? [-------------------------------------------------------=--]
added QmXBpD37vBm5537pqHwyJRGSaX7hMrkHyp866wqEVU2BE8 README.md
ipfs会根据文件的内容生成一个哈希值,例如:
QmXBpD37vBm5537pqHwyJRGSaX7hMrkHyp866wqEVU2BE8
你需要记录下这个编码,因为需要使用它来访问本地仓库(或ipfs网络)中的文件。
注意:ipfs并不会无节制地将你本地仓库中的文件分布到其他ipfs节点中,如果没有其他的ipfs节点搜索你的文件(的哈希值),那么你本地仓库中的文件将始终只存在于本地。

1.6访问ipfs文件

Ipfs网络中只能通过内容的哈希值来访问文件,例如对于上面的README.md文件,我们使用cat子命令通过其哈希值来查看其内容:
D:\go-ipfs> ipfs cat QmXBpD37vBm5537pqHwyJRGSaX7hMrkHyp866wqEVU2BE8
控制台将输出内容:
\# ipfs commandline tool

This is the ipfs commandline tool. It contains a full ipfs node.

1.7 将节点接入网络

执行daemon子命令将节点接入ipfs网络:

D:\go-ipfs> ipfs daemon
Initializing daemon...
......
Daemon is ready
只有当启动监听后,节点才能够接受ipfs网络中的内容检索请求,参与内容的交换与分布。
可以按Ctrl+C退出监听状态。

二、ipfs-api安装与使用

Ipfs节点提供和REST API接口,可供我们在程序代码中操作节点进行文件的上传等操作。不过大多数情况下,我们并不需要直接操作这个REST开发接口,而是使用经过封装的更友好的ipfs-api,一个nodejs包。

2.1安装nodejs

到官网下载nodejs安装包:32位,64位。下载后双击进行安装即可。
开一个控制台窗口,测试:
C:\Users\hubwiz> node -v
V8.11.1

2.2安装ipfs-api

Ipfs-api的安装需要git命令行,因此我们先安装git。从官网下载git安装包:32位,64位。下载后双击安装即可。
执行git命令测试:
D:\test-ipfs-api> git version
git version 2.16.2.windows.1
ipfs-api需要编译原生node模块,因此需要安装VisualStudio 2015和python27。
官网下载VisualStudio 2015社区版,双击安装即可。
官网下载Python27安装包,双击安装并设置PATH环境变量使python可用。
重新开一个控制台,使环境变量生效。现在安装ipfs-api:
D:\test-ipfs-api> npm install ipfs-api
+ ipfs-api@20.0.1
added 1 package, updated 1 package and moved 1 package in 22.138s

2.3测试代码 – nodejs

在D:\test-ipfs-api目录下创建一个测试脚本test.js:
const ipfsAPI = require('ipfs-api')
const ipfs = ipfsAPI('localhost', '5001', {protocol: 'http'})
const buffer = Buffer.from('this is a demo')
ipfs.add(buffer).then( rsp => console.log(rsp[0].hash))
.catch(err => console.error(err))
执行这个脚本:
D:\test-ipfs-api> node test.js
QmfQS4vm9YZTAyGZEkDqm81xripwsK3NgqfNkbCdoeEw5i
也就是说,我们将内容this is a demo添加到本地仓库后,得到哈希值
QmfQS4vm9YZTAyGZEkDqm81xripwsK3NgqfNkbCdoeEw5i。现在可以使用cat子命令来查看这个哈希值对应的内容:
D:\test-ipfs-api> ipfs cat QmfQS4vm9YZTAyGZEkDqm81xripwsK3NgqfNkbCdoeEw5i
控制台会输出我们之前上传的内容:
this is a demo
ipfs进入监听状态后,提供了一个http网关,让我们可以使用浏览器来访问ipfs上的内容。网关默认在本机(127.0.0.1)的8080端口监听,因此使用你的浏览器访问这个URL:
http://127.0.0.1:8080/ipfs/QmfQS4vm9YZTAyGZEkDqm81xripwsK3NgqfNkbCdoeEw5i
同样可以看到我们之前上传的内容。
注意:需要首先启动监听器(ipfs daemon)并且你的浏览器和ipfs节点在同一台计算机。

三、在浏览器中访问ipfs

ipfs-api也支持在browser使用。最简单的方法是使用专门针对浏览器的封装库,在html中引用即可:
<script src="https://unpkg.com/ipfs-api/dist/index.js"></script>
这个特别封装的库会创建一个全局对象ipfsAPI,我们在浏览器脚本中可以直接使用,例如:
var ipfs = window.IpfsApi('localhost', '5001')
这种方法比较简单,因此下文不再描述。接下来我们将使用更加工程化的方法,
采用webpack来直接在前端脚本中使用ipfs-api的nodejs包。

3.1 HTML页面

在D:\test-ipfs-api目录下创建index.html:
<!doctype html>
<html>
<head><meta charset="utf-8">
</head>
<body><textarea id="content">THIS IS ANOTHER DEMO</textarea><button id="upload">Upload</button><script src="./bundle.js"></script>
</body>
</html>
我们的目标是,当点击按钮时,我们将文本框的内容上传到ipfs

3.2前端脚本

在D:\test-ipfs-api目录下编写脚本app.js:
import ipfsAPI from 'ipfs-api'
const ipfs = ipfsAPI('localhost', '5001', {protocol: 'http'})

window.addEventListener(‘load’, function() {
let btn = document.querySelector(’#upload’)
let txt = document.querySelector(’#content’)
btn.addEventListener(‘click’,()=>{
let buffer = Buffer.from(txt.value, ‘utf-8’);
ipfs.add(buffer)
.then( rsp => console.log(rsp[0].hash))
.catch(err => console.error(err))
})
})

3.3 webpack配置

在D:\test-ipfs-api目录下编写配置文件webpack.config.js:

const webpack = require('webpack');
const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');

module.exports = {
entry: ‘./app.js’,
output: {
path: path.resolve(__dirname),
filename: ‘bundle.js’
},
module: {
loaders: [
{
test: /.js$/,
exclude: /(node_modules|bower_components)/,
loader: ‘babel-loader’,
query: {
presets: [‘es2015’],
plugins: [‘transform-runtime’]
}
}
]
}
}

3.4前端脚本打包

执行webpack打包:

D:\test-ipfs-api> webpack

3.5 配置ipfs的CORS策略

由于需要从网页中访问ipfs节点,这就引入了跨域安全问题,因此我们需要配置ipfs节点使其允许跨域请求:
D:\>ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'

3.6 配置ipfs的API监听地址

由于ipfs节点默认在本机(127.0.0.1)的5001端口监听API请求,因此如果你的浏览器和ipfs节点不在同一台机器上,需要让ipfs节点监听公开地址:

D:\> ipfs config --json Addresses.API '"/ip4/0.0.0.0/tcp/5001"'
当然,如果你的浏览器和ipfs节点在同一台机器上,就不需要进行这个配置了。

3.7配置ipfs的网关的监听地址

由于ipfs节点旳http网关默认在本机(127.0.0.1)的8080端口监听http请求,因此如果你的浏览器和ipfs节点不在同一台机器上,就需要让ipfs网关监听公开地址:
D:\> ipfs config --json Addresses.Gateway '"/ip4/0.0.0.0/tcp/8080"'

3.8测试网页

首先启动ipfs监听:

D:\>ipfs daemon
然后在测试目录下启动web服务器,这里使用python内置的简单服务器,当然你可以使用任何熟悉的web服务器:
D:\test-ipfs-api> python –m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
现在打开你的浏览器,访问http://127.0.0.1:8000/,一切顺利的话,你可以看到一个文本框和一个按钮,点击按钮,即可将文本框的内容上传到ipfs节点。
本文的中文pdf电子书可在百度云盘下载:https://pan.baidu.com/s/1QjnqQhj_Az11iZSJUFDH-Q
                                </div><div data-report-view="{&quot;mod&quot;:&quot;1585297308_001&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/shebao3333/article/details/80009120&quot;,&quot;extend1&quot;:&quot;pc&quot;,&quot;ab&quot;:&quot;new&quot;}"><div></div></div><link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet"></div>
												

windows环境下 ipfs的搭建与使用相关推荐

  1. Windows环境下用Gitblit搭建git服务器

    Windows环境下用Gitblit搭建git服务器 一,下载Gitblit.下载地址:http://gitblit.com/ 现在版本是1.8.0. 二,下载后解压该文件,找到data/目录下的de ...

  2. windows环境下ELK平台搭建

    背景 日志系统主要包括系统日志,应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器的软件,硬件信息,检查配置过程中的错误以及错误发生的原因.通常分析日志可以了解服务器的负荷,性能安全性, ...

  3. 【LittleVGL】Windows环境下利用CodeBlocks搭建LittleVGL的PC模拟器环境配置问题

    本章目的:   1.在学习使用LittleVGL构架搭建GUI图形界面时,使用CodeBlocks IDE集成开发环境来配置和测试GUI系统.   2.解决在搭建LittleVGL环境时遇到的问题   ...

  4. java 内存映射文件进程间通讯_[转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile...

    进程间的通信方式有很多种, 上次我们说了最傻瓜的"共享外存/文件"的方法. 那么, 在本文中, 我们即将学习"共享内存"的方式实现进程间的通信, 这是IPC最快 ...

  5. windows环境下搭建rabbitMQ开发环境

    2019独角兽企业重金招聘Python工程师标准>>> windows环境下搭建rabbitMQ开发环境 1.下载与安装 erlang rabbitmq 是使用erlang语言开发的 ...

  6. 在Windows环境下搭建Android开发环境

    标题:在Windows环境下搭建 Android 开发环境 作者:CrazyPebble 时间:2011年2月28日 声明:此文在参考其他网上资料以及笔者实践总结写下,一来自己可以做一些总结,二来给跟 ...

  7. MemCache在Windows环境下的搭建及启动

    MemCache在Windows环境下的搭建及启动 一.memcache服务器端的安装 1.下载memcached的安装包,memcached_en32or64.zip,下载链接:http://pan ...

  8. Windows环境下Android NDK环境搭建

    转自:http://blog.csdn.net/pengchua/article/details/7582949 前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只 ...

  9. 本机php环境搭建教程:windows环境下wampserver的配置教程——超级详细

    转载自:http://youchunyan5.blog.163.com/blog/static/5896062020123474456352/ 本机php环境搭建教程:windows环境下wampse ...

最新文章

  1. gen_event中的handler和supervised handler
  2. C语言:随笔10--共用体
  3. k8s监控之kube-state-metrics
  4. Windows文件系统过滤驱动开发教程(4,5)
  5. Android组件系列----Activity的生命周期
  6. NIO详解(七):进程间通信(MappedByteBuffer)
  7. CTFshow 爆破 web26
  8. MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16
  9. 苏州飘“彩云” 五年规模破百亿元
  10. 技术思考:也谈知识图谱平台中的数据流程与构建范式思考
  11. 科研项目 | 深度参与前沿课题研究,全英华人教授协会(ABCP)资深学者亲授
  12. 华兴源创成科创板第一股 6月21日起初步询价
  13. 关于videoplayer
  14. YOLOv5网络详解
  15. Chromium内核浏览器编译记(二)UI定制
  16. 给ImageView做圆角处理
  17. 上亿只“小白鼠”有救了,AI可检测化学物质甚至还更准确
  18. 35岁以后你还能干嘛?
  19. 前后端分离之图片上传服务端处理方法(亲测通过)
  20. java 消息推送的几种方式比较

热门文章

  1. 最新无限制188旅游系统V7.0升级补丁 全社通V2.0补丁 Tourex 5.0源码下载
  2. PyTorch实战使用Resnet迁移学习
  3. HDU-1253-胜利大逃亡
  4. 大学计算机基础专升本复习提纲
  5. 读书分享-《心智突围》上
  6. C(判断一个字母是否为英语字母)
  7. 微信小程序开发过程中出现的内存泄漏问题
  8. 北大核刊最新版2020目录_2021年一建教材出来了?最新版考点速记手册,早备考早通关...
  9. 通过腾讯云cos做视频点播服务
  10. 范冰冰戛纳再惊艳 搜狗网址导航带你重温女神经典作品