安装文档位置:node
https://github.com/hyperledger/fabric fabric代码托管地址linux
https://hyperledger-fabric.readthedocs.io/en/latest/ 在线文档地址git
https://github.com/hyperledger/fabric/archive/v1.0.0.tar.gz fabric1.0.0源代码包地址github
安装环境:golang
Vmware + CentOS7 64位 1611版本docker
安装前准备:npm
即将/etc/yum/pluginconf.d/langpacks.conf 中的 enable=1改成enable=0json
sed -i 's/enabled=1/enabled=0/g' /etc/yum/pluginconf.d/langpacks.conf
yum update
https://download.daocloud.io/ 找到docker和docker-compose的安装指导。咱们选择在线安装根据指导执行命令便可。版本更新后指导也会更新,安装时最好去网站上获取最新的命令bootstrap
安装dockercentos
sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.daocloud.io/docker/linux/centos/docker-ce.repo sudo yum install -y -q --setopt=obsoletes=0 docker-ce-17.03.1.ce* sudo systemctl enable docker sudo systemctl start docker sudo service docker status
docker --version
输出:Docker version 17.03.1-ce, build c6d412e
安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
输出:docker-compose version 1.12.0, build b31ff33
使用阿里云进行镜像加速(若是能FQ就不用加速了)
https://dev.aliyun.com 注册一个账号。而后查看Docker Hub 镜像站点。指导文档写的很清楚。拷贝其中的内容执行便可。内容以下:
https后面的应该是你本身的镜像地址
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://du8c1in9.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
https://nodejs.org nodejs网站,能够下载安装包进行安装,这里下载了node-v6.11.4-linux-x64.tar.xz解压包
将这个包放到/opt/nodejs目录下,看成安装目录
进行解压:
cd /opt
mkdir nodejs
cd nodejs
curl -o node-v6.11.4-linux-x64.tar.xz https://nodejs.org/dist/v6.11.4/node-v6.11.4-linux-x64.tar.xz
xz -d node-v6.11.4-linux-x64.tar.xz
tar -xvf node-v6.11.4-linux-x64.tar
创建软链接,后续替换版本方便
ln -s /opt/nodejs/node-v6.11.4-linux-x64/bin/node /usr/local/bin/node ln -s /opt/nodejs/node-v6.11.4-linux-x64/bin/npm /usr/local/bin/npm
也能够经过设置nodejs环境变量的方式,在/etc/profile文件的
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加以下内容:
#set for nodejs export NODE_HOME=/opt/nodejs/node-v6.11.0-linux-x64 export PATH=$NODE_HOME/bin:$PATH
升级NPM工具,刷新会很慢。但好像不执行也没有什么问题
npm install npm@latest -g
https://golang.org/dl/ go的主页下载地址,能够到这里寻找最新版本
cd /opt mkdir golang
cd golang curl -O https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz tar -zxvf go1.8.3.linux-amd64.tar.gz
cd /opt
mkdir gopath
在/etc/profile中配置go的环境变量
export GOROOT=/opt/golang/go export PATH=$GOROOT/bin:$PATH
export GOPATH=/opt/gopath
修改完source /etc/profile 刷新一下,使用 go version查看版本,也可使用go env查看环境变量信息
下载fabric1.0.1源代码:
将源代码下载gopath下,/opt/gopath/src/github.com/hyperledger/fabric目录下,若没有可手工建立
curl -O https://github.com/hyperledger/fabric/archive/v1.0.1.tar.gz
tar -zxvf v1.0.1.tar.gz
目录结构以下:
下载fabric-sample镜像并启动:
首先找一个目录作为临时安装目录,这里用的是/opt/fabricinstall.
从刚才的源代码目录拷贝安装脚本过来,并执行,运行脚本时,会下载一个bin目录,里边有后续部署时会用的工具
cp /opt/gopath/src/github.com/hyperledger/fabric/scripts/bootstrap-1.0.1.sh /opt/fabricinstall/
cd /opt/fabricinstall/
sh bootstrap-1.0.1.sh
执行后就要开始等待镜像下载了,下载完成后,能够用如下命令,查看下载的镜像
docker images | grep hyperledger*
用阿里镜像很快装完了,若是使用镜像须要加上版本号,这里自动转成了latest就不用输入版本号了。因此每一个镜像都有两行。
准备运行e2e_cli的例子
例子的脚本放在源代码目录中,须要拷贝过来。而例子脚本的路径都是写死的,因此要按照脚本里边的相对路径,建立整个运行目录。
以前使用bootstrap-1.0.1.sh脚本下载的执行文件,也须要拷贝到例子目录中,例子的脚本会调用这些执行文件。
如下是生成目录结构的脚本:
mkdir /opt/fabricinstall/release
mkdir /opt/fabricinstall/release/e2ecli
mkdir /opt/fabricinstall/release/linux-amd64
cd /opt/fabricinstall/release/e2ecli/
cp -R /opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/* /opt/fabricinstall/release/e2ecli/
cp -R /opt/fabricinstall/bin/ /opt/fabricinstall/release/linux-amd64/
mkdir /opt/fabricinstall/release/chaincode
mkdir /opt/fabricinstall/release/chaincode/go
cp -R /opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go/* /opt/fabricinstall/release/chaincode/go
./network_setup.sh up
注意:e2ecli目录是固定的,启动后会建立一个docker network以此为名字,若是修改该目录,要到//opt/fabricinstall/release/e2ecli/base/peer-base.yaml文件中修改如下配置选项
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2ecli_default
若是容器已经生成了,可使用以下命令清理后,在进行network_set.
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
出现如下字样,没有报错。估计是成功了。
能够经过docker ps查询启动的容器,启动前是没有任何容器的。
这个过程当中会建立一个例子,并将须要的容器都拉起来
能够看到看到启动了三个mycc(系统给出的例子) 一个cli(工具) 一个orderer(选举) 四个peer(客户端)
固然这个过程也能够手工进行,后续会专门写一个文档讲解。
关闭例子
开一个新窗口,而后在对应目录下,执行关闭指令就能够了。
./network_setup.sh down
启用couchdb
上面的例子中,咱们没法看到存储内容,因此改用couchdb作为pee交易的存储 使用couchdb能够经过网页查看状态内容
因此先关闭掉以前的系统,使用如下命令进行从新进行启动
./network_setup.sh up mycc 10000 couchdb
一共四个参数 1.启动或中止 2.通道名称 3.cli等待时间 4.使用couchdb。 若是关闭的话,把up改为down就能够了。
启动后访问http://192.168.101.23:5984/_utils/ 就能够看到页面了。IP记得换成本身的
点进mycc看一下