centos安装部署IPFS

下载IPFS

  • 官网(https://dist.ipfs.io/#go-ipfs) 下载Linux版本的ipfs(需要访问国外网站)
  • 使用wget下载
wget https://github.com/ipfs/go-ipfs/releases/download/v0.4.23/go-ipfs_v0.4.23_linux-amd64.tar.gz

解压文件

tar zxvf go-ipfs_v0.12.0_linux-amd64.tar.gz

进入主目录并进行安装

cd go-ipfs/
./install.sh

查看IPFS版本

ipfs version

查看配置文件

ipfs config show

注意:

建议5001端口只开放给业务服务器,其他禁止访问!为了安全!!!!

修改配置文件

ipfs config edit

// 可能会出现下面的错误
// Error: ENV variable $EDITOR not set

// 为ipfs选择编辑器
export EDITOR=vi
ipfs config edit

启动ipfs,并打开web页面

ipfs daemon
http://xxx.xxx.com:8088/ipfs/QmSoASxb8aNVGk3pNWpZvXEZTQKxjGeu9bvpYHuo5bP1VJ
http://xxx.xxx.com:5001/webui

Go连接ipfs

func MainTest() {
    hashMap := make(map[int]string, 10000)
    // 上传文件 -- 可以是前端上传,也可以是后端上传
    file := fmt.Sprintf("ipfs/1111.png")
    raw := Read(file)
    if raw != nil {
        hash, err := UploadIPFS(raw)
        if err != nil {
            log.Println("UploadIPFS err", err)
        } else {
            hashMap[0] = fmt.Sprintf("https://ipfs.io/ipfs/%s?filename=%s", hash, hash)
        }
        log.Println("hash", hash)
    }
    // 存储文件中
    WriteHash("hash.json", hashMap)
}

func UploadIPFS(raw []byte) (string, error) {
    sh := shell.NewShell(IPFS_Host)
    reader := bytes.NewReader(raw)
    fileHash, err := sh.Add(reader)
    if err != nil {
        return "", err
    }
    fmt.Println(fileHash)
    return fileHash, nil
}

func NewShell(url string) *Shell {
    c := &gohttp.Client{
        Transport: &gohttp.Transport{
            Proxy:             gohttp.ProxyFromEnvironment,
            DisableKeepAlives: true,
        },
    }

    return NewShellWithClient(url, c)
}

var IPFS_Host = "http://xxx.xxx.com:5001"

本期就到这里,下期继续未完讲解。

同学们,兴趣是最好的老师;只争朝夕,不负韶华!加油!


参考资料:

Go语言中文文档

http://www.golang.ltd/

Go语言在线编辑器:

http://OL.Golang.LTD/

LollipopGo社区(筹建中)

https://www.LollipopGo.Com/