主要参考网址:
https://www.jianshu.com/p/cd05e966a6a8
https://hyperledgercn.github.io/hyperledgerDocs/getting_started/
https://www.cnblogs.com/zongmin/p/11635686.html#autoid-0-3-1
https://www.jianshu.com/p/a59ff954d3b2
主要安装的东西:
go
git
docker
fabric
fabric-samples
说明:因为mac上自带curl,因此就不用安装了,如果不确定的话可以查看版本,
malrindembp:~ malrin$ curl --version
curl 7.54.0 (x86_64-apple-darwin18.0) libcurl/7.54.0 LibreSSL/2.6.5 zlib/1.2.11 nghttp2/1.24.1
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz HTTP2 UnixSockets HTTPS-proxy
malrindembp:~ malrin$
1. 安装go
1.1 首先进行安装go,在终端输入:
brew install go
1.2 安装完毕后可以在终端中输入 go version查看是否安装成功:
malrindembp:~ malrin$ go version
go version go1.13.7 darwin/amd64
1.3 修改环境变量
编辑.bash_profile
文件,如果没有请新建。
# 打开配置文件
sudo vi ~/.bash_profile
# 添加环境变量
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
# 保存配置 esc -- :wq
1.4 查看go的具体安装信息,
malrindembp:~ malrin$ go version
go version go1.13.7 darwin/amd64
malrindembp:~ malrin$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/malrin/Library/Caches/go-build"
GOENV="/Users/malrin/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/malrin/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go/1.13.7/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.13.7/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/s5/0kk1ym5d6ldgqw4mx95cr0kr0000gn/T/go-build098067536=/tmp/go-build -gno-record-gcc-switches -fno-common"
malrindembp:~ malrin$
说明:上面配置环境变量的步骤是摘抄其他人的。我在安装go的时候一直有个问题没有解决就是环境变量没有修改完成,GOBIN是空的,问了公司的同事说,这个没有关系,不影响使用,因此就没有再纠结这个问题。
在每次修改.bash_profile文件后进行保存的时候,总出现这个问题:
malrindembp:~ malrin$ source ~/.bash_profile
': not a valid identifier
: command not found
malrindembp:~ malrin$
这个问题直到部署好fabric仍然存在,有知道的大神可以指导一下。
2. 安装git
安装git的原因主要是为了同步版本,可以在终端输入 git,如果安装git就会显示下面的结果
malrindembp:~ malrin$ git
usage: git [--version] [--help] [-C ] [-c =]
[--exec-path[=]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=] [--work-tree=] [--namespace=]
[]
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
clone Clone a repository into a new directory
init Create an empty Git repository or reinitialize an existing one
work on the current change (see also: git help everyday)
add Add file contents to the index
mv Move or rename a file, a directory, or a symlink
reset Reset current HEAD to the specified state
rm Remove files from the working tree and from the index
examine the history and state (see also: git help revisions)
bisect Use binary search to find the commit that introduced a bug
grep Print lines matching a pattern
log Show commit logs
show Show various types of objects
status Show the working tree status
grow, mark and tweak your common history
branch List, create, or delete branches
checkout Switch branches or restore working tree files
commit Record changes to the repository
diff Show changes between commits, commit and working tree, etc
merge Join two or more development histories together
rebase Reapply commits on top of another base tip
tag Create, list, delete or verify a tag object signed with GPG
collaborate (see also: git help workflows)
fetch Download objects and refs from another repository
pull Fetch from and integrate with another repository or a local branch
push Update remote refs along with associated objects
'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help ' or 'git help '
to read about a specific subcommand or concept.
malrindembp:~ malrin$
如果么有的话进行安装即可。
brew install git
3. 安装docker
可以用homebrew安装,输入:
brew cask install docker
或者在官网上下载Docker CE for Mac,点击Get Docker即可。
3.1 运行docker 查看docker和docker-compose是否安装成功
malrindembp:~ malrin$ docker --version
Docker version 19.03.5, build 633a0ea
malrindembp:~ malrin$ docker-compose --version
docker-compose version 1.25.4, build 8d51620a
malrindembp:~ malrin$
3.2 设置镜像加速器,一定要设置加速器,不然后面下载镜像的时候,超级超级慢。我用的是网易的,你也可以用其他加速器。
点击docker图标,preference--Docker Engine,在代码框中添加:
"registry-mirrors": [
"http://hub-mirror.c.163.com"
]
3.3 完成添加加速器,关闭docker,然后重新启动,输入docker info查看加速器是否添加成功
malrindembp:~ malrin$ docker info
Client:
Debug Mode: false
Plugins:
app: Docker Application (Docker Inc., v0.8.0)
buildx: Build with BuildKit (Docker Inc., v0.3.1-tp-docker)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 10
Server Version: 19.03.5
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: b34a5c8af56e510852c35414db4c1f4fa6172339
runc version: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 4.19.76-linuxkit
Operating System: Docker Desktop
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 1.943GiB
Name: docker-desktop
ID: EFEU:5HTL:46U3:HSEH:MJVB:OND3:NZNG:CKPG:IATC:UQF6:4BGR:O57O
Docker Root Dir: /var/lib/docker
Debug Mode: true
File Descriptors: 35
Goroutines: 52
System Time: 2020-02-15T10:40:30.0959401Z
EventsListeners: 3
HTTP Proxy: gateway.docker.internal:3128
HTTPS Proxy: gateway.docker.internal:3129
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
http://hub-mirror.c.163.com/
Live Restore Enabled: false
Product License: Community Engine
malrindembp:~ malrin$
说明:是否添加成功,看Registry Mirrors:后面显示的内容是否为http://hub-mirror.c.163.com/
4. Fabric源码下载
4.1 进入go的工作空间,为fabric创建项目路径:
$ cd $GOPATH
$ mkdir -p src/github.com/hyperledger
$ cd src/github.com/hyperledger
4.2 从git上拉取Hyperledger Fabric:
$ git clone https://github.com/hyperledger/fabric.git
4.3 确定fabric版本-进入fabric的目录
$ git checkout v1.4.4
4.4 查看branch的版本
git branch
malrindembp:fabric malrin$ git branch
* (HEAD detached at v1.4.4)
master
malrindembp:fabric malrin$
5. fabric docker 镜像下载
e2e_cli文件在fabric1.4已经移除了,在1.4.4版本中的测试网络使用fabric-samples
中的 first-network
。
我这里分两部分完成的,首先用./bootstrap.sh下载镜像文件,会发现有两个文件下载不下来,接下来,用我给出的链接可以进行下载。
5.1 下载fabric-samples源码
回到hyperledger文件夹,从git上克隆fabric-samples文件
$ git clone https://github.com/hyperledger/fabric-samples.git
$ cd ./fabric-samples
$ git branch -a
$ git checkout v1.4.4
5.2 下载可执行二进制文件
# 将hyperledger/fabric/scripts/bootstrap.sh拷贝到hyperledger/fabric-samples中
# 终端进入到hyperledger/fabric-samples文件夹中
# 修改bootstrap.sh权限
chmod +x bootstrap.sh
#运行bootstrap.sh
./bootstrap.sh
运行后出现的情况:
192:fabric-samples malrin$ ./bootstrap.sh
./bootstrap.sh: line 179: [: too many arguments
Installing hyperledger/fabric-samples repo
===> Checking out v1.4.4 of hyperledger/fabric-samples
HEAD is now at bc72f3e Remove Stalebot
Installing Hyperledger Fabric binaries
===> Downloading version 1.4.4 platform specific fabric binaries
===> Downloading: https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/darwin-amd64-1.4.4/hyperledger-fabric-darwin-amd64-1.4.4.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (6) Could not resolve host: nexus.hyperledger.org
==> Done.
===> Downloading version 1.4.4 platform specific fabric-ca-client binary
===> Downloading: https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric-ca/hyperledger-fabric-ca/darwin-amd64-1.4.4/hyperledger-fabric-ca-darwin-amd64-1.4.4.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (6) Could not resolve host: nexus.hyperledger.org
==> Done.
Installing Hyperledger Fabric docker images
===> Pulling fabric Images
==> FABRIC IMAGE: peer
1.4.4: Pulling from hyperledger/fabric-peer
Digest: sha256:92c2bef91e80f54f6d73a89b796eab1b616f372e2258431f17d50dd0c2ce316b
Status: Image is up to date for hyperledger/fabric-peer:1.4.4
docker.io/hyperledger/fabric-peer:1.4.4
==> FABRIC IMAGE: orderer
1.4.4: Pulling from hyperledger/fabric-orderer
Digest: sha256:f7715923e2ca67cee526c21638d86b21480e179419e9d6c20078caabb241b20e
Status: Image is up to date for hyperledger/fabric-orderer:1.4.4
docker.io/hyperledger/fabric-orderer:1.4.4
==> FABRIC IMAGE: ccenv
1.4.4: Pulling from hyperledger/fabric-ccenv
Digest: sha256:a4fb800d54ace75e26736d4789af7d27552774e781cf2513a5c83756808b8441
Status: Image is up to date for hyperledger/fabric-ccenv:1.4.4
docker.io/hyperledger/fabric-ccenv:1.4.4
==> FABRIC IMAGE: javaenv
1.4.4: Pulling from hyperledger/fabric-javaenv
5667fdb72017: Pulling fs layer
d83811f270d5: Pulling fs layer
ee671aafb583: Pulling fs layer
7fc152dfb3a6: Waiting
3ab6e950cac5: Waiting
5376778093d1: Waiting
43a7285ac27f: Waiting
67c5b361775c: Waiting
7a9b4d622867: Waiting
6d6187ff91b2: Waiting
226ce6507c2d: Waiting
3b5744e9eb4a: Waiting
612ae6bdb688: Pull complete
2c0af2fc994a: Pull complete
594ab6cf73a0: Pull complete
9a77075403a7: Pull complete
3a153e9e6bcb: Pull complete
b2e75a1b75e5: Pull complete
32055256389b: Pull complete
03e36de7e531: Pull complete
d8515073d6bd: Pull complete
ae113aae7b23: Pull complete
0b7aba7b70e9: Pull complete
dba5f7f27672: Pull complete
e187107a4f2d: Pull complete
7092dcf5ae00: Pull complete
d825619a86d2: Pull complete
aeee0a2c59db: Pull complete
76a0bd84f506: Pull complete
80a98336b964: Pull complete
7d6ee8a0058b: Pull complete
cf18382c2cf7: Pull complete
75a167f9814e: Pull complete
cb5809320473: Pull complete
41d39db8657e: Pull complete
Digest: sha256:9eee210e4874b6e1a6d6a7594f0659ef37686ad572bc6273466b93b61956d23f
Status: Downloaded newer image for hyperledger/fabric-javaenv:1.4.4
docker.io/hyperledger/fabric-javaenv:1.4.4
==> FABRIC IMAGE: tools
1.4.4: Pulling from hyperledger/fabric-tools
Digest: sha256:822418c5ad61473ecfa911dfe4b100264500c504c78def52730106a717be71cb
Status: Image is up to date for hyperledger/fabric-tools:1.4.4
docker.io/hyperledger/fabric-tools:1.4.4
===> Pulling fabric ca Image
==> FABRIC CA IMAGE
1.4.4: Pulling from hyperledger/fabric-ca
Digest: sha256:e506e3ce041fd6c4fca5d12492caf44597818d425a8ecc73cf2b135303365244
Status: Image is up to date for hyperledger/fabric-ca:1.4.4
docker.io/hyperledger/fabric-ca:1.4.4
===> Pulling thirdparty docker images
==> THIRDPARTY DOCKER IMAGE: couchdb
0.4.18: Pulling from hyperledger/fabric-couchdb
Digest: sha256:048b7c44c1deaabd0f3d84fbf2f7b649d7b10c54a3241c7354f078ee2eff077c
Status: Image is up to date for hyperledger/fabric-couchdb:0.4.18
docker.io/hyperledger/fabric-couchdb:0.4.18
==> THIRDPARTY DOCKER IMAGE: kafka
0.4.18: Pulling from hyperledger/fabric-kafka
Digest: sha256:b043b8b91fe858bfd51ad662e5816f9471f120e5ec3e77d29bf6c70bcec5c917
Status: Image is up to date for hyperledger/fabric-kafka:0.4.18
docker.io/hyperledger/fabric-kafka:0.4.18
==> THIRDPARTY DOCKER IMAGE: zookeeper
0.4.18: Pulling from hyperledger/fabric-zookeeper
Digest: sha256:ff5f9893355a56ac7dbc53d0b6a68c18cf7adfcc0c34a55a717866cb9c00a442
Status: Image is up to date for hyperledger/fabric-zookeeper:0.4.18
docker.io/hyperledger/fabric-zookeeper:0.4.18
===> List out hyperledger docker images
hyperledger/fabric-javaenv 1.4.4 4648059d209e 3 months ago 1.7GB
hyperledger/fabric-javaenv latest 4648059d209e 3 months ago 1.7GB
hyperledger/fabric-ca 1.4.4 62a60c5459ae 3 months ago 150MB
hyperledger/fabric-ca latest 62a60c5459ae 3 months ago 150MB
hyperledger/fabric-tools 1.4.4 7552e1968c0b 3 months ago 1.49GB
hyperledger/fabric-tools latest 7552e1968c0b 3 months ago 1.49GB
hyperledger/fabric-ccenv 1.4.4 ca4780293e4c 3 months ago 1.37GB
hyperledger/fabric-ccenv latest ca4780293e4c 3 months ago 1.37GB
hyperledger/fabric-orderer 1.4.4 dbc9f65443aa 3 months ago 120MB
hyperledger/fabric-orderer latest dbc9f65443aa 3 months ago 120MB
hyperledger/fabric-peer 1.4.4 9756aed98c6b 3 months ago 128MB
hyperledger/fabric-peer latest 9756aed98c6b 3 months ago 128MB
hyperledger/fabric-zookeeper 0.4.18 ede9389347db 3 months ago 276MB
hyperledger/fabric-zookeeper latest ede9389347db 3 months ago 276MB
hyperledger/fabric-kafka 0.4.18 caaae0474ef2 3 months ago 270MB
hyperledger/fabric-kafka latest caaae0474ef2 3 months ago 270MB
hyperledger/fabric-couchdb 0.4.18 d369d4eaa0fd 3 months ago 261MB
hyperledger/fabric-couchdb latest d369d4eaa0fd 3 months ago 261MB
可以发现有两个镜像文件没有下载下来
hyperledger-fabric-darwin-amd64-1.4.4.tar.gz
hyperledger-fabric-ca-darwin-amd64-1.4.4.tar.gz
5.3 下载上面两个文件
下载的 hyperledger-fabric-linux-amd64-1.4.3.tar
压缩包内有 bin 和 config 两个文件夹,hyperledger-fabric-ca-linux-amd64-1.4.3.tar
压缩包内有 bin 文件夹,将两个 bin 文件夹内的二进制文件汇总在一个 bin 文件夹内。 最后将 bin 和 config 文件夹复制到 fabric-samples
文件夹内。
https://download.csdn.net/download/yuxinqingge/12158745
https://download.csdn.net/download/yuxinqingge/12158750
以上两步下载完成了fabric网络启动所需依赖的镜像文件。
6. 测试网络
6.1 启动网络
进入fabric-samples下的first-network文件夹,
cd first-network
6.2 产生网络
./byfn.sh -m generate
然后点击y即可
192:fabric-samples malrin$ cd first-network
192:first-network malrin$ ./byfn.sh -m generate
Generating certs and genesis block for channel 'mychannel' with CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] y
proceeding ...
cryptogen tool not found. exiting
192:first-network malrin$ ./byfn.sh -m generate
Generating certs and genesis block for channel 'mychannel' with CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] y
proceeding ...
/Users/malrin/src/github.com/hyperledger/fabric-samples/first-network/../bin/cryptogen
6.3 启动网络
./byfn.sh -m up
输入y即可
192:first-network malrin$ ./byfn.sh -m up
Starting for channel 'mychannel' with CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] y
proceeding ...
LOCAL_VERSION=1.4.4
DOCKER_IMAGE_VERSION=1.4.4
接着会出现start和end
6.5 关闭网络
./byfn.sh -m down
输入y
192:first-network malrin$ ./byfn.sh -m down
Stopping for channel 'mychannel' with CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] y
proceeding ...
以上就是我安装部署fabric的全部过程,在安装过程中遇到好几个坑,也耽误了好多时间,但从中也学到好多东西。
遇到的坑总结:
1.go的路径问题,.bash_profile文件总是保存不了,后来没有找到解决办法,不知道是哪里的问题。
2.版本问题,看别人安装的过程,安装测试网络e2e-cli文件,我在1.4.4版本中去找这个文件,总是显示不存在,然后就网上找各种文件,后来才发现e2e文件在1.4版本的时候已经移除,当然在1.4.4版本中也就更不存在了。
3.在docker中添加加速器,我的版本是19.03.5,在看别人安装docker攻略时,版本是17的,我的客户端界面和别人的不一样,以为安装的客户端有问题,卸了从新装,结果还是那样,后来查了好久,才知道可以在文本框中输入一行代码就可以了。
4.下载hyperledger-fabric-darwin-amd64-1.4.4.tar.gz和hyperledger-fabric-ca-darwin-amd64-1.4.4.tar.gz两个文件,一开始我以为是我网络的原因,因为终端错误链接不上那个网址,后来自己在浏览器中打开,发现确实找不到这两个文件。在百度上找这两个文件,同样是找不到。最终在万能的google上找到了,总算是能把网络启动起来了。
作者:yuxinqingge