本人是一个动手能力超级弱的人,在此之前从来没有自己搭过环境,对于linux系统几乎不太懂。用了一个礼拜时间终于把fabric1.4环境搭好了,中间真的是遇到了很多很多问题,下面我将整个搭环境步骤和遇到的问题都总结下来,希望能帮到大家!!!
目录
配置阿里镜像源
①配置阿里镜像源
首先进行配置文件的备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
编辑配置文件
sudo vim /etc/apt/sources.list
或gedit /etc/apt/sources.list
在配置文件最后添加一下内容:
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
执行命令更新一下
sudo apt-get update
go语言安装
②Go语言安装
下载安装包
wget https://studygolang.com/dl/golang/go1.13.4.linux-amd64.tar.gz
解压安装
sudo tar -C /usr/local -zxf go1.13.4.linux-amd64.tar.gz
配置环境变量
// 以下方式选择一种
// 系统环境变量
vim ~/.bashrc
或gedit ~/.bashrc
// 用户环境变量
vim /etc/profile
或gedit /etc/profile
在文件最后添加以下内容
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
更新配置文件
source ~/.bashrc
查看go语言是否安装成功
go version
安装Docker-CE
③安装Docker-CE
1、卸载旧版本docker
sudo apt-get remove docker docker-engine docker.io
2、添加HTTPS协议,允许apt从HTTPS安装软件包
ssudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
!请注意!我运行添加HTTPS协议时报错:E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
解决方案:https://blog.csdn.net/lun55423/article/details/108907779
3、安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
4、写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
5、更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
6、将当前用户添加到Docker用户组
1.创建docker用户组
sudo groupadd docker
2.将当前用户添加到docker用户组
sudo usermod -aG docker $USER
3.退出当前终端
exit
7、将docker镜像更改为国内镜像
编辑daemon.json文件,如果没有该文件自行创建
sudo touch /etc/docker/daemon.json
sudo vim /etc/docker/daemon.json
文件中添加以下内容
{
"registry-mirrors":["https://obou6wyb.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}
8、最后重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
9、查看docker版本,看是否安装成功
docker version
!请注意!我当时输入docker version报错permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version": dial unix /var/run/docker.sock: connect: permission denied
解决方案:输入su root后,再次输入docker version就可以啦。
执行docker info,如果结果中含有如下内容则说明镜像配置成功:
安装Docker-Compose
在网上看到的帖子这两种方法我安装后全都失败!!!报错:Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg
------------------------------------------------------------------------------------------
方法一:
sudo curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
或
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
用方法一下载完后要设置权限
sudo chmod +x /usr/local/bin/docker-compose
方法二:
sudo apt-get install python-pip
sudo pip install docker-compose
下载完成后查看是否安装成功
docker-compose version
------------------------------------------------------------------------------------------
下面是我的方法:
wget https://github.com/docker/compose/releases/download/1.24.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环境部署
从这里开始请注意路径,我当时安装的时候并没有注意到home路径和root路径的区别,在home下面提示没有权限,我输入su root之后有了权限,之后所有的文件都安装在root下的go文件夹下面,导致后面的运行失败,所以,我尽可能把路径写全,以防大家出现和我一样的问题。
1、创建文件夹
mkdir -p ~/go/src/github.com/hyperledger
2、进入刚刚创建的文件夹内
cd ~/go/src/github.com/hyperledger
3、拉取fabric的源码
方法一:从github上拉取fabric的源码(有的博主不推荐这种方法,可能会因为网络问题导致出错,不知道是不是因为我开了VPN,所以我用这种方法很快下载完了)
git clone "https://github.com/hyperledger/fabric.git"
方法二:通过码云地址下载
git clone https://gitee.com/fireflies-glimmer/fabric.git
4、将fabric版本切换为1.4分支
cd fabric
git checkout release-1.4
5、编译二进制文件
make release
6、查看生成的二进制文件
cd release/linux-amd64/bin
7、输入ls
如果文件夹中有以下文件说明编译成功
手动下载fabric-samples
进入fabric/scripts目录可以看到一个bootstrap.sh脚本,直接执行bootstrap.sh脚本。输入bash bootstrap.sh,自动下载fabric-samples。但是运行失败,所以不选择这种方法。
1、首先 cd ~/go/src/github.com/hyperledger ,进入该目录。请注意!我们最后下载下来的fabric-samples目录与fabric目录同级!
2、下载fabric-samples
git clone -b v1.4.0 https://gitee.com/fireflies-glimmer/fabric-samples.git
cd fabric-samples
git checkout v1.4.0 //切换版本
下载二进制文件
需要下载两个压缩包,选择相应版本下载,这是一个博主的网盘链接:(永久有效)
链接:https://pan.baidu.com/s/1hGH7-aGkCxX8eN3WnATSiw
提取码:xrve
压缩文件hyperledger-fabric-linux-amd64-1.4.0.tar包含bin和 config 两个文件夹
hyperledger-fabric-ca-linux-amd64-1.4.0.tar包含bin文件夹
将压缩包上传并解压到fabric-sample目录下
在windows中下载下来这两个压缩包后用一个软件将这两个压缩包传到Linux中
使用Xshell7通过Linux的ip连接,Xftp是嵌入到Xshell7里面的。当时遇到的第一个问题是Xshell7连接不上我的虚拟机,反复确认几次ip并没有出错。
当时报的错是:Unit ssh.service could not be found.
解决方案:
1、运行以下命令检查 OpenSSH 服务器是否已安装:
sudo apt list openssh-server
如果该命令输出显示 openssh-server/focal,now <version> amd64 [installed],其中 <version> 是 OpenSSH 服务器的版本号,表示 OpenSSH 服务器已安装。
2、如果 OpenSSH 服务器未安装,可以运行以下命令进行安装:
sudo apt update
sudo apt install openssh-server
3、启动 SSH 服务:运行以下命令来启动 SSH 服务:
sudo systemctl start ssh
4、验证 SSH 服务状态:运行以下命令来验证 SSH 服务的状态:
sudo systemctl status ssh
如果 SSH 服务正在运行,将会显示 "active (running)" 的状态。
遇到的第二个问题是文件直接不能直接传在~/go/src/github.com/hyperledger这个目录下,原因可能是这个go文件是加密的。所以我先将这两个文件复制在桌面上,在cd ~/Desktop 这个目录下通过命令
1、将hyperledger-fabric-ca-linux-amd64-1.4.0.tar.gz 复制到~/go/src/github.com/hyperledger/fabric-samples目录下
sudo cp hyperledger-fabric-ca-linux-amd64-1.4.0.tar.gz ~/go/src/github.com/hyperledger/fabric-samples
2、将hyperledger-fabric-linux-amd64-1.4.0.tar.gz 复制到~/go/src/github.com/hyperledger/fabric-samples目录下
3、在这个目录下进行解压
tar -zxvf hyperledger-fabric-linux-amd64-1.4.0.tar
tar -zxvf hyperledger-fabric-ca-linux-amd64-1.4.0.tar
解压之后会出现下面这两个文件夹
将 fabric/scripts 目录下的 bootstrap.sh 脚本,复制到fabric-sample目录下
cd ~/go/src/github.com/hyperledger/fabric/scripts
执行sudo cp bootstrap.sh ~/go/src/github.com/hyperledger/fabric-samples
删除 bootstrap.sh文件中的samplesInstall 和 binariesInstall 步骤,保留镜像下载的步骤。
修改bootstrap.sh文件,记得先备份
bootstrap.sh文件是只读文件,所以要想修改它,执行sudo chmod a+w bootstrap.sh
vim bootstrap.sh
将我下面图片的函数删掉
执行 bootstrap.sh 脚本:
$ ./bootstrap.sh 1.4.0 1.4.0 0.4.15
查看镜像
cd ~/go/src/github.com/hyperledger/fabric-samples/first-network
执行 ./byfn.sh generate
报错
解决方案:
1、cd ~/go/src/github.com/hyperledger/fabric-samples/first-network
执行 docker-compose -f docker-compose-cli.yaml down
2、接着执行sudo ./byfn.sh down
3、sudo ./byfn.sh generate 成功生成证书
4、./byfn.sh up
报错
1、进入~/go/src/github.com/hyperledger/fabric-samples/first-network目录下输入
sudo chmod a+w docker-compose-cli.yaml
2、vim docker-compose-cli.yaml
在这个文件中的environment中添加 -GODEBUG=netdns=go
3、cd base, 现在的目录是~/go/src/github.com/hyperledger/fabric-samples/first-network/base
4、sudo chmod a+w peer-base.yaml
5、vim peer-base.yaml
在这个文件中的environment中添加 -GODEBUG=netdns=go
6、先关掉
sudo ./byfn.sh down
7、再次重新生成证书,启动
sudo ./byfn.sh generate
sudo ./byfn.sh up
再次报错,由于我之前创建过默认通道,错误显示通道已存在
1、在~/go/src/github.com/hyperledger/fabric-samples/first-network目录下执行
docker rmi -f $(docker ps -aq)
2、继续执行docker volume prune
3、关闭
sudo ./byfn.sh down
4、重新生成证书,启动
sudo ./byfn.sh generate
./byfn.sh up
最终就成功啦!