环境搭建

近,区块链项目终于开始了。要想搭建一个区块链,第一步就是环境搭建。这里是参考的是HyperLedger Fabric开发实战——快速掌握区块链技术 杨毅 。如果暂时比较窘迫可以找我获取电子版用于学习。

切记切记切记,不要自作聪明的卸载掉centos自带的python2.7,虽然它已经被python官方给抛弃了,但是yum依赖于它,没了它以后yum就用不了,你就得靠自己手动去下载东西了。

这里我使用的是阿里云的服务器,版本为CentOS Linux release 7.8.2003 (Core) 。这个系统上我已经装好了go、node、python3.8、pip、docker。接下来就继续安装剩余环境。

Docker-Compose

书上提供的是通过curl方式来进行下载。不过我用了不行,总是要提供一个host password 。通过百度发现还可以通过pip来下载:pip install docker-compose 。只要这一条命令就ok了,之后通过docker-compose --version 来检查安装是否完成。

Fabric源码安装

这里是需要注意的一点,由于github最近改版了,我们无法和书中一样下载到源码后通过git checkout来切换分支。所以需要手动切换,如图:

1.png

还有一点就是该源码体积较大,不管是通过go get还是git clone速度都会十分的慢,并且不易成功。解决方法有二:1、windows手动下载压缩包(翻墙效果更佳),然后传至服务器上进行解压;2、将仓库fork到gitee上,然后从gitee上git clone,这样速度就快的飞起了。

Docker换源

fabric所需镜像太多并且体积较大,如果不换源基本是没法下载完成。

这里推荐阿里云的镜像,首先找到容器镜像服务:

1.png

然后进入镜像加速器:

2.png

之后根据自己的操作系统进行对应的操作,文档写的很全面了。换了源之后还是会很卡,需要多次试验。

CouchDB安装、配置、部署

有关CouchDB在网上基本没找到什么靠谱的教程,无奈只能硬着头皮把没有翻译的官网给看了一遍,这里给出centos下的安装方法(windows安装及配置较为简单)。

  • 首先添加Apache源:vim /etc/yum.repos.d/bintray-apache-couchdb-rpm.repo ,在创建的文件里加入以下内容:

    [bintray--apache-couchdb-rpm]
    name=bintray--apache-couchdb-rpm
    baseurl=http://apache.bintray.com/couchdb-rpm/el$releasever/$basearch/
    gpgcheck=0
    repo_gpgcheck=0
    enabled=1
    

    保存并退出,运行:sudo yum -y install epel-release && sudo yum -y install couchdb ,到这一步不出意外的话是可以直接安装成功的。我一开始也没成功,后来重装个系统就成功了。安装默认位置为:/opt/couchdb

    其他系统请自行查阅官网

  • 下面进行配置,由于CouchDB主要就是用于区块链方面,网上资料少并且老,官网明确指明:在3.0版本,需要一个admin账户才可以启动服务,如果没有admin账户的话,将会抛出错误并终止。

    首先给出配置文件的位置:

    1.etc/default.ini

    2.etc/default.d/*.ini

    3.etc/local.ini

    4.etc/local.d/*.ini

    这些文件都是相当于CouchDB的安装目录,也就是说他们的绝对路径在:/opt/couchdb/etc ,这些文件的覆盖规则为:后面的会覆盖前面的,说编辑local.ini,如果有与default.ini重名的变量,那么它的值会覆盖掉。

    下面进行admin用户的创建:

    在default.ini中添加如下代码:

    [admins]
    admin = yourpassword
    

    用户名和密码都可以自定义,[admins]务必保持一致!

  • 现在可以开始运行这个服务了:

    sudo systemctl start couchdb
    sudo systemctl enable couchdb
    

    如果没有报错,那么服务就已经默认跑在了5984端口,可以通过curl发起get请求来确认服务是否成功跑起:curl http://127.0.0.1:5984/,如果得到类似下文的JSON数据,则成功!

    {"couchdb":"Welcome","version":"3.1.0","git_sha":"ff0feea20","uuid":"97239b8eab282c6df97c65a9fa973ead","features":["access-ready","partitioned","pluggable-storage-engines","reshard","scheduler"],"vendor":{"name":"Former SleepDevil"}}
    

Go设置代理

国内由于种种原因,使用go get拉取远程代码时会失败,这里推荐使用goproxy。使用方法:首先检查go版本:go version。如果是1.13及以上版本则输入以下两行命令即可:

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct

如果版本是1.12及以下最好是升级版本,如果不愿升级版本可以自行查阅官网。