Fabric Hyperledger 1.4.1 Versión de modificación del secreto nacional Centos Proceso de implementación y prueba independiente

Fabric Hyperledger 1.4.1 Versión de modificación del secreto nacional Centos Proceso de implementación y prueba independiente

Descripción: Este documento hace referencia a la versión del nodo del proceso de compilación del secreto de estado de la tela del autor de CSDN menos hielo en un tiempo récord de este artículo. Al mismo tiempo, también quiero agradecer a Xiao Zhang en CSDN , sin entrar en pánico por sus respuestas desinteresadas y su ayuda en el proceso de implementación; Finalmente, me gustaría agradecer a dddengyunjie en CSDN por publicar una versión de transformación secreta nacional y ayudar en el trabajo ordinario.

1. Condiciones de preparación

  • Instale git, docker, docker-compose, go, etc. de acuerdo con los requisitos de la documentación oficial de Fabric Hyperledger, que no se describirá aquí.

    • Nota: la versión de Go language es mejor que la 1.14.1 o superior, de lo contrario puede haber problemas

    • Nota: No instale yum install para la instalación de la ventana acoplable, por lo que la versión instalada es demasiado baja (debe ser superior a 17.06). Si se ha instalado, hay un artículo a continuación sobre cómo eliminarlo y reinstalarlo. Por supuesto, puede leer este artículo para instalarlo sin instalación.

      La instalación de Docker en CSDN es demasiado lenta, use el servicio de duplicación nacional para instalar rápidamente

      Se recomienda utilizar la fuente de datos de Alibaba Cloud.

      O curl -fsSL https://get.docker.com/ | shinstale Docker (no recomendado en China, velocidad lenta).

  • Necesita usar bzip2herramientas al empaquetar imágenes , si no está instalado, ejecuteyum -y install bzip2

  • Para configurar GOPATH, este artículo asume que está configurado en /root/gopath. Tenga en cuenta que GO111MODULEla variable de entorno para convertirla en la predeterminada es autocomo, no cambiar on.

2. Descarga el código fuente modificado

1. Crea un directorio

mkdir -p $GOPATH/src/github.com/hyperledger

2. Descarga

cd $GOPATH/src/github.com/hyperledger
git clone https://github.com/dddengyunjie/fabric

Nota: La descarga doméstica es relativamente lenta, puede copiar directamente un archivo de paquete descargado desde otro lugar (si el paquete y copiar la biblioteca dependiente es mejor, no lo haremos aquí).

Se recomienda utilizar tarcomandos para empacar y desempacar .

Nota: Esta transformación es en realidad una transformación secreta nacional de Hyperledger Fabric v1.4.2.

Nota: La estructura del directorio es fija, el directorio del proyecto debe ser $ GOPATH / src / github.com / hyperledger / fabric

Tres, dependencias de instalación y ejemplos de herramientas de compilación

A continuación, se explica cómo descargar algunas dependencias que faltan y crear algunas herramientas.

1. Dependencias en golang.org/x

Aquí debe descargar las siguientes dos bibliotecas:

mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/crypto.git
git clone https://github.com/golang/sys.git

Al mismo tiempo, este es también un ejemplo de demostración de descarga.

2. Cree la herramienta protocol-gen-go

cd $GOPATH/src
mkdir golang
cd golang
git clone https://github.com/golang/protobuf.git
cd protobuf/protoc-gen-go/
go build
go install
ls $GOPATH/bin

Aquí también hay un ejemplo para demostrar, utilizado cuando el servidor doméstico no se puede construir directamente. Por supuesto, hay una forma más sencilla, como copiar directamente desde otro lugar (método recomendado).

3. Construye una herramienta de burla

mkdir -p $GOPATH/src/github.com/vektra
cd $GOPATH/src/github.com/vektra
git clone --branch v1.1.2 https://github.com/vektra/mockery.git
cd mockery/cmd/mockery
go install mockery.go
ls $GOPATH/bin

Aquí la herramienta de burla se construye por separado es útil.

