zoukankan      html  css  js  c++  java
  • IPFS:搭建IPFS网络,多服务器

    1.准备机器

    准备几台虚拟机,不分主从,我用的是centos7,我这里准备了两台服务器。

    2.下载与安装

    这里需要各个节点都进行安装

    我这里使用的是0.4版本的最后一个小版本。官网一般进不去,推荐github。

    下载地址:https://github.com/ipfs/go-ipfs/releases/download/v0.4.23/go-ipfs_v0.4.23_linux-arm64.tar.gz

    更多版本:https://github.com/ipfs/go-ipfs/releases

    # 解压
    tar -zvxf go-ipfs_v0.4.23_linux-amd64.tar.gz
    
    #安装
    cd go-ipfs
    ./install.sh
    
    #测试
    ipfs help

    3.初始化节点

    3.1.初始化

    各个节点都需要初始化

    # 初始化
    ipfs init

     3.2.记录下节点的id

    huawei:QmTWfC********************LMMK4xKwArLL
    aliyun:QmcgkDiP********************cCEdZZeh8QKr

    3.3.修改存储容量:  

    修改~/.ipfs/config中"StorageMax"字段即可(目前默认为10GB)

    3.4.修改访问路径:

    ipfs的api和gateway默认访问路径为127.0.0.1.如需要其他机器访问,需要修改~/.ipfs/config中api和gateway字段,将127.0.0.1替换为0.0.0.0

    3.5.http corps问题

    非本地访问会产生跨域问题,需要在设置中注明。

    ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
    ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'
    ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'

    注意: 开发环境设置中“*”意为允许所有域名访问,生产环境下应该将跨域设置为指定域名或关闭跨域

    3.6查看节点ID

    如果忘记了id,可以通过ipfs id命令查看

    4.创建共享密钥

    # 下载密钥工具
    git clone https://github.com/Kubuxu/go-ipfs-swarm-key-gen.git
    
    # 编译go-ipfs-swarm-key-gen,当前目录会成一个ipfs-swarm-key-gen的可执行二进制文件
    go build -o ipfs-swarm-key-gen go-ipfs-swarm-key-gen/ipfs-swarm-key-gen/main.go
    
    # 生成密钥
    ./ipfs-swarm-key-gen > ~/.ipfs/swarm.key

    # 分发密钥
    scp ~/.ipfs/swarm.key root@*.*.*.*:~/.ipfs/

    注意:*.*.*.* 为你的ip,这里密钥只生成一次,每个服务器使用同一个密钥

    5.添加启动节点

    5.1.启动

    每个节点都需要执行,启动

    # 删除默认启动节点(删除公网节点)
    ipfs bootstrap rm all 
    
    # 各节点分别将其他节点添加到bootstrap列表
    ipfs bootstrap add /ip4/被添加节点的ip地址/tcp/4001/ipfs/被添加节点的ID值
    
    # 启动节点
    nohup ipfs daemon >> ./log/ipfs.log 2>&1 &

    5.2.测试

    1.huawei添加文件

    ipfs add a.txt

    2.aliyun获取文件

    ipfs get QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH

    3.浏览器访问:ip:port/ipfs/Qmxxxxxxx,两台服务器均能访问

    6.设置ipfs服务

    cd /lib/systemd/system/
    vim ipfs.service
    
    ### 插入以下内容
    [Unit]
    Description=IPFS
    
    [Service]
    ExecStart=/usr/local/bin/ipfs daemon
    Restart=always
    User=root
    Group=root
    
    [Install]
    WantedBy=multi-user.target
    
    # 启动
    service ipfs start

    7.安装可视化管理页面WEBUI

    # 下载源码
    git clone https://github.com/ipfs-shipyard/webui
    
    # 安装
    cd webui
    npm install
    
    # 运行
    npm start

    注意:在安装过程中可能遇到错误:make: g++ : Command not found,执行 yum -y install gcc+ gcc-c++ 即可

    如果页面显示 Failed to connect to the API. 需要在页面下方的API ADDRESS处配置API地址:/ip4/*.*.*.*/tcp/5001 , *.*.*.*为你的ip

     运行效果:

    8.API

    所有命令行支持的命令都有对应的Restful api实现,官方文档:

    https://docs.ipfs.io/reference/api/http/

    中文参考:

    https://blog.csdn.net/weixin_43132569/article/details/82628570

    9.SDK

    GO语言:

    https://github.com/ipfs/go-ipfs-api

    Java:

    https://github.com/ipfs-shipyard/java-ipfs-http-client

    需要配置仓库地址

    <repositories>
      <repository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
      </repository>
    </repositories>
    
    <dependencies>
      <dependency>
          <groupId>com.github.ipfs</groupId>
          <artifactId>java-ipfs-http-client</artifactId>
          <version>$LATEST_VERSION</version> 
      </dependency>
    </dependencies>

    参考:https://blog.csdn.net/u012140251/article/details/103436712

  • 相关阅读:
    递延收益的主要账务处理
    少数股东权益
    一揽子交易中处置价款与净资产账面价值差额为什么计入其他综合收益
    为什么权益法下其他综合收益合并时要计入投资收益
    R语言代写实现MCMC中的Metropolis–Hastings算法与吉布斯采样
    加速R语言代码的策略
    R语言代写:EM算法和高斯混合模型的实现
    R语言代写进行网站评论文本数据挖掘聚类
    R语言代写对推特数据进行文本情感分析
    WEKA代写文本挖掘分析垃圾邮件分类模型
  • 原文地址:https://www.cnblogs.com/fdzang/p/13091474.html
Copyright © 2011-2022 走看看