【IPFS + 区块链 系列】 入门篇 - IPFS+IPNS+个人博客搭建-阿里云开发者社区

开发者社区> 黎跃春> 正文

【IPFS + 区块链 系列】 入门篇 - IPFS+IPNS+个人博客搭建

简介:
+关注继续查看

孔壹学院:国内区块链职业教育引领品牌。

作者:黎跃春,孔壹学院创始人,区块链、高可用架构师

微信:liyc1215

区块链博客:http://liyuechun.org

在阅读这篇文章之前,你需要先学习【IPFS + 区块链 系列】 入门篇 - IPFS环境配置这篇文章。

目录

1. 如何在IPFS新增一个文件

1.1 新建file.txt文件

打开终端,切换到桌面,新建一个文件夹1121,切换到1121中,通过vi新建一个文件file.txt,文件里面输入春哥微信号liyc1215保存并且退出。

localhost:Desktop yuechunli$ pwd
/Users/liyuechun/Desktop
localhost:Desktop yuechunli$ mkdir 1121
localhost:Desktop yuechunli$ cd 1121/
localhost:1121 yuechunli$ vi file.txt
localhost:1121 yuechunli$ cat file.txt 
liyc1215
localhost:1121 yuechunli$ 

1.2 查看ipfs相关命令

localhost:1121 yuechunli$ ipfs help
USAGE
  ipfs - Global p2p merkle-dag filesystem.

  ipfs [--config=<config> | -c] [--debug=<debug> | -D] [--help=<help>] [-h=<h>] [--local=<local> | -L] [--api=<api>] <command> ...

SUBCOMMANDS
  BASIC COMMANDS
    init          Initialize ipfs local configuration
    add <path>    Add a file to IPFS
    cat <ref>     Show IPFS object data
    get <ref>     Download IPFS objects
    ls <ref>      List links from an object
    refs <ref>    List hashes of links from an object
  
  DATA STRUCTURE COMMANDS
    block         Interact with raw blocks in the datastore
    object        Interact with raw dag nodes
    files         Interact with objects as if they were a unix filesystem
    dag           Interact with IPLD documents (experimental)
  
  ADVANCED COMMANDS
    daemon        Start a long-running daemon process
    mount         Mount an IPFS read-only mountpoint
    resolve       Resolve any type of name
    name          Publish and resolve IPNS names
    key           Create and list IPNS name keypairs
    dns           Resolve DNS links
    pin           Pin objects to local storage
    repo          Manipulate the IPFS repository
    stats         Various operational stats
    p2p           Libp2p stream mounting
    filestore     Manage the filestore (experimental)
  
  NETWORK COMMANDS
    id            Show info about IPFS peers
    bootstrap     Add or remove bootstrap peers
    swarm         Manage connections to the p2p network
    dht           Query the DHT for values or peers
    ping          Measure the latency of a connection
    diag          Print diagnostics
  
  TOOL COMMANDS
    config        Manage configuration
    version       Show ipfs version information
    update        Download and apply go-ipfs updates
    commands      List all available commands

1.3 将file.txt添加到ipfs节点

localhost:1121 yuechunli$ ls
file.txt
localhost:1121 yuechunli$ ipfs add file.txt 
added QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T file.txt
localhost:1121 yuechunli$ cat file.txt 
liyc1215
localhost:1121 yuechunli$ ipfs cat QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T
liyc1215
localhost:1121 yuechunli$ 

当执行完ipfs add file.txt这个命令以后,会将file.txt添加到ipfs当前的节点中,并且会对file.txt文件生成一个唯一的hash`QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T,如果想查看本地ipfs节点的数据,可以通过ipfs cat QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T`进行查看。

️:当我试图通过http://ipfs.io/ipfs/QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T进行数据访问时,无法访问,如下图所示:

️:虽然数据已经添加到当前的你自己的IPFS节点中,但是并没有同步到IPFS网络,所以暂时在网络上无法访问。

️:重要:接下来执行下面的命令同步节点数据到IPFS网络,再试图在网络上查看数据。

  • 同步节点

新建一个终端,执行ipfs daemon

localhost:.ipfs yuechunli$ ipfs daemon
Initializing daemon...
Adjusting current ulimit to 2048...
Successfully raised file descriptor limit to 2048.
Swarm listening on /ip4/111.196.246.151/tcp/3637
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/169.254.170.167/tcp/4001
Swarm listening on /ip4/192.168.0.107/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready
  • IPFS网络查看数据

浏览器访问https://ipfs.io/ipfs/QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T

黎跃春 微信

2. 通过ipfs创建目录存储文件

在着上面的步骤走,我们可以通过`ipfs cat QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T
liyc1215查看添加到ipfs网络的file.txt`文件的内容,如下:

