将Web服务部署到IPFS上
将Web服务部署到IPFS上
注: 本文操作环境为ubuntu 18.04
安装ipfs
- 安装
go
语言环境
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt update
sudo apt install golang-go
- 安装
go-ipfs
wget https://dist.ipfs.io/go-ipfs/v0.5.0/go-ipfs_v0.5.0_linux-amd64.tar.gz
tar -xvzf go-ipfs_v0.5.0_linux-amd64.tar.gz
cd go-ipfs
sudo bash install.sh
检查go-ipfs
版本
ipfs --version
> ipfs version 0.5.0
上传web目录
- 启动
ipfs
ipfs daemon
返回如下信息
Initializing daemon...
go-ipfs version: 0.5.0
Repo version: 9
System version: amd64/linux
Golang version: go1.13.10
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/172.16.20.111/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/172.16.20.111/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready
- 添加web目录
方式一: 命令行添加上传
ipfs add -r ./blog
返回如下信息
added QmbC2eAXxPY58CCDjJo2Dr5C2wWrq6ALyRxrTVJaNmrq6P blog/Golang redis 操作初体验 .html
added QmYqSE8nz3CbAb7uT8kCPpVEEKvriRwTT3gphXBSzLAJiU blog/Go语言导出excel文件(.xlsx).html
added QmXkaA8JMaLtVpmLiag8D1kkZsdcb9TqLjRCYZr1knBxK9 blog/index.html
added QmdfsZhvPc7Mf7VzWw2PAoTWdaPBa56JBqkVGq1yFnRp3J blog/构建Nodejs脚手架.html
added QmSKK986gpytABxLD5kE8jUK9bPo4iU4A8WTz5VQpDqCmE blog
其中最后一行QmSKK986gpytABxLD5kE8jUK9bPo4iU4A8WTz5VQpDqCmE
表示整个项目的CID
方式二:通过web网页上传
我们启动ipfs
节点以后,在浏览器中访问http://127.0.0.1:5001/webui
,可以看到ipfs
的web管理界面
选择Files->Add
即可添加整个网站目录
- 查看网站
打开浏览器,输入http://127.0.0.1:8080/ipfs/QmSKK986gpytABxLD5kE8jUK9bPo4iU4A8WTz5VQpDqCmE
即可看到上传的网站
上诉方式只是在我们本地启动了一个ipfs
节点。所有文件存储在本地服务,一旦本地服务关了以后我们的网站就无法浏览了。
可以通过下面的方式,是我们的网站持久化托管到ipfs
上
选择托管服务
在IPFS
上Pin
一些内容的节点将永远托管它(直到取消固定),比如Pinata之类的Pin
服务,可将文件 Pin 在其IPFS节点上。这样,网站将始终可用
打开网站以后,有三种选择
image.png我们选择上传目录
,然后把我们的网站目录整个上传上去,上传完成以后会返回一个HASH,
我们复制这个HASH.在浏览器中打开https://ipfs.io/ipfs/{HASH}
就可以看到我们上传上去的网站目录
例如: https://ipfs.io/ipfs/QmPM8dxkAuJtH42Ss2F8qeH4ZB8mPJyDY2M8SvZev7VNW2
绑定自定义域名
我们现在已经能够通过https://ipfs.io/ipfs/QmPM8dxkAuJtH42Ss2F8qeH4ZB8mPJyDY2M8SvZev7VNW2
访问我们的网站了,但是有两个问题
- 这个网站很难被记住,不容易被查找
- 每次更新网站
CID
都会变,就需要访问新的链接才能被正确访问
可以通过以下两种方案解决
- 使用
DNSLink
文档地址: https://docs.ipfs.io/guides/concepts/dnslink/
- 使用以太坊域名服务
ENS 是一个以太坊区块链上的命名服务,它使用智能合约购买域名并为其设置解析器记录。由于涉及以太坊,因此您需要使用 MetaMask 来使用它
类似的域名服务有很多,可以自行查阅