国产银河麒麟mips64架构系统部署fabric2.2

1. 构建golang环境

 ## 说明
示例以go1.15.7  和 go1.16.10为例 把go1.16.10改成mips系统可用的

1.1. 构建基础go

## 先在一台amd64架构机器上安装golang并且配置环境变量
wget https://studygolang.com/dl/golang/go1.15.7.linux-amd64.tar.gz

tar -xf go1.15.7.linux-amd64.tar.gz -C /home/ubuntu/Desktop/

## 根据自己需求 可以放到 /etc/profile 或者 ~/.bashrc 下面内容根据自己路径修改

vim ~/.bashrc
## 写入内容
export PATH=$PATH:/home/ubuntu/Desktop/go/bin
export GOROOT=/home/ubuntu/Desktop/go
export GOPATH=/home/ubuntu/Desktop/golang

## 命令 
source ~/.bashrc

1.2 下载想要适配版本

## 此处以go1.16.10为例  操作还是在amd64架构机器上
## 注意:此处是源码

wget https://studygolang.com/dl/golang/go1.16.10.src.tar.gz

## 设置go1.15.7 go/bin环境变量
## 是为了1.16版本自举 依赖go1.15编译

export GOROOT_BOOTSTRAP=/home/ubuntu/Desktop/go

1.3 编译要适配go

## 此处还是在amd64架构机器上执行的

mdkir mips
tar -xf go1.16.10.src.tar.gz -C ./mips

## 进入go1.16目录

cd /home/ubuntu/Desktop/mips/go/src/

## 开始编译

GOOS=linux GOARCH=mips64le ./bootstrap.bash

## 结果如下 等结果  出现go-linux-mips64le-bootstrap.tbz 文件就是成功了
Bootstrap toolchain for linux/mips64le installed in /home/ubuntu/Desktop/mips/go-linux-mips64le-bootstrap.
Building tbz.
-rw-rw-r-- 1 hxyz hxyz 120018457 Nov 18 13:17 /home/ubuntu/Desktop/mips/go-linux-mips64le-bootstrap.tbz

1.4 拷贝到mips机器

## 拷贝文件go-linux-mips64le-bootstrap.tbz 到mips机器
scp ,sftp等等 根据自己工具拷贝

## 解压文件
tar -xf go-linux-mips64le-bootstrap.tbz

1.5 安装适配mips golang

## 设置环境变量 可以放到 /etc/profile 或者 ~/.bashrc 下面内容根据自己路径修改
vim ~/.bashrc
export GOROOT=/home/ubuntu/桌面/fabric/go-linux-mips64le-bootstrap
export GOPATH=/home/ubuntu/桌面/fabric/golang
export PATH=$GOROOT/bin:$PATH

## 命令
source ~/.bashrc

1.6 验证

go version
## 是否会出现 
go version go1.16.10 linux/mips64le

2. 构建fabric-ca

2.1 修改Makefile系统相关地方

## RELEASE_PLATFORMS=追加
RELEASE_PLATFORMS =linux-mips64 linux-amd64 darwin-amd64 windows-amd64
## 添加
release/%-mips64: GOARCH=mips64le

2.2 编译fabric-ca

make fabric-ca-client

make fabric-ca-server

3. 构建fabric

3.1 修改依赖包 因系统问题

vim vendor/github.com/docker/docker/pkg/system/stat_linux.go

## 11行
由 rdev: s.Rdev,
改成 rdev: uint64(s.Rdev),

3.2 编译

make configtxgen
make configtxlator
make orderer
make peer

4. 构建chaincode

如果是自己的链码是非docker本地部署 需要把链码重新编译一下
如果是docker 那就不用了

5. 部署区块网络

5.1 非docker本地部署

## 把以上编译二进制文件拷贝bin中

## 其他注意外部部署配置路径就行
安装教程部署即可

5.2 docker

5.2.1 适配docker

## 下载docker *.deb安装包 网站:http://www.loongnix.cn/index.php/Docker
wget http://ftp.loongnix.cn/os/loongnix/1.0/docker/docker-ce_18.06.3.ce-1_mips64el.deb

## 安装步骤看文档
http://doc.loongnix.cn/web/#/50?page_id=152
##其中libdevmapper.so.1.02.1  可以在/lib中找

5.2.2 适配docker-compose

##1. 安装python3.5以上

##2. 安装python3_venv   不怕主机环境可以不用虚拟环境

##3. 进入虚拟环境
 python3.5 -m venv venv
 source ./venv/bin/activate

##4. pip升级
pip install --upgrade pip

##5. pip -v
出现问题  sys.stderr.write(f"ERROR: {exc}")
解决 wget https://bootstrap.pypa.io/pip/3.5/get-pip.py
python3 get-pip.py