localhost:1121 yuechunli$ ipfs cat QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T
liyc1215
localhost:1121 yuechunli$ 

当然,我们也可以通过ipfs的相关命令在ipfs的根目录下面创建文件夹,并且将file.txt文件移动或者拷贝到我们创建的文件夹中。

️:cp不会改变文件hash,mv会改变hash寻址。

localhost:1121 yuechunli$ ipfs cat QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T
liyc1215
localhost:1121 yuechunli$ ipfs files mkdir /LiYueChun
localhost:1121 yuechunli$ ipfs files cp /ipfs/QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T /LiYueChun/file.txt
localhost:1121 yuechunli$ ipfs files ls /
LiYueChun
localhost:1121 yuechunli$ ipfs files ls /LiYueChun/
file.txt
localhost:1121 yuechunli$ ipfs files read /LiYueChun/file.txt
liyc1215
localhost:1121 yuechunli$ 

3. 如何在IPFS新增一个目录

3.1 使用ipfs add -r可以上传一整个目录

localhost:1121 yuechunli$ ipfs add -r ipfs-tutorial/
added QmYx4BnhnLXeMWF5mKu16fJgUBiVP7ECXh7qcsUZnXiRxc ipfs-tutorial/contactme.txt
added QmfKdWsguobA3aDPvSxLB3Bq4HMKyqKSgFr2NFUuVH8n31 ipfs-tutorial/eth-fabric.png
added QmXe8jTxTh5MZP6BK5cnj19mXNTKVMzNyUJZUHuYyr5dk1 ipfs-tutorial/gongzhonghao.png
added QmSsjQDVw1fvmG5RsZMgp2GjihiXn2zDv64mfHZN3AREek ipfs-tutorial

3.2 通过路径访问contactme.txt文件数据

如果我们上传的是目录,那么可以通过下面几种方式访问到contactme.txt文件的数据。

localhost:1121 yuechunli$ ipfs cat QmYx4BnhnLXeMWF5mKu16fJgUBiVP7ECXh7qcsUZnXiRxc
微信:liyc1215
区块链技术交流群:348924182
公众号:区块链部落
localhost:1121 yuechunli$ ipfs cat /ipfs/QmYx4BnhnLXeMWF5mKu16fJgUBiVP7ECXh7qcsUZnXiRxc
微信:liyc1215
区块链技术交流群:348924182
公众号:区块链部落
localhost:1121 yuechunli$ ipfs cat /ipfs/QmSsjQDVw1fvmG5RsZMgp2GjihiXn2zDv64mfHZN3AREek/contactme.txt
微信:liyc1215
区块链技术交流群:348924182
公众号:区块链部落
localhost:1121 yuechunli$ 

3.3 通过Hash查看数据IPFS网络数据

4. 创建简易的网页发布到IPFS

在这里我先自己写一个简单的网页给大家演示,先在桌面新建一个site文件夹,然后按照下面的步骤在site文件夹中建立index.htmlstyle.css文件。

4.1 创建一个index.html文件

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Hello IPFS!</title>
  <link rel="stylesheet" href="./style.css" />
</head>
<body>
  <h1>Hello IPFS!</h1>
</body>
</html>

4.2 创建一个style.css文件

h1 {
  color: green;
}

4.3 添加到ipfs

localhost:Desktop yuechunli$ ipfs add -r site/
added QmWG5rbgT9H77TGq49RXNoqN8M7DNKMnMX425nkmCB6BjS site/index.html
added QmfGLJ3mryLvicQqzdsghq4QRhptKJtBAPe7yDJxsBGSuy site/style.css
added QmdVEGkT5u7LtzzatTrn8JGNEF3fpuMPVs2rPCfvqRykRp site

最后一行是项目根目录的hash,你先通过ipfs daemon同步网络,然后可以通过https://ipfs.io/ipfs/<你的项目根目录hash>,即https://ipfs.io/ipfs/QmdVEGkT5u7LtzzatTrn8JGNEF3fpuMPVs2rPCfvqRykRp访问项目。

4.4 网络同步

localhost:Desktop yuechunli$ ipfs daemon

4.5 访问网站

浏览器打开https://ipfs.io/ipfs/QmdVEGkT5u7LtzzatTrn8JGNEF3fpuMPVs2rPCfvqRykRp,效果图如下:

4.6 发布到IPNS