En cuarto lugar, reemplace la URL no válida en el script en el código fuente.

1 、 Makefile

Cambiar al directorio del proyecto

cd $GOPATH/src/github.com/hyperledger/fabric
vim Makefile

CHAINTOOL_URLEl valor que debe reemplazarse con:

https://hyperledger.jfrog.io/hyperledger/fabric-maven/org/hyperledger/fabric-chaintool/$(CHAINTOOL_RELEASE)/fabric-chaintool-$(CHAINTOOL_RELEASE).jar

Motivo: la URL original ya no se mantiene, por lo que es necesario reemplazarla.
Para obtener más información sobre este Makefile, consulte el artículo sobre la estación de carga de idioma Go: Fácil de dominar la construcción de Fabric a través de Fabric 1.4 Makefile .

2 、 gotools.mk

vim gotools.mk

Cambie go.fqp.mockery := github.com/vektra/mockery/cmd/mockeryesta línea a go.fqp.mockery := github.com/vektra/mockery/cmd. Elimina la última burla, porque su directorio en github ha cambiado. Sin embargo, el cambio aquí solo puede hacer que sea ininterrumpido durante la creación y, en realidad, no puede construir la mockeryherramienta. Los detalles específicos se discutirán más adelante cuando make docker

Cinco, compila el archivo binario