##6. pip安装docker-compose
pip install docker-compose --ignore-installed requests

##7 deactivate退出虚拟环境

##8. 把docker-compose二进制程序设置环境
~/.bashrc

##9. 如果openssl问题
export CRYPTOGRAPHY_ALLOW_OPENSSL_102=1

5.2.3 拉取alpine

docker pull loongnix/alpine:3.11

docker tag loongnix/alpine:3.11 alpine:latest

5.2.4 制作golang镜像

## 写Dockerfile

#
#
FROM alpine:latest

RUN apk add --no-cache \
		ca-certificates

# set up nsswitch.conf for Go's "netgo" implementation
# - https://github.com/golang/go/blob/go1.9.1/src/net/conf.go#L194-L275
# - docker run --rm debian:stretch grep '^hosts:' /etc/nsswitch.conf
RUN [ ! -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.conf

ENV PATH /usr/local/go/bin:$PATH

ENV GOLANG_VERSION 1.16.10

RUN set -eux
RUN apk add --no-cache --virtual .build-deps \
	bash \
	gcc \
	gnupg \
	go \
	musl-dev \
	openssl
RUN export \
# set GOROOT_BOOTSTRAP such that we can actually build Go
	GOROOT_BOOTSTRAP="$(go env GOROOT)" \
# ... and set "cross-building" related vars to the installed system's values so that we create a build targeting the proper arch
# (for example, if our build host is GOARCH=amd64, but our build env/image is GOARCH=386, our build needs GOARCH=386)
	GOOS="$(go env GOOS)" \
	GOARCH="$(go env GOARCH)" \
	GOHOSTOS="$(go env GOHOSTOS)" \
	GOHOSTARCH="$(go env GOHOSTARCH)"
	
# also explicitly set GO386 and GOARM if appropriate
# https://github.com/docker-library/golang/issues/184
RUN apkArch="$(apk --print-arch)"; \
	case "$apkArch" in \
		armhf) export GOARM='6' ;; \
		armv7) export GOARM='7' ;; \
		x86) export GO386='387' ;; \
	esac
	
# https://github.com/golang/go/issues/38536#issuecomment-616897960
COPY go1.16.10.src.tar.gz /
# https://github.com/golang/go/issues/14739#issuecomment-324767697
RUN export GNUPGHOME="$(mktemp -d)"; \
	tar -C /usr/local -xzf go1.16.10.src.tar.gz; \
	rm go1.16.10.src.tar.gz; \
	\
	goEnv="$(go env | sed -rn -e '/^GO(OS|ARCH|ARM|386)=/s//export \0/p')"; \
	eval "$goEnv"; \
	[ -n "$GOOS" ]; \
	[ -n "$GOARCH" ]; \
	( \
		cd /usr/local/go/src; \
		./make.bash; \
	); \
	\
	apk del --no-network .build-deps; \
	\
# pre-compile the standard library, just like the official binary release tarballs do
	go install std; \
# go install: -race is only supported on linux/amd64, linux/ppc64le, linux/arm64, freebsd/amd64, netbsd/amd64, darwin/amd64 and windows/amd64
#	go install -race std; \
	\
# remove a few intermediate / bootstrapping files the official binary release tarballs do not contain
	rm -rf \
		/usr/local/go/pkg/*/cmd \
		/usr/local/go/pkg/bootstrap \
		/usr/local/go/pkg/obj \
		/usr/local/go/pkg/tool/*/api \
		/usr/local/go/pkg/tool/*/go_bootstrap \
		/usr/local/go/src/cmd/dist/dist \
	; \
	\
	go version

ENV GOPATH /go
ENV PATH $GOPATH/bin:$PATH
RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
WORKDIR $GOPATH

## 本地和Dockerfile同级目录 包含golang源码包 例如go1.16.10.src.tar.gz

## 命令
docker build -t golang:1.16.10 .

docker tag golang:1.16.10 golang:1.16.10-alpine

5.2.5 fabric-ca镜像制作

## 下载官方fabric-ca源码 
cd fabric-ca
## 注意Makefile 的alpine的版本 和image/**/Dockerfile依赖镜像能够找到  比如golang:1.16.10-alpinelatest
make docker

5.2.6 fabric 镜像制作

## 下载官方fabric-ca源码
cd fabric
## 注意Makefile 的alpine的版本 和image/**/Dockerfile依赖镜像能够找到  比如golang:1.16.10-alpinelatest
make docker
## 注意 ccenv的tag 有一个为*ccenv:2.2   *baseos:2.2

5.2.7 部署

正常docker部署
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值