IPFS介绍
IPFS的英文全称是InterPlanetary File System,中文名叫星际文件系统。IPFS是一个分布式的存储系统,你可以将各式各样的文件存储到IPFS网络中。至于IPFS与HTTP之间的比较,本文不在此说明,大家可以到百度上搜索,这里将着重讲解如何在本地搭建一个IPFS节点。
IPFS节点
ipfs节点存在于ipfs网络中,分布在全球的各个地方,主要用户上传文件到ipfs网络中,或者从ipfs网络中下载文件。可以看到下面的图片,蓝色的线头代表了一个个的ipfs节点,这些节点在全球的任意地方都有可能出现。
IPFS节点部署
设置部署环境(这里使用的是go-ipfs)
下载地址:https://dist.ipfs.io/#go-ipfs,若你没有vpn,打不开ipfs官网的话,可以到github上下载编译好的文件。(go-ipfs)
打开终端,进行解压缩和安装操作。
liyuechun:Downloads yuechunli$ pwd
/Users/liyuechun/Downloads
liyuechun:Downloads yuechunli$ ls
go-ipfs_v0.4.10_darwin-amd64.tar.gz
liyuechun:Downloads yuechunli$ tar xvfz go-ipfs_v0.4.10_darwin-amd64.tar.gz
x go-ipfs/build-log
x go-ipfs/install.sh
x go-ipfs/ipfs
x go-ipfs/LICENSE
x go-ipfs/README.md
liyuechun:Downloads yuechunli$ ls
go-ipfs go-ipfs_v0.4.10_darwin-amd64.tar.gz
liyuechun:Downloads yuechunli$ cd go-ipfs
liyuechun:go-ipfs yuechunli$ ls
LICENSE README.md build-log install.sh ipfs
liyuechun:go-ipfs yuechunli$ mv ipfs /usr/local/bin/ipfs
tar xvfz go-ipfs_v0.4.10_darwin-amd64.tar.gz文件解压。
mv ipfs /usr/local/bin/ipfs,将已解压的文件夹中的ipfs文件移动到/usr/local/bin/文件夹中。
创建ipfs节点
为了运行项目,我们需要通过ipfs init在本地计算机建立一个IPFS节点。
localhost:.ipfs yuechunli$ cd ~/.ipfs
-bash: cd: /Users/liyuechun/.ipfs: No such file or directory
localhost:.ipfs yuechunli$ ipfs init
initializing IPFS node at /Users/liyuechun/.ipfs
generating 2048-bit RSA keypair...done
peer identity: QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP
to get started, enter:
ipfs cat /ipfs/QmVLDAhCY3X9P2uRudKAryuQFPM5zqA3Yij1dY8FpGbL7T/readme
localhost:.ipfs yuechunli$ cd ~/.ipfs
localhost:.ipfs yuechunli$ ls
blocks datastore version
config keystore
localhost:.ipfs yuechunli$ open ./
localhost:.ipfs yuechunli$
执行完ipfs init命令后,会在根目录生成一个.ipfs的文件夹存储节点数据。.ipfs节点默认存储空间为10个G。
如果你自己想修改节点默认存储空间,可打开终端执行下面的命令。
localhost:.ipfs yuechunli$ export EDITOR=/usr/bin/vim
localhost:.ipfs yuechunli$ ipfs config edit
执行完ipfs config edit命令后会打开一个文件,在这个文件中找到下图中绘制红线的位置,将10GB修改成你自己想要的存储空间。修改完毕,保存退出。(PS:输入i可以开始编辑,编译完毕后按esc键,再输入:,再次输入wq保存并且退出)。
查看节点id
localhost:.ipfs yuechunli$ ipfs id
{
"ID": "QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP",
"PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDqJlLivZerwIYTI5K8pEzbRnmNti3rObvpa17AixKpgTPnWAvPmZr1SLBzYUjpy3coymLHkNldcEZixnWTIihKIF1pVhxJG2MzFg8vHnG7uF8vxyYE4wOZ6V4rTauYbGau1Tj/TSjzI9oKOoezitTn6ggD3p2Y6Y1/FWGRfAvG7UUBFXSMtwVkwM/F0aaP2k8vHgsZDeYLY8UCpq67dC+AgbVNieLrX/tht6D7iTYS5Ch5dMIpwxMdRLkrNx8k9CVFgvnILhdTJL4QfdNA4L5FnWJy3axhj6bRdVkBpcdgn2WAHxYW6FwkB/eFSKxwNCKsO2/C52mUNNMouN2XlObTAgMBAAE=",
"Addresses": null,
"AgentVersion": "go-ipfs/0.4.10/",
"ProtocolVersion": "ipfs/0.1.0"
}
localhost:.ipfs yuechunli$
QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP为你的节点ID每个节点都会有一个唯一的ID。
启动节点服务器
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.241.208/tcp/7723
Swarm listening on /ip4/127.0.0.1/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
跨域资源共享CORS配置
为了后续的开发方便,我们还需要对跨域资源共享( CORS )进行配置,ctrl- c退出ipfs,然后按照下面的步骤进行跨域配置。
- ctrl- c退出ipfs
- ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST", "OPTIONS"]'
- ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
验证
- 启动服务器
$ ipfs daemon
- 新建终端执行下面的命令
ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
localhost:~ yuechunli$ ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
Hello and Welcome to IPFS!
██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗ ███████╗
██║██╔═══╝ ██╔══╝ ╚════██║
██║██║ ██║ ███████║
╚═╝╚═╝ ╚═╝ ╚══════╝
If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!
-------------------------------------------------------
| Warning: |
| This is alpha software. Use at your own discretion! |
| Much is missing or lacking polish. There are bugs. |
| Not yet secure. Read the security notes for more. |
-------------------------------------------------------
Check out some of the other files in this directory:
./about
./help
./quick-start <-- usage examples
./readme <-- this file
./security-notes
localhost:~ yuechunli$
- 浏览器输入下面的网址
打开http://localhost:5001/webui会看到一个漂亮的UI
界面。
WX20171120-205505@2x.png