概述
文章目录
- 1. ipfs安装
- 1.1 二进制安装
- 1.1.1 启动ipfs服务
- 1.1.2 配置文件修改
- 1.2 docker安装ipfs
- 3. ipfs数据迁移
- 4. 访问webui
- 5. 通过go-sdk使用ipfs服务
- 6. 参考文档
1. ipfs安装
1.1 二进制安装
参考文档:https://docs.ipfs.tech/install/command-line/#official-distributions
# 1. 从官网下载资源文件
wget https://dist.ipfs.tech/kubo/v0.16.0/kubo_v0.16.0_linux-amd64.tar.gz
# 2. 解压资源文件
tar zxvf https://dist.ipfs.tech/kubo/v0.16.0/kubo_v0.16.0_linux-amd64.tar.gz
# 3. 执行install.sh
./install.sh
1.1.1 启动ipfs服务
# 1. 初始化ipfs
ipfs init # 执行完后,默认初始化配置在/root/.ipfs目录下。可以通过设置环境变量自行指定初始化目录:export IPFS_PATH=/data_ipfs
# 2. 启动ipfs服务
ipfs daemon # 此时ipfs是在前台执行,退出终端后,服务自行退出
说明:直接启动ipfs服务后,本地节点会自动连接到官网的节点,可以通过: ipfs swarm peers查看对应节点
# 3. 将ipfs加入系统服务,使用sytemctl 进行管理
vim /usr/lib/systemd/system/ipfs.service
[Unit]
Description=IPFS daemon
After=network.target
[Service]
Environment=IPFS_PATH=/data_ipfs # 注意此处需要和init的目录保持一致
ExecStart=/usr/local/bin/ipfs daemon
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target
# 4. 加载系统配置
systemctl daemon-reload
# 5. 通过systemctl 启动ipfs服务
systemctl start ipfs
# 6. 查看ipfs状态
systemctl status ipfs
# 7. 停止ipfs
systemctl stop ipfs
1.1.2 配置文件修改
ipfs的配置文件在IPFS_PATH目录下的config。此时的ipfs服务除4001端口外不能够被其他服务器访问,因为绑定的ip地址为127.0.0.1。如果需要访问5001和8080对应端口。需要修改config中对应绑定的ip地址即可
1.2 docker安装ipfs
# 1. 从dockerhub上拉取最新的ipfs镜像
docker pull ipfs/go-ipfs:latest
# 2. 启动ipfs服务
version: "3"
services:
ipfs:
container_name: ipfs
image: ipfs/go-ipfs:latest
restart: always
environment:
- privileged=true
networks:
- outside
volumes:
- "./data/ipfs:/data/ipfs"
ports:
- "5001:5001"
- "4001:4001"
- "8080:8080"
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
networks:
outside:
external:
name: ipfs
说明:docker部署的ipfs服务。经过自行一段时间的使用,发现用docker部署的ipfs服务,跑的时间两三个星期后。就无法docker-compose down掉。无论是kill ipfs服务,还是docker-compose down还是关掉docker进程。都会是docker服务崩溃。只能通过重启服务器进行解决。通过在网上搜索,发现有网友解释是因为3.x的内核无法更好的适配docker的overlay2相关特性,需要4.x内核才可以。所以不建议使用docker进行生产环境的部署。
3. ipfs数据迁移
如果需要迁移ipfs数据时。只需要将原有ipfs服务中的IPFS_PATH映射到新的ipfs服务即可
# 1. 将旧的ipfs服务拷贝到需要部署新的ipfs服务器中
# 2. 设置IPFS_PATH为拷贝的旧ipfs服务的目录
# 3. 启动新的ipfs服务即可
4. 访问webui
# 1. 通过localhost:5001/webui访问可视化管理界面
说明:如果不是本地访问,需要改5001绑定的服务ip(不能为127.0.0.1),需要改为0.0.0.0或者对应服务器(部署ipfs)的ip地址
5. 通过go-sdk使用ipfs服务
package utils
import (
"bytes"
"context"
"encoding/base64"
"fmt"
"io/ioutil"
shell "github.com/ipfs/go-ipfs-api"
)
type Ipfs struct {
Url string
Sh *shell.Shell
}
func NewIpfs(url string) *Ipfs {
sh := shell.NewShell(url)
return &Ipfs{
Url: url,
Sh: sh,
}
}
// UploadIPFS 上传数据到ipfs
func (i *Ipfs) UploadIPFS(str string) (hash string, err error) {
hash, err = i.Sh.Add(bytes.NewBufferString(str), shell.Pin(true))
if err != nil {
return
}
return
}
// UnPinIPFS 从ipfs上删除数据
func (i *Ipfs) UnPinIPFS(hash string) (err error) {
err = i.Sh.Unpin(hash)
if err != nil {
return
}
err = i.Sh.Request("repo/gc", hash).
Option("recursive", true).
Exec(context.Background(), nil)
if err != nil {
return
}
return nil
}
// CatIPFS 从ipfs下载数据
func (i *Ipfs) CatIPFS(hash string) (string, error) {
read, err := i.Sh.Cat(hash)
if err != nil {
return "", err
}
body, err := ioutil.ReadAll(read)
return string(body), nil
}
6. 参考文档
https://www.cnblogs.com/yoyo1216/p/12450487.html
https://docs.ipfs.tech/install/command-line/#official-distributions
最后
以上就是悦耳糖豆为你收集整理的ipfs的安装和go-ipfs-api的简单使用1. ipfs安装3. ipfs数据迁移4. 访问webui5. 通过go-sdk使用ipfs服务6. 参考文档的全部内容,希望文章能够帮你解决ipfs的安装和go-ipfs-api的简单使用1. ipfs安装3. ipfs数据迁移4. 访问webui5. 通过go-sdk使用ipfs服务6. 参考文档所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复