环境:
windows10 + VirtualBox 6.1.0 + Ubuntu16.04.6
参考教程:
https://blog.youkuaiyun.com/smallone233/article/details/86569536
https://blog.youkuaiyun.com/sinat_36742186/article/details/80809954
本文为自己的一个实验记录。仅供参考。借鉴了很多人的博客和教程,基本都标注出来了。感谢网友们。
目录
(3)安装docker-compose 1.14.0 以及以上版本
(4)下载 fabric源码、fabric-samples源码、fabric镜像
1.【前期准备】
进入虚拟机ubunt-->系统设置-->软件和更新-->软件源改为 aliyun
sudo apt-get update
安装vim sudo apt-get install vim
安装git sudo apt-get install git
安装curl sudo apt-get install curl
安装wget sudo apt-get install wget
2.【环境准备】
(1)Go语言环境
参考教程 https://www.cnblogs.com/X-knight/p/9522511.html
安装go1.11 以及以上版本
cd ~
wget https://studygolang.com/dl/golang/go1.11.linux-amd64.tar.gz //下载
tar -xzf go1.11.linux-amd64.tar.gz //解压
sudo mv go /usr/local //移动
配置环境变量:
在root下
vi /etc/profile
添加以下内容并保存
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin
使文件生效
source /etc/profile
(不确定要不要弄)
vi ~/.profile
在最后添加以下内容
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin
使文件生效
source ~/.profile
创建go目录(把go的目录GOPATH设置在当前用户的文件夹下)
cd ~
mkdir -p go/src/github.com/hyperledger/fabric
sudo chmod -R 777 go
检验go:输入go version验证
(2)安装docker 17.06.2-ce 以及以上版本
参考教程 https://www.cnblogs.com/senlinyang/p/8203191.html
下载安装工具:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
(如果要卸载旧版本:sudo apt-get remove docker docker-engine docker.io)
添加软件源的 GPG 密钥(国内源)
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
官方密钥(速度慢):
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
向source.list中添加 Docker 软件源
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
官方源(慢):
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
下载docker-ce:
sudo apt-get update
sudo apt-get install docker-ce
问题:E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
解决方案:强制解锁:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
完成上面操作之后检查docker安装是否成功:docker version
将需要使用docker的用户加入docker用户组:
sudo groupadd docker 创建docker组
sudo usermod -aG docker XXX (XXX是当前用户名)
添加阿里云的Docker镜像:
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json
将以下内容写入daemon.json:
{
"registry-mirrors": ["https://aeckruos.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.6.129:5000"]
}
接下来输入:
sudo systemctl daemon-reload
sudo systemctl restart docker
docker version
如果权限不足,输入sudo chmod -R 777 /var/run/docker.sock
(3)安装docker-compose 1.14.0 以及以上版本
sudo apt-get install python-pip
sudo pip install docker-compose
pip install --upgrade pip
出现问题多试几次,可能是网络问题没下好...
还是继续头铁的无视通知...
查看版本:
docker-compose -version
(4)下载 fabric源码、fabric-samples源码、fabric镜像
参考教程:
https://blog.youkuaiyun.com/Sun_Hui_/article/details/100928155
https://blog.youkuaiyun.com/so5418418/article/details/78355868
下载 fabric 源码:
cd /home/lyj/go/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
下载fabric docker 镜像
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
如果速度特别慢,在/etc/docker/中修改以下内容
sudo vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}
下载好后看到 docker images:
(5)启动Fabric网络并完成ChainCode的测试
参考教程 https://blog.youkuaiyun.com/so5418418/article/details/78355868
cd /home/lyj/go/src/github.com/hyperledger/fabric/examples/e2e_cli
./network_setup.sh up
彻底关闭并清理遗留数据:./network_setup.sh down
这个指令具体进行了如下操作:
- 编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin
- 基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。
- 基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。
- 基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。
- 在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。
期间出现的问题:
问题1.
参考教程:https://blog.youkuaiyun.com/Mr__FFF/article/details/83088464
问题2. Error: Got unexpected status: BAD_REQUEST
./network_setup.sh down 清理遗留数据
然后重新尝试。
参考教程 https://blog.youkuaiyun.com/weixin_39559301/article/details/87913359
记录一下全部内容:
lyj@lyj-VirtualBox:~/go/src/github.com/hyperledger/fabric/examples/e2e_cli$ ./network_setup.sh up
setting to default channel 'mychannel'
mychannel
Using cryptogen -> /home/lyj/go/src/github.com/hyperledger/fabric/examples/e2e_cli/../../release/linux-amd64/bin/cryptogen
##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
org1.example.c