https://www.htcp.net/3766.html
丢一连接,配环境累死个人。
好的,我活着来了。终于配完了,期间几多辛酸那。
预警!非教程,仅仅作个人笔记用
信息不全,报错信息也不全,只是记录一下自己踩的一些坑。
Ubuntu Kylin 14.04.6
Docker 18.06.3-ce
Docker compose 1.23.2
Go go1.14.2 linux/amd64
注意:Docker-compose 与 Docker的版本需要兼容才行,
不然会报错(见下)
1.下载Ubuntu(X
其他版本都可,不要太低就行
官网应该有版本要求吧 建议仔细阅读,不然就会像我一样踩坑致死
我的版本见上
2.下载Go
注意!版本有要求,好像在14还是11以上才行!建议仔细阅读官网文档,不然就像我一样痛苦吧
记得配置环境变量。
我还遇到了一个问题,我的Ubuntu很多命令都要sudo,但是sudo go version 显示commond not found,此时需要配置sudo用户下的环境变量,root权限时同理。
修改/etc/profile文件配置变量
分别是GOROOT和GOPATH,我的机器默认下载在/usr/local/下,因人而异,注意看
建议多看博客,仅供参考(我查了好多才配上的 lay
go的安装配置
(1)先从官网下载版本对应的包,然后解压(名字是你自己的包名字)
tar -C /usr/local -zxvf go1.14.1.linux-amd64.tar.gz
(2)mkdir -p ~/go/src 创建目录
(3)自己建一个gopath目录,以后的hyperledger fabric就在这个目录里运行辣
我的就叫gopath
根据你的path修改环境变量
export GOROOT=/usr/local/go
export PATH=$PATH:GOROOT/bin (我不确定是否这样写了,抱歉,请看推荐链接吧)
export GOPATH=/你的path
go env检查环境变量
(4)自己运行go version看一下,然后进入你的自命名gopath目录,尝试着运行一个go文件“Hello, world”
看看有没有输出。
3.下载Docker
这篇部署完整版,讲得极好,可以说我是照着他做的,建议直接去看这篇
新增docker报错
进程占用问题
(1)sudo apt-get remove docker docker-engine docker.io containerd runc
保险卸载旧版本
(2)sudo apt-get update
更新
*刚刚接触Linux
这个命令的意思也了解了一下
Ubuntu系统维护了一个源列表,其中存储着所有常用工具的来源。
当执行这条命令时,会更新这个源,读取软件列表,保存在本地。
*常常与sudo apt-get upgrade配合食用,提示软件更新
(3)运行
sudo apt-get install
apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common
连接远程库
(4)一系列操作,请看推荐的链接,详细
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
(5)查看是否安装成功
docker version
*后续操作,要求显示Server与Client的信息
sudo chmod -R 777 /var/run/docker.sock
我执行了这条命令授权成功
*都走到这里了,确定不配一下镜像站么?
真的!!后续需要使用,因为我没有VPN,所以拉取源码和镜像非常痛苦。
幸亏有了阿里云!和DocCloud镜像站(阿里云打钱)
*配置镜像加速
请看
i.阿里云镜像教程
ii.DocCloud-官网
操作都很简单,我这里阿里云很快!嗖嗖得
有几个下不下来,去DocCloud下的,换着下,美滋滋
5.下载Docker-compose
不知为何,pip install命令不可用,我猜是被墙了?
(1)官网–极慢,慢到怀疑人生,不建议
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
(2)方案2 - 其他网站(好评
curl -L https://get.daocloud.io/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
openssl的配置
(3)授权
sudo chmod +x /usr/local/bin/docker-compose
(4)查看版本信息
docker-compose --version
有信息就可了
很慢很慢很慢
恭喜你走到了这一步,比我强多了,我可是倒腾了两天才配好环境的
由于我的网极慢,不采用官网的./bootstrap.sh
完全无法使用,极慢
1.fabric下载
. 在gopath里建好目录
我的结构是这样的
建到hyperledger就好了
拉取源码
*避雷,如果不动,请不要傻傻等待
赶快百度找其他的办法
cd ~/go/src/github.com/hyperledger
进入目录,开始下载
git clone https://github.com/hyperledger/fabric.git
2.下载fabric镜像惹(区块链网络的各个东西,背书节点、排序节点等等)
进入fabric看看,是不是有很多文件
cd scripts
运行命令:
git checkout v1.4.3
设置版本是1.4.3
(1)如果你的网很猛 并且拥有VPN,建议尝试 ./bootstrap.sh
一劳永逸
进入下一环节 四 叭
(2)如果你像我一样心如死灰,那就乖乖手动拉取
我们需要的镜像整理如下
!注意版本,版本不对会GG
不知道自己有没有多下,敬请dalao们指正!谢谢
嗖嗖得,不行就换镜像站咯
(3)了解一下./bootstrap做了啥?为啥这么慢?
bootstrap在做啥?
它做了三件事
其中就是二进制文件这一步非常的慢,因为是外网吧好像,samples我们有了,二进制文件我们自己编译就好了,不用拉取。
我试着注释掉二进制文件的下载和samples的下载运行了这个脚本,检查了镜像有没有漏掉,结果显示镜像是ok的哈。
3.自己补上编译工具
进入go/src/github.com/hyperledger/fabric/common/tools目录
看到三个工具configtxgen 、cryptogen 、configtxlator的文件夹。
分别进入这三个文件夹中,运行
go install命令
如果无报错,去看你gopath目录下的bin
,如果多了三个工具的文件,就okk啦
1.把上面生成的三个文件copy
到/hyperledger/fabric/scripts/fabric-samples/first-network/scripts中
看到dalao是把sample拖出来的,但是我好像下错了版本,自己下的没用,会报错
(!务必注意镜像版本和fabric版本一致啊,不然会报错的)
所以直接用它生成的了
2.开始了
(请记住
./byfn.sh -m generate
./byfn.sh -m up
./byfn.sh down
三件套)
./byfn.sh -m generate
期间输入Y
没报错就okk
*报错的话,
如果显示缺少工具,exiting,那就是没有生成的编译工具,copy一下到这个目录;
如果error 与 gopath相关,也许是go路径不行
或是sudo环境下没用go指令;
其他:我也不太清楚了
可能与版本不匹配有关 建议重新
切换版本: git checkout release-1.4.3
(该源代码当前目录下)
*网上也有make release自编译的方法,但我不成功,每次都报与gopath的错误,does not exist这样(FROM GOPATH &GOROOT什么的)
*我一开始从网上其他地方下了
这个东西,也是1.4.3,虽然能够成功generate,但是up的时候最后会在最后询问的时候报错,没用查到相关的内容,只好放弃了
建议使用自己生成的samples文件,因为都在不停的更新,很可能fabric-samples-1.4.3旧版本有问题了。
./byfn.sh up
输入Y,你的网络开始干活了
(1)
开始前先会显示出docker 容器里的镜像
(2)
开始了,请注意报错信息 or 终端显示的信息
如果没错,会按顺序部署执行
(3)
出现这个,就!!!非常愉快的结束了!!
!!!!!
恭喜!
报错也不要紧,百度一下,都会解决的
我真的报错了很多次。。
*反复报错重来的时候记得使用./byfn.sh down清空
否则会有奇怪的错误
比如
Couldn’t connect to Docker daemon at http+docker://localunixsocket - is it running?
解决docker问题;
又比如
Cannot run peer because cannot init crypto, folder “/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp” does not exist
请down掉它;
*Chaincode instantiation on PEER2 on channel ‘mychannel’ failed !
参见
我是这个问题,docker-compose版本不兼容(我是太低了,重装就ok了,真是奇怪。)
所以要注意版本鸭!
*其他问题请百度,我无能为力了 对不起
请参考:
官方答疑
fabric报错集合1
交易报错
fabric报错集合2
* Error: could not assemble transaction, err proposal response was not successful, error code 500, msg timeout expired while starting chaincode bankmaster:6.0 for transaction
我遇到了,我先后尝试了
重装docker镜像,重设git v1.4.3版本,gopath检查,暂时未查清,对不起,我太菜了
*docker ps
可查看容器,网络关闭后会自动删除
可以看看到哪里停止的,有没有成功建起容器(名字特别长的就是了,会有名称显示)
docker images
查看自己的镜像
*其实环境没问题的话,我觉得还是可能是版本的问题叭
*一切有Permission Denied问题的命令,可以尝试sudo 或root权限
建议后期操作(从拉镜像那开始)在root权限进行,可节省麻烦
*其他乱七八糟的报错
重装docker-compose时候遇到的内容
Text file busy-请杀死这个进程
(2)Ubuntu虚拟机又裂开了,还好,存了快照(快照真是伟大的发明!!
重新回到可以成功运行的那一版,可以还是不行? 怎么回事嘞
msg error starting container: error starting container: Failed to generate platform-specific docker
"/opt/go/pkg/tool/linux_amd64/link: (截取了某些零碎的片段)
大意是这个文件里的内容中断了docker 容器的build,并杀死了它。
Why? 诡异啊
i. 百度一下,查到了相关的fabric错误都是有关于Failed to generate platform-specific docker build的解决方案,有说是因为ccenv版本的原因,试着重新pull了ccenv,还是报同样的错误。
ii. 心情复杂,睡了一觉起来仔细看看报错内容,这个文件夹和fabric没啥关系啊?是系统的文件夹?
查找相关的文件夹报错,终于找到了问题,
没想到一篇k8s部署的文章帮助了我orz
关于部署k8s 1.12
其中提到了类似的文件夹报错:/usr/local/go/pkg/tool/linux_amd64/link: signal: killed
而文中又提到:(图片非原创,见链接,懒人截图法)
仔细想想这个网络在做实验课之前是可以使用的,而上实验课使用了docker容器,装了一个服务和image,container,会不会是docker的运行内存不足导致的呢?
于是试着清理了docker未运行的容器,好家伙, 2.3个G。
清理,只运行了最简单的
docker system prune
命令,去除了没有被使用的容器而已
深度清理见(没有亲测!慎重! 我不是非常了解linux只知道误删非常麻烦,所以没敢再动了)
docker清理垃圾
重新运行./byfn.sh up,竟然成功了!!!!!!!开心