IPFS-安装与运行环境配置
文章目录
- 一、项目选择
- 二、二进制安装 IPFS
- 1. linux 下安装
- 1.1 Nix
- 2. Window下安装
- 三、源码安装 IPFS 和 配置
- 1. ipfs daemon命令
- 修改http默认只监听本地端口
- 过程问题整理
- 2. ipfs goland
- 四、ubuntu下安装和使用
- 什么是snap
- 五、ipfs http客户端库
- 1. python
- 2. js
- 六、参考
一、项目选择
IPFS 协议包括4种不同语言的实现:
从 Juan Benet 在2015年5月5日在IPFS 网络上存储第一段数据 Hello World^11 开始,目前已经发展到 7k+ star, 200位代码贡献者。go-ipfs 版本也迭代到 0.4.18 版本。
IPFS 协议目前主要是 go-ipfs 和 js-ipfs 实现得较为完善。这里我们采用 golang 实现的版本验证测试。
二、二进制安装 IPFS
根据自己的操作系统选择相应的安装包
https://dist.ipfs.io/#go-ipfs
1. linux 下安装
官网: https://github.com/ipfs/go-ipfs#install-prebuilt-packages
二进制安装有两种方式:
方式一:https://ipfs.io/ipns/dist.ipfs.io#go-ipfs 直接下载 IPFS 安装包
方式二: 使用linux 包管理工具nix
如上,它通过nix 这个包管理软件来安装。
nix官网: https://nixos.org/download.html
#安装nix
curl -L https://nixos.org/nix/install | sh
# 通过nix直接安装
nix-env -i ipfs
方式一,下载完成 IPFS 安装包后,我们将它解压到你的可执行文件路径($PATH)之下,执行命令:
$ tar xvfz go-ipfs.tar.gz
$ cd go-ipfs
$ ./install.sh
测试:
$ ipfs help
USAGE:
ipfs - Global p2p merkle-dag filesystem.
1.1 Nix
官网: https://nixos.org/
Nix
For Linux and MacOSX you can use the purely functional package manager Nix:
$ nix-env -i ipfs
You can also install the Package by using its attribute name, which is also ipfs.
Nix是一个强大的Linux和其他Unix系统的包管理器,它使包管理变得可靠和可复制。在不同的机器上共享您的开发和构建环境。
NixOS是一个Linux发行版,具有独特的包和配置管理方法。它建立在Nix包管理器之上,是完全声明式的,使升级系统更加可靠,并且具有许多其他优点。
2. Window下安装
下载地址:https://dist.ipfs.io/#go-ipfs (选windows binary)
解压
创建一个ipfs节点
执行:.\ipfs.exe init
查看节点ID
执行:.\ipfs.exe id
启动节点服务器
执行:.\ipfs.exe daemon打开 http://localhost:5001/webui 浏览web ui界面
往节点中新增文件或目录
新增文件: .\ipfs.exe add hello.txt
新增目录: .\ipfs.exe add -r hello
备注:可以通过文件hash直接访问文件
.\ipfs.exe cat /ipfs/QmYx4BnhnLXeMWF5mKu16fJgUBiVP7ECXh7qcsUZnXiRxc
https://ipfs.io/ipfs/QmYx4BnhnLXeMWF5mKu16fJgUBiVP7ECXh7qcsUZnXiRxc
将节点ID与文件Hash进行绑定
绑定后,只需访问 https://ipfs.io/ipns/节点ID 就可以访问对应的文件或目录了
注意:文件或目录更新后,需要重新进行绑定
绑定操作: .\ipfs.exe name publish 文件或目录的hash值
三、源码安装 IPFS 和 配置
官网参考: https://github.com/ipfs/go-ipfs#download-and-compile-ipfs
首先是下载节点软件IPFS
#git clone https://github.com/ipfs/go-ipfs.git #$ cd go-ipfs #$ make install# 使用下面方法,下载成功了 $ go get -u -d github.com/ipfs/go-ipfs $ cd $GOPATH/src/github.com/ipfs/go-ipfs $ make install
$GOPATH没有设置,Go 1.8 版本之后,GOPATH 默认在用户目录的 go 文件夹下。
/root/go/bin 下 生成有刚才安装的ipfs命令
[root@VM_0_14_centos bin]# ls ipfs [root@VM_0_14_centos bin]# pwd /root/go/bin
可以使用ln (ln [选项] 源文件 目标文件) 建立软连接 方便使用
ln -s /root/go/bin/ipfs /usr/sbin/ipfs
初始化本地仓库
和git类似,ipfs节点也要初始化一个本地仓库,执行init子命令来初始化本地仓库,ipfs init在home目录下面运行 ipfs init 进行初始化,完成ipfs节点的创建
cd /root/go/bin/ ./ipfs init
看到如下提醒,说明已经安装成功!
[root@VM_0_14_centos bin]# ./ipfs init initializing IPFS node at /root/.ipfs generating 2048-bit RSA keypair...done peer identity: QmZa1uirV57QcKj5CLv9myxVJ5LyYLs7cdFdETPEtrL1px to get started, enter:ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme[root@VM_0_14_centos bin]# ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme -bash: ipfs: command not found [root@VM_0_14_centos bin]# ./ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme Hello and Welcome to IPFS!██╗██████╗ ███████╗███████╗ ██║██╔══██╗██╔════╝██╔════╝ ██║██████╔╝█████╗ ███████╗ ██║██╔═══╝ ██╔══╝ ╚════██║ ██║██║ ██║ ███████║ ╚═╝╚═╝ ╚═╝ ╚══════╝If you're seeing this, you have successfully installed IPFS and are now interfacing with the ipfs merkledag!------------------------------------------------------- | Warning: | | This is alpha software. Use at your own discretion! | | Much is missing or lacking polish. There are bugs. | | Not yet secure. Read the security notes for more. |-------------------------------------------------------Check out some of the other files in this directory:./about./help./quick-start <-- usage examples./readme <-- this file./security-notes [root@VM_0_14_centos bin]#
执行以上命令后,或者用户的根目录(linux:/root/ 或 /home/xxx windows:下C:\Users\Administrator.ipfs)下生成一个名为.ipfs文件夹用于存储节点数据。
ipfs init也就是ipfs初始化。通过初始化我们创建了一个本地的离线IPFS节点在这个离线节点中我们也可以做一些简单的操作。比如添加文件、查看文件内容、查看版本、查看配置等。
打开ipfs配置文件
.ipfs节点的默认存储空间为10个G,如果需要修改可以在~/.ipfs/config文件中修改。将"StorageMax": "10GB"修改为其他值即可。
查看节点ID
./ipfs id
添加文件到节点
添加命令:ipfs add filename
查看命令:ipfs cat 添加文件时返回的哈希值具体操作:
创建一个文件并在里面写入"123456":
添加到本地节点:
添加成功后,会返回该文件的哈希,我们可以通过它来查看刚刚添加的文件:[root@VM_0_14_centos bin]# touch ipfsfile.txt [root@VM_0_14_centos bin]# echo "123456" > ipfsfile.txt [root@VM_0_14_centos bin]# ./ipfs add ipfsfile.txt added QmQU2gS4gZ7TpiTECjDUxdQFd9bBBEWxDxPPfhLfYHVuei ipfsfile.txt7 B / 7 B [===============================================================================] 100.00%[root@VM_0_14_centos bin]# ./ipfs cat QmQU2gS4gZ7TpiTECjDUxdQFd9bBBEWxDxPPfhLfYHVuei 123456 [root@VM_0_14_centos bin]#
你需要记录下这个编码,因为需要使用它来访问本地仓库(或ipfs网络)中的文件。
注意:ipfs并不会无节制地将你本地仓库中的文件分布到其他ipfs节点中,如果没有其他的ipfs节点搜索你的文件(的哈希值),那么你本地仓库中的文件将始终只存在于本地。
将节点接入网络
IPFS是分布式的全球存储网络。也就是说可以随时跟全球的计算机进行通信并做数据交换。显而易见离线的情况下肯定无法跟其他节点进行通信对不对 所以需要加入到IPFS网络中。在IPFS中要加入到网络中相当简单只需要运行一个简单的命令就能实现。使用命令ipfs daemon,通过ipfs daemon 实现和其他节点链接
[root@VM_0_14_centos bin]# ./ipfs daemon
只有当启动监听后,节点才能够接受ipfs网络中的内容检索请求,参与内容的交换与分布。
启动后在浏览器中输入:https://ipfs.io/ipfs/QmQU2gS4gZ7TpiTECjDUxdQFd9bBBEWxDxPPfhLfYHVuei
即可查看刚刚添加的文件的具体内容。
打开Web节点客户端
http://localhost:5001/webui
1. ipfs daemon命令
ipfs daemon命令用来启动一个连接网络的IPFS节点。
命令行
ipfs daemon [--init] [--routing=<routing>] [--mount] [--writable] [--mount-ipfs=<mount-ipfs>] [--mount-ipns=<mount-ipns>] [--unrestricted-api] [--disable-transport-encryption] [--enable-gc] [--manage-fdlimit=false] [--offline] [--migrate] [--enable-pubsub-experiment] [--enable-mplex-experiment=false]
选项
-init bool - 是否使用默认设置自动初始化ipfs,默认值:false
--routing string - 路由选项,默认值:dht
--mount bool - 是否将IPFS挂载到文件系统,默认值:false
--writable bool - 是否允许使用`POST/PUT/DELETE`修改对象,默认值: false.
--mount-ipfs string - 当使用--mount选项时IPFS的挂接点,默认值采用配置文件中的设置
--mount-ipns string - 当使用--mount选项时IPNS的挂接点,默认值采用配置文件中的设置
--unrestricted-api bool - 是否允许API访问未列出的哈希,默认值:false
--disable-transport-encryption bool - 是否进制传输层加密,默认值:false。当调试协议时可开启该选项
--enable-gc bool - 是否启用自动定时仓库垃圾回收,默认值:false
--manage-fdlimit bool - 是否按需自动提高文件描述符上限,默认值:false
--offline bool - 是否离线运行,即不连接到网络,仅提供本地API,默认值:false
--migrate bool - true对应于mirage提示时输入yes,false对应于输入no
--enable-pubsub-experiment bool - 是否启用发布订阅(pubsub)特性,该特性目前尚处于实验阶段
--enable-mplex-experiment bool - 是否启用`go-multiplex`流多路处理器,默认值:true
说明
服务进程将在指定的端口监听网络连接。使用ipfs config Addresses 命令修改默认端口。
例如,修改网关监听端口:
ipfs config Addresses.Gateway /ip4/127.0.0.1/tcp/8082
同样的方式修改API地址:
ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001
在修改地址后,确保重新启动服务进程以便生效。
默认情况下,网络仅在本地可以访问,如果希望允许其他计算机访问,可以 使用地址0.0.0.0。例如
./ipfs config Addresses.Gateway /ip4/0.0.0.0/tcp/8080
**当开放API访问时请千万小心,这存在一定的安全风险,因为任何人都可以 远程控制你的节点。**如果你希望远程控制节点,请使用防火墙、授权代理 或其他服务来保护该API访问地址。
修改http默认只监听本地端口
ipfs本身开发了基于http的服务框架,客户端发送http post请求到远程节点,远程节点接受请求并处理。默认的http api接口端口地址是:5001,可以直接修改config文件或通过命令修改。
命令修改: $ ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001
另外ipfs默认http只监听本地端口,想要支持远程访问,需要API配置做如下修改: /ip4/127.0.0.1——>/ip4/0.0.0.0
过程问题整理
外网访问webui,web界面报错如下:
您的 IPFS 守护程序是否正在运行?
Failed to connect to the API.
Make sure you configure your IPFS API to allow cross-origin (CORS) requests, running the commands below:
解决方法:
./ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://taigu.xxx.cn:5002", "http://127.0.0.1:5001", "https://webui.ipfs.io"]'
./ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "POST"]'
2. ipfs goland
四、ubuntu下安装和使用
你可以使用snapcraft来安装IPFS
snap install ipfs
root@VM-0-2-ubuntu:~# ipfs init
generating ED25519 keypair...done
peer identity: 12D3KooWDretF1EQoQ2My1NYUG1gSifhTfeevzkrFwySZGxAwAKb
initializing IPFS node at /root/snap/ipfs/common
to get started, enter:ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readmeroot@VM-0-2-ubuntu:~#
什么是snap
Ubuntu离线部署snap软件包
参考URL: http://jingsam.github.io/2018/11/22/install-snaps-offline.html
snap来自于Snappy, Snappy是Canonical公司的一个包管理和软件部署系统。它最初是为Ubuntu手机操作系统设计的。
在离线部署方面,Windows明显比Linux做得好,Windows软件包通常会将软件所需的依赖打包,部署时只需拷贝一个软件安装包即可。那Linux有没有类似Windows软件安装包的东西呢?幸运的是,Ubuntu提供了snap软件包机制,可以用来简化离线部署。
snap软件包类似于windows的软件安装包,将所需的依赖都统一打包到软件包中,部署时只需拷贝snap文件。另外,snap也加强了安全隔离机制,通过注册软件包的签名和权限控制信息,使得snap软件运行在“沙盒”环境中。
snap是一种全新的软件包管理方式,它类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立。所以使用snap包的好处就是它解决了应用程序之间的依赖问题,使应用程序之间更容易管理。但是由此带来的问题就是它占用更多的磁盘空间。
Snap的安装包扩展名是.snap,类似于一个容器,它包含一个应用程序需要用到的所有文件和库(snap包包含一个私有的root文件系统,里面包含了依赖的软件包)。它们会被安装到单独的目录;各个应用程序之间相互隔离。使用snap有很多好处,首先它解决了软件包的依赖问题;其次,也使应用程序更容易管理。
现在支持snap的应用并不多,snap软件包一般安装在/snap目录下
snap不同于以往的apt,通过它可以简单的解决安装过程中的依赖问题
五、ipfs http客户端库
Ipfs节点提供和REST API接口,可供我们在程序代码中操作节点进行文件的上传等操作。不过大多数情况下,我们并不需要直接操作这个REST开发接口,而是使用经过封装的更友好的ipfs-api。
即官方封装好了一些,ipfs 客户端工具。
1. python
https://pypi.org/project/ipfsapi/
2. js
https://www.npmjs.com/package/ipfs-http-client
六、参考
ipfs安装和配置
参考URL: https://www.jianshu.com/p/ba332e67278a
ipfs节点安装与使用
参考URL: https://www.cnblogs.com/helloworld2018/p/8971449.html
https://github.com/xipfs/IPFS-Internals/blob/master/ebook/01.0.md
[推荐]ipfs命令手册
参考URL: http://cw.hubwiz.com/card/c/ipfs/1/1/5/
在CentOS 7/CentOS 8上安装Snapd和snap应用程序
参考URL: https://www.linuxidc.com/Linux/2020-03/162485.htm
IPFS-安装与运行环境配置相关推荐
- java安装及运行环境配置
本文将讲解java的安装以及相关运行环境的配置. 安装 安装包可以去官网下载.版本尾号为偶数一般为测试版本,所以推荐下载奇数尾数安装包. 安装界面,一直下一步即可. 安装路径设置,如果为节省c ...
- Asymptote 的编译安装与运行环境配置
简介 Asymptote 是一种支持二维与三维绘图并且对 TeX 非常友好的科学绘图编程语言. 从 Asymptote svn 仓库迁出源码 $ svn co http://asymptote.svn ...
- 安装JDK1.8+环境配置
安装JDK1.8+环境配置 1.下载JDK 2.安装JDK 3.环境配置 3.1 新建系统变量 3.2 添加Path路径 3.3 使用cmd命令行验证是否环境配置成功 1.下载JDK 直接官网下载:h ...
- laravel5.8笔记一:安装与服务器环境配置
laravel版本:5.8 环境要求: PHP >= 7.1.3 OpenSSL PHP 扩展 PDO PHP 扩展 Mbstring PHP 扩展 Tokenizer PHP 扩展 XML P ...
- Linux下安装Dubbo运行环境
Linux下安装Dubbo运行环境 1.1.1 安装jdk zk首先需要安装jdk环境. yum -y install glibc.i686 #jdk依赖glibc mkdir /u ...
- eclipse下载,安装,JDk环境配置教程
eclipse下载,安装,JDk环境配置教程(多图) 第一步:下载eclipse,并安装. 下载链接:http://www.eclipse.org/downloads/ 点击 Download Pac ...
- JDK安装、java环境配置(转)
JDK安装.java环境配置 JDK是Java语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA ...
- Win10系统下Python安装和Geany环境配置的几点总结
Win10系统下Python安装和Geany文本编辑器配置的几点总结 (START OF MY BLOG LIFE) 一.Python的安装 Python直接可以在官网下载(https://www.p ...
- Oracle 12cR1 RAC 在VMware Workstation上安装(上)—OS环境配置
Oracle 12cR1 RAC 在VMware Workstation上安装(上)-OS环境配置 1.1 整体规划部分 1.1.1 所需软件介绍 Oracle RAC不支持异构平台.在同一个集群 ...
- 安装jre运行环境_如何下载安装java运行环境jre
如果你只需要运行Java程序或Applet,下载并安装它即可.如果你要自行开发Java软件,请下载JDK.在JDK中附带有JRE.注意由于Microsoft对Java的支持不完全,请不. . Java ...
最新文章
- 中如何构造有参和无惨_CAD制图初学入门:CAD机械软件中如何构造孔?
- 前端笔记(6)css布局机制,浮动,清除浮动,图片格式,ps切片工具及插件
- php lodop 实例,Vue使用lodop实现打印小结
- 分布式内存数据库---Redis的持久化
- Batch Normalization原文详细解读
- mysql 数据传输 定时,MySQL数据库定时备份的实现方法
- android点击地址调用地图,Android 实现点击按钮 调用手机外部地图导航
- OpenCV Mat基础认知感
- 【转】java注解-最通俗易懂的讲解
- 论文重复率太高咋办?Python来帮你解决
- MCSA / Windows Server 2016 使用Hyper-V组件搭建实验环境
- eureka服务下架、服务续期及eureka源码分析
- 解决多旅行商(MTSP)的分组遗传算法(GGA-SS)
- bedgraph文件转bigwig文件
- 疑因内部宫斗被离职,中兴 70 后程序员从公司坠楼 ​​​​
- MIT又出新玩法,利用AI可轻松分离视频中的乐器声音
- VMware workstation虚拟机REHL8下配置安装Django 4.0.6 +uwsgi 2.0.20 +nginx1.22+Mariadb10.9.1
- 福昕阅读器不能编辑情况
- TCP/IP协议:最大传输单元MTU 路径MTU
- 计算机映像缺失磁盘如何修复,Win10安装会遇到的问题汇总及解决方法