chmod +x scripts/*.sh
make release

makeSe le indicará que hay menos bibliotecas de herramientas golang, que pueden descargarse mediante el método en 3.1 anterior o copiarse de otros lugares. Preste atención al indicador, se busca en los directorios del proveedor, GOPATH y GOROOT de este proyecto. Después de la descarga, también puede copiar las bibliotecas dependientes que faltan en la vendorubicación correspondiente en el directorio (el siguiente paso es usar make docker).

Los paquetes que faltan en esta marca son (no enumerados aquí):

golang.org/x/crypto/chacha20poly1305
golang.org/x/sys/cpu
......

Aquí solo es necesario instalar cryptoy sysempaquetar de acuerdo con el método anterior .
Entonces estamos make:

cd $GOPATH/src/github.com/hyperledger/fabric
make release
tree release

Si no hay un treecomando de instalación , solo capa por capa ls.

Archivos generados en release/linux-amd64/binel directorio.

Nota: Primero copie el directorio en otro lugar, porque si lo ejecuta make clean, este directorio se borrará, aunque generalmente no lo ejecutamos, ¿qué pasa si a veces es necesario?

cp -r release/linux-amd64/bin ~/
ls ~/bin

Como puede ver, lo hemos replicado con éxito.

Seis, compila la imagen

make docker

En el primer paso, descargará algunas imágenes básicas y esperará mucho tiempo ... No se recomienda usar un repositorio de imágenes proxy, simplemente déjelo descargar por sí mismo.

En el segundo paso, primero compila el par y luego le indica que hay menos bibliotecas dependientes. Si la biblioteca dependiente no se copia en el directorio de proveedores del proyecto durante la versión de creación, primero debe copiarla aquí. Tenga en cuenta que el orden de búsqueda de dependencias es el proveedor local, y los dos últimos son directorios virtuales, no GOPATH y GOROOT de la máquina.
¿Qué otras bibliotecas también se descargan mediante el método en 3.1 anterior y luego se copian en el directorio correspondiente en el proveedor. Por supuesto, también puede usar el comando scp para copiar desde otras máquinas. Tenga en cuenta que si hay pocas bibliotecas aquí, copie las bibliotecas y no es necesario copiar otras bibliotecas en el mismo directorio.

Como ya hemos descargado los paquetes cryptoy syspaquetes en golang.org/x/ antes, las bibliotecas que faltan en esta operación se pueden copiar del directorio local $ GOPATH:

mkdir -p vendor/golang.org/x/crypto/internal/
cp -r $GOPATH/src/golang.org/x/crypto/chacha20poly1305 vendor/golang.org/x/crypto/
cp -r $GOPATH/src/golang.org/x/crypto/curve25519 vendor/golang.org/x/crypto/
cp -r $GOPATH/src/golang.org/x/crypto/chacha20 vendor/golang.org/x/crypto/
cp -r $GOPATH/src/golang.org/x/crypto/internal/subtle vendor/golang.org/x/crypto/internal/
cp -r $GOPATH/src/golang.org/x/crypto/poly1305 vendor/golang.org/x/crypto/
cp -r $GOPATH/src/golang.org/x/sys/cpu vendor/golang.org/x/sys/

Entonces la make dockerconstrucción es peer-imageexitosa.

En el tercer paso, se construirá order-image.

En el cuarto paso, construirá herramientas de gotools. A veces, debido a problemas de red, al crear la primera herramienta counterfeiteru otras herramientas, se le pedirá que se agote el tiempo de espera de conexión de la biblioteca de dependencias. Hablaremos sobre cómo resolver este problema manualmente más adelante. Para ahorrar tiempo, puede apagarlo directamente presionando ctrl + c.

Si no hay ningún error, la compilación se realizará correctamente. Luego, saltará al paso 5.

Si no logra construir una herramienta en el medio, siga leyendo:

Ejecutar ls -a, puede ver que hay más directorios en el .builddirectorio del proyecto . El directorio no existe inicialmente, se creará automáticamente cuando el script se ejecute aquí y las herramientas integradas se generen en el .build/docker/gotools/bin/directorio.

Aquí viene el punto:

Menos cola con hielo en el registro de proceso de construcción versión secreto de Estado tela tiempo nodo de este artículo menciona una manera, es la falta de herramientas para utilizar el método del ejemplo anterior (como burla, herramientas protoc-gen-go) fueron mano-construida, luego copia .build/docker/gotools/bin/Ir al catálogo. Pero después de probar este método muchas veces, descubrí que hay un problema:
después de copiarlo y hacer la ventana acoplable, omitirá la construcción de algunas herramientas en gotools (también se puede ejecutar de esta manera) y saltará directamente al paso 5. Por lo tanto, el enfoque recomendado es copiar todas las herramientas que se han creado desde otro lugar (por ejemplo, compilarlas en un servidor de Hong Kong como fuente de copia) en lugar de copiar solo una de las herramientas. La siguiente operación de ejemplo copia todas las herramientas de otros servidores a la vez:

cd .build/docker/gotools/bin/
scp useranme@hostname:/opt/gopath/src/github.com/hyperledger/fabric/.build/docker/gotools/bin/* ./

Espere a que se complete la copia después de ingresar la contraseña.

Planeo poner todas las herramientas integradas en giteeél para que todos las descarguen, y luego agregar la dirección del almacén cuando terminen.

La dirección del almacén es: https://gitee.com/TianCaoJiangLin/gotools-bin

El quinto paso, continuar ejecutándose make docker, parecerá descargar la interfaz de la herramienta chaintool, la velocidad de descarga doméstica es muy lenta. En este momento, puede desactivarlo presionando ctrl + c, y copiar las herramientas creadas en otro lugar al .build/bin/directorio correspondiente . La operación específica ya no se describe.

Nota: esta herramienta también se coloca en mi almacén.

El sexto paso, y luego volver a ejecutarlo make docker, se compilará build-envy image-toolesperará, generalmente no habrá problemas, hasta el éxito final.

En este punto, el uso docker imagesenumerará todos los espejos, y verá algunos espejos sin nombre ni nombre, que deberían ser espejos inútiles generados durante el proceso de falla. Podemos eliminarlos con el siguiente comando:

docker rmi image_id -f

Aquí image_id se refiere a la ID de la imagen, recuerde no usarla a la ligera make clean.

Aquí hay una imperfección: una
vez completada la compilación, ejecutamos

tree .build/docker/gotools/bin/

Descubriré que sólo se enumeran 10 herramientas en lugar gotools.mkde 11. mockery¿Qué debo hacer si falta una? La razón general que mencioné en el reemplazo de la URL no válida, pero no tengo claros los detalles específicos (capacidad limitada).

Uno menos aquí mockeryno afecta la operación real, pero si usted es un perfeccionista, debe ser incapaz de pasar por aquí, ¿qué debe hacer?
La .build/docker/gotools/binherramienta Todo para copiar el frente del edificio y luego la mockeryherramienta agregada. Luego reconstruya, copie manualmente la herramienta de construcción:

mkdir -p ~/docker/gotools
cp -r .build/docker/gotools/bin ~/docker/gotools
cp $GOPATH/bin/mockery ~/docker/gotools/bin/
tree ~/docker/gotools/bin
make clean
make docker

En el edificio, gotoolscuándo ctrl + capagarlo, luego:

cp ~/docker/gotools/bin/* .build/docker/gotools/bin/
make docker

Nota: La reconstrucción aquí también necesita verificar algunas imágenes que no tienen nombre o nombre, pero eliminarlas.

Siete, descargue la muestra de tela y pruebe

1. Descargue la muestra de tejido de la versión 1.4.2

Debido a que podemos usar CA en el futuro (aunque este artículo no incluye la versión secreta nacional de CA), usamos fabric-sample v1.4.2 para realizar pruebas. El script de inicio en la red de muestra de fabric-sample v1.4.1 no incluye CA. Es problemático escribirlo usted mismo.

cd ~
git clone --branch v1.4.2 https://github.com/hyperledger/fabric-samples.git

2. Copie el archivo binario compilado anteriormente en el directorio fabric-sample

Para que make releaseeste paso se haya copiado al directorio bin generado por copia al directorio raíz fabirc-sample, se puede utilizar el siguiente comando

cp -r bin fabric-samples

3. Modificarconfigtx.yaml

Debido a que el nodo de pedido de la versión secreta del país no es compatible OrdererCapabilities V1_4_2, lo modificamos a la fabric-sample v1.4.1misma configuración que:

vim first-network/configtx.yaml
  • La primera Capabilitiesparte de Channella V1_4_2: truecambio V1_3: true.
  • La primera Capabilitiesparte de Ordererla V1_4_2: truecambio V1_1: true.
  • La primera Capabilitiesparte Applicationestá V1_4_2: truecomentada.
  • La primera Capabilitiesparte de Applicationla V1_3: falsecambio V1_3: true.

4. Ejecute la prueba

cd fabirc-sample/first-network
./byfn.sh up

Si se informa un error durante el proceso de que el nodo del mismo nivel se ha bloqueado y no puede ejecutarse (algunas máquinas o versiones de centos pueden tener esta situación), puede deberse a que hay algunos problemas en la versión actual, que deben configurarse en algunas versiones de centos (o configuraciones del servidor) La variable de entorno de un par. Para obtener detalles específicos, consulte un artículo de Alibaba Cloud : Análisis de los problemas de SIGSEGV en la implementación de Hyperledger Fabric en el entorno de Alibaba Cloud y el intercambio de experiencias para resolverlos.

Para cambiar aquí base/peer-base.yaml, agregue: en la configuración de la variable de entorno del nodo - GODEBUG=netdns=go.

luego:

./byfn.sh down
./byfn.sh up

8. Exportación e importación espejo

Si es necesario implementar la versión secreta nacional modificada en varias máquinas, es imposible que cada máquina siga este paso, que requiere demasiado tiempo. Mi suposición personal es exportar la imagen compilada como un archivo local, copiarla a otra máquina y luego importar la imagen y copiar make releasela bincarpeta generada anteriormente .

Artículo de referencia: archivo de imagen de copia de docker

Esta idea ha sido realizada por otros, es factible y la velocidad es mucho más rápida que la de hacer.

Finalmente: debido a que la prueba de implementación es una operación con muchos pasos, es relativamente simple de escribir y algunos pasos tampoco están claros, especialmente el paso de construir herramientas. Si hay algún error en el artículo o algún problema encontrado en la operación, deje un mensaje y discútalo juntos.

Supongo que te gusta

Origin blog.csdn.net/weixin_39430411/article/details/107939859
Recomendado
Clasificación