当我们修改网站内容重新添加到ipfs时,hash会发生变化,当我们网站更新时,我们可以将网站发布到IPNS,在IPNS中,允许我们节点的域名空间中引用一个IPFS hash,也就是说我们可以通过节点ID对项目根目录的IPFS HASH进行绑定,以后我们访问网站时直接通过节点·ID访问即可,当我们更新博客时,重新发布到IPNS`即可。

localhost:~ yuechunli$ ipfs name publish QmdVEGkT5u7LtzzatTrn8JGNEF3fpuMPVs2rPCfvqRykRp
Published to QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP: /ipfs/QmdVEGkT5u7LtzzatTrn8JGNEF3fpuMPVs2rPCfvqRykRp
localhost:~ yuechunli$ ipfs id
{
    "ID": "QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP"
}

当我们执行ipfs name publish命令时,会返回我们的节点ID,你可以通过ipfs id进行查看验证是否是你的节点ID

️:验证

$ ipfs name resolve <peerId>
localhost:~ yuechunli$ ipfs name resolve QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP
/ipfs/QmdVEGkT5u7LtzzatTrn8JGNEF3fpuMPVs2rPCfvqRykRp
localhost:~ yuechunli$ 

️:当然我们现在就可以通过IPNS进行访问了。

https://ipfs.io/ipns/QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP

️️️:注意上面是ipns而不是ipfs。

️:如果你网站数据修改,需要重新发布到IPNS。

5. 发布个人博客

你可以通过Hugo按照官方文档创建一个漂亮的静态博客Hugo官方网站,当然你也可以自己编写,或者使用其他开源项目搭建。

5.1 搭建静态博客

大家可以自己搭建,也可以直接下载我的博客源码直接搭建。

源码地址:http://github.com/liyuechun/ipfs_blogger

5.2 节点ID替换

  • 查看你的节点ID
localhost:ipfs_pin yuechunli$ ipfs id
{
    "ID": "《your peer id》"
}
localhost:ipfs_pin yuechunli$ 

在上面的源码中全局搜索将源码里面的QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP替换成你自己的ID

接下来重复4. 创建简易的网页发布到IPFS的操作步骤即可。

5.3 浏览博客

浏览器打开https://ipfs.io/ipns/QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP/查看项目效果。

IPFS 博客项目效果图

6. 下篇预报

6.1 ipfs + ethereum`Dapp`开发入门

7. 技术交流

  • 区块链技术交流QQ群:348924182
  • 进微信群请加微信:liyc1215
  • 「区块链部落」官方公众号

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
一、搭建篇-使用Github-hexo搭建个人博客教程—总结自己爬过的坑
一直想要拥有自己的一个博客,CSDN,那些又觉得不够个性化(主要是觉得逼格不够,哈哈) Github搭建博客的优点: 1、不需要域名和服务器 2、访问自己博客的时候没有广告 3、可以自己修改样式,能根据自己的需求加功能。
8514 0
零基础安装wordpress,搭建个人博客!
总结一下使用wordpress搭建个人博客的三大步骤: 1.购买阿里云主机 2.选择安装wordpress镜像操作系统 3.安装配置wordpress 4.购买域名,配置域名解析 阿里云代金券1000元免费领取地址:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=2a7uv47d 新老阿里云账户均可领取!可用于购买阿里云服务器ECS、云数据库RDS、虚拟主机、安骑士、DDoS高防IP等100多云计算产品。
2862 0
阿里云服务器如何搭建Hexo个人博客?
阿里云服务器如何搭建Hexo个人博客?
1620 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10502 0
【SSM实战】个人博客系统(一)——搭建环境及编写配置文件
【SSM实战】个人博客系统(一)——搭建环境及编写配置文件
6 0
【云计算的1024种玩法】搭建个人博客
好吧,我承认您看了题目以后,可能就会很嫌弃的说,不就是一个博客吗,谁不会搞啊,某浪,某讯都有博客,注册一个博客谁还不会,用得着你教我嘛。您先静一静,喝口水压压惊,我们这里是帮您拥有一个属于您自己的不会冠以某浪某讯的title并且拥有更多freestyle的博客界面的博客,有点小心动的话,就去动手做一个吧。
5470 0
手把手教你搭建GitHub个人博客网站(下)
手把手教你搭建GitHub个人博客网站(下)
9 0
Jekyll搭建个人博客 韩俊强的博客
 之前写了一篇HEXO搭建个人博客的教程获得了很好评,有很多读者主动给我打赏,在此感谢。  如果你看过我的文章会发现我现在的博客样式跟之前是有很大的区别的,之前我也是使用 HEXO 搭建的博客,后来发现使用 HEXO 在多台电脑上发布博客,操作起来并不是那么方便,果断就转到了 Jekyll 上,接下来我会讲如何使用 Jekyll 搭建博客,博客模板效果。
1486 0
【Jekyll搭建GITHUB个人博客】安装Ruby 环境、包管理器 RubyGems、Jekyll与错误解决
转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自【大学之旅_谙忆的博客】 今天在博客专家群看到CSDN韩俊强发表了一篇用Jekyll搭建个人博客的文章,感觉很好。
1309 0
+关注
黎跃春
区块链技术爱好者
31
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载