星际文件系统是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件存储系统。
官网:https://ipfs.io/
github(golang实现):https://github.com/ipfs/go-ipfs
golang Linux搭建Golang开发环境
本机系统 deepin V20,其他Linux系统也适用
我这边打算部署一个3节点的IPFS网络,所以创建三个文件夹来管理数据,以及一个存放集群秘钥的目录
mkdir /mnt/ipfs_nodes #所有节点目录
mkdir /mnt/ipfs_nodes/key #集群私钥目录
mkdir /mnt/ipfs_nodes/ipfs_1 #IPFS节点1
mkdir /mnt/ipfs_nodes/ipfs_2 #IPFS节点2
mkdir /mnt/ipfs_nodes/ipfs_3 #IPFS节点3
git clone https://github.com/ipfs/go-ipfs.git
cd go-ipfs
make install
IPFS_PATH=/mnt/ipfs_nodes/ipfs_1 ipfs init #初始化节点1
IPFS_PATH=/mnt/ipfs_nodes/ipfs_2 ipfs init #初始化节点2
IPFS_PATH=/mnt/ipfs_nodes/ipfs_3 ipfs init #初始化节点3
因为我是单机部署多节点,所以每次操作需要指定操作节点目录,如果是部署单节点,那么就可以在环境变量中提前配置 IPFS_PATH 变量
因为我们是部署私有网络,所以需要移除原有的引导程序节点,如果不删除,启动后就会同步IPFS主网的数据
IPFS_PATH=/mnt/ipfs_nodes/ipfs_1/ ipfs bootstrap rm --all
IPFS_PATH=/mnt/ipfs_nodes/ipfs_2/ ipfs bootstrap rm --all
IPFS_PATH=/mnt/ipfs_nodes/ipfs_3/ ipfs bootstrap rm --all
#获取创建秘钥工具
go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
#创建秘钥的命令
ipfs-swarm-key-gen > 目录地址/swarm.key
#例如
#ipfs-swarm-key-gen > /mnt/ipfs_nodes/key/swarm.key
#copy swarm.key到各个节点根目录
cp /mnt/ipfs_nodes/key/swarm.key /mnt/ipfs_nodes/ipfs_1
cp /mnt/ipfs_nodes/key/swarm.key /mnt/ipfs_nodes/ipfs_2
cp /mnt/ipfs_nodes/key/swarm.key /mnt/ipfs_nodes/ipfs_3
我这里主要配置的是程序运行的端口,因为IPFS默认的端口是一致的,我单机部署多节点就得区分,如果是单机部署且不考虑端口占用情况可以跳过这一步
我的配置情况
ipfs_1 port: 15001,18081,14001
ipfs_2 port: 15002,18082,14002
ipfs_3 port: 15003,18083,14003
这里我仅以 ipfs_1 节点做演示
vim /mnt/ipfs_nodes/ipfs_1/config
export LIBP2P_FORCE_PENT=1|IPFS_PATH=/mnt/ipfs_nodes/ipfs_1/ ipfs daemon &
# export LIBP2P_FORCE_PNET=1表示您将节点强制为私有
这里需要说明以下,& 是表示后台运行,第一次接触IPFS,建议不带 &运行,这样可以查看节点信息,像这样
在启动其他节点时需要先做一个事情,就是添加 bootstrap(引导程序节点)。这里跟前面的删除引导程序节点的默认条目动作是相呼应的
简单说就是让 3个节点建立起链接
首先,我们的ipfs_1已经运行起来了,现在是一个独立的节点。那么我们就给ipfs_2,ipfs_3添加ipfs_1的peer id
IPFS_PATH=/mnt/ipfs_nodes/ipfs_1/ ipfs id
细心的朋友应该发现了,这个ID就是在ipfs init初始化时就会展示出peer identity是一样的
命令格式
ipfs bootstrap add /ip4//tcp//ipfs/
像这样
IPFS_PATH=/mnt/ipfs_nodes/ipfs_2 ipfs bootstrap add /ip4/127.0.0.1/tcp/14001/ipfs/12D3KooWQsNLH5bqsXUJ4RjaEwDYu1SLQzm8AEQpZDfP16o4BRzB
IPFS_PATH=/mnt/ipfs_nodes/ipfs_3 ipfs bootstrap add /ip4/127.0.0.1/tcp/14001/ipfs/12D3KooWQsNLH5bqsXUJ4RjaEwDYu1SLQzm8AEQpZDfP16o4BRzB
export LIBP2P_FORCE_PENT=1|IPFS_PATH=/mnt/ipfs_nodes/ipfs_2/ ipfs daemon
export LIBP2P_FORCE_PENT=1|IPFS_PATH=/mnt/ipfs_nodes/ipfs_3/ ipfs daemon
安装完成!!!
有问题或意见欢迎留言!