北冥有鱼,其名为鲲。鲲之大,不知其几千里也;化而为鸟,其名为鹏。鹏之背,不知其几千里也;怒而飞,其翼若垂天之云。——《庄子·逍遥游》
既然要部署多节点,那么首先就要部署单节点。作者同某个师弟胡乱捣鼓了一通,在本地虚拟机,腾讯云,阿里云,vultr(都是ubuntu,有16也有18)上都已经完成了部署,为了方便后人写下此文。
略
最好用高版本的,最低1.9
wget https://dl.google.com/go/go1.10.4.linux-amd64.tar.gz
sudo tar xzf go1.10.4.linux-amd64.tar.gz -C /usr/local
配置环境变量:
vim ~/.bashrc
尾部添加:
export GOPATH=/opt/gopath
export GOROOT=/usr/local/go
export GOARCH=amd64
export GOOS=linux
export GOBIN=$GOROOT/bin/
export GOTOOLS=$GOROOT/pkg/tool/
export PATH=$PATH:$GOBIN:$GOTOOLS
保存,令环境变量生效:
source ~/.bashrc
测试下环境:
go env
看到下图输出
先装docker-ce
卸载旧的sudo apt-get remove docker docker-engine docker.io
sudo apt-get update
安装依赖
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
添加官方密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
添加仓库sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
更新,安装dockerce
sudo apt-get update
sudo apt-get install -y docker-ce
列出可用版本apt-cache madison docker-ce
sudo apt-get install docker-ce=VERSION 选一个版本安装(version改成需要安装的版本号)
查看是否启动systemctl status docker
测试 sudo docker run hello-world
输出如下图:
装下docker-compose
sudo apt-get install python-pip
sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
查看版本
docker-compose --version
版本输出如下图:
下载fabric源码(先用1.0版)
sudo mkdir -p $GOPATH/src/github.com/hyperledger
cd $GOPATH/src/github.com/hyperledger
sudo git clone https://github.com/hyperledger/fabric
#切换到v1.0.0
cd $GOPATH/src/hyperledger/fabric/
#注意不要和release1.0.0以及v1.0.0-rc1之类的混了,git tags可以看见全部的tag
git checkout v1.0.0
sudo apt install gcc make libtool libltdl-dev
以上步骤问题不太多
按照一些教程这时候需要编译cryptogen,但是作者编译后发现似乎少点什么东西,后来师弟找到了一个编译好的工具(),把这个叫bin.zip的文件下载下来,放到fabric/release/linux-amd64下边并解压缩(如果没有目录就自己建一个)。如果cpu不是amd64就不要叫这个名字了。
下载镜像
cd $GOPATH/src/hyperledger/fabric/scripts
./bootstrap-1.0.0.sh
#bootstrap有很多版,注意和源码版本对应。在本地虚拟机测试的时候发现这一步可以跳过去,不过暂时只在作者电脑这样试过
然后是缓慢的拉镜像,最后会拉下来很多镜像
如果镜像不够或者版本不对就重新拉。注意,这个时候要把gopath的权限改成777。再执行下边的操作
cd examples/e2e_cli
sudo ./network_setup.sh up
#注意每次up前最好先执行下down,不然会出现一些错误,执行up后能不能运行成功就看命了,如果成功的话如图所示
cannot run peer because cannot init crypto
可能是cryptogen的问题,也可能是项目权限问题(改成777试试)或者docker镜像版本和代码版本不一致
Error: Error connecting due to rpc error: code = Unavailable desc = grpc: the connection is unavailable
关闭防火墙,查看代码版本和docker镜像版本是否一致
fatal error: unexpected signal during runtime execution
这个问题在阿里云可能会出现,具体解释可以看此文https://www.cnblogs.com/chenfool/p/8353425.html
不想看的直接上结论:修改/etc/resolv.conf 配置,将 options timeout:2 attempts:3 rotate single-request-reopen 这一行内容注释掉
error authorizing update: error validating DeltaSet:
docke的容器镜像都删干净,用bootstrap再下一次
没有什么问题是删镜像解决不了的,如果有就两次——尼古拉斯·赵四