ファブリックハイパーレジャー1.4.1ナショナルシークレット修正バージョンCentosスタンドアロン展開およびテストプロセス

ファブリックハイパーレジャー1.4.1ナショナルシークレット修正バージョンCentosスタンドアロン展開およびテストプロセス

説明:CSDN著者に関するこの論文の参照コーラ少ない氷記録時間のファブリック状態秘密のビルドプロセスノードバージョンこの記事の。同時に、CSDNのXiao Zhangにも感謝します。彼の無私の答えに慌て、展開プロセスを支援します。最後に、CSDNのdddengyunjie、国家機密変換バージョンリリースし、通常の作業を支援してくれたことに感謝します。

1.準備条件

  • ここでは説明しない公式のFabricHyperledgerドキュメントの要件に従って、git、docker、docker-compose、goなどをインストールします。

    • 注:Go言語バージョンは1.14.1以降よりも優れています。そうでない場合、問題が発生する可能性があります。

    • 注:dockerのインストールにyum installをインストールしないでください。インストールされているバージョンが低すぎます(17.06より上である必要があります)。すでにインストールされている場合は、削除して再インストールする方法について以下の記事があります。もちろん、この記事を読んで、インストールせずにインストールすることもできます。

      CSDNへのDockerのインストール遅すぎるため、国内のミラーリングサービスを使用してすばやくインストールしてください

      アリババクラウドデータソースを使用することをお勧めします。

      または、curl -fsSL https://get.docker.com/ | shdockerをインストールします(中国では推奨されません、低速)。

  • 画像をパッケージ化するときにbzip2ツールを使用する必要があります。インストールされていない場合は、yum -y install bzip2

  • GOPATHを設定するために、この記事では、GOPATHがに設定されていることを前提としてい/root/gopathます。GO111MODULEデフォルトにするための環境変数は、のようになっていることに注意しくださいauto変更しないでくださいon

2.変更されたソースコードをダウンロードします

1.ディレクトリを作成します

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

2.ダウンロード

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

注:国内ダウンロードは比較的遅いため、ダウンロードしたパッケージファイルを別の場所から直接コピーできます(パッケージと依存ライブラリのコピーの方が優れている場合は、ここでは行いません)。

梱包と開梱にはtarコマンドを使用することをお勧めします

注:この変換は、実際にはHyperledger Fabricv1.4.2の国家機密変換です。

注:ディレクトリ構造は固定されています。プロジェクトディレクトリは$ GOPATH / src / github.com / hyperledger / fabricである必要があります。

3、インストールの依存関係とビルドツールの例

不足している依存関係をダウンロードしてツールを構築する方法は次のとおりです。

1.golang.org/xでの依存関係

ここでは、次の2つのライブラリをダウンロードする必要があります。

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

同時に、これはダウンロードデモの例でもあります。

2.protoc-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

これは、国内サーバーを直接構築できない場合に使用される、デモンストレーションの例でもあります。もちろん、他の場所から直接コピーするなど、より簡単な方法もあります(推奨される方法)。

3.嘲笑ツールを作成する

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

ここでは、嘲笑ツールが個別に作成されていると便利です。

第4に、ソースコードのスクリプト内の無効なURLを置き換えます

1、Makefile

プロジェクトディレクトリに切り替えます

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

CHAINTOOL_URL置き換える必要のある値:

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

理由:元のURLは維持されなくなったため、置き換える必要があります。
このMakefileの詳細については、Go言語課金ステーションの記事を参照してください:Fabric 1.4Makefileを使用してFabric構築をマスターするのは簡単です。

2、gotools.mk

vim gotools.mk

go.fqp.mockery := github.com/vektra/mockery/cmd/mockeryこの行をに変更go.fqp.mockery := github.com/vektra/mockery/cmdます。githubのディレクトリが変更されたため、最後の嘲笑を削除します。ただし、ここでの変更は、作成中に中断されないようにすることしかできず、実際にmockeryツールを構築することはできません具体的な詳細については、後でdockerを作成するときに説明します。

5、バイナリファイルをコンパイルします

chmod +x scripts/*.sh
make release

makegolangツールライブラリの数が少ないことを確認するメッセージが表示されます。これらのライブラリは、3.1のメソッドでダウンロードするか、他の場所からコピーできます。プロンプトに注意してください。このプロジェクトのベンダー、GOPATH、およびGOROOTディレクトリから検索されます。ダウンロード後、不足している依存ライブラリをvendorディレクトリ内の対応する場所にコピーすることもできます(次のステップはmake dockerを使用することです)。

このメーカーで不足しているパッケージは次のとおりです(ここには記載されていません)。

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

ここでは、上記の方法に従ってインストールcryptoおよびsysパッケージ化するだけで済みます
それから私達は再make

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

インストールtreeコマンドがない場合は、レイヤーごとにls

release/linux-amd64/binディレクトリに生成されファイル

注:最初にディレクトリを別の場所にコピーします。実行するmake cleanと、このディレクトリが削除されるためです。通常は実行しませんが、必要になる場合はどうすればよいですか。

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

ご覧のとおり、正常に複製されました。

6、画像をコンパイルします

make docker

最初のステップでは、いくつかの基本的な画像をダウンロードして長時間待機します...プロキシ画像リポジトリを使用することはお勧めしません。単独でダウンロードするだけです。

2番目のステップでは、最初にピアをコンパイルしてから、依存度の低いライブラリの入力を求めます。makeリリース中に依存ライブラリがプロジェクトベンダーディレクトリにコピーされない場合は、最初にここにコピーする必要があります。依存関係を見つける順序はローカルベンダーであり、後の2つは仮想ディレクトリであり、マシンのGOPATHとGOROOTではないことに注意してください。
上記の3.1の方法でダウンロードされた他のライブラリも、ベンダーの対応するディレクトリにコピーされます。もちろん、scpコマンドを使用して他のマシンからコピーすることもできます。ここにライブラリが少ない場合は、ライブラリをコピーしてください。同じディレクトリ内の他のライブラリをコピーする必要はありません。

以前にgolang.org/x/の下にパッケージcryptosysパッケージをダウンロードしたことがあるので、この操作で欠落しているライブラリは、ローカルの$ 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/

その後、make dockerビルドはpeer-image成功します。

3番目のステップでは、をビルドしorder-imageます。

4番目のステップでは、gotoolsツールを構築します。ネットワークの問題が原因で、最初のツールcounterfeiterや他のツールをビルドするときに、依存関係ライブラリの接続タイムアウトを取得するように求められることがあります。この問題を手動で解決する方法については、後で説明します。時間を節約するために、ctrl + cで直接オフにすることができます。

失敗がなければ、ビルドは成功します。次に、ステップ5にスキップします。

途中でツールを作成できない場合は、以下をお読みください。

を実行するls -aと、プロジェクト.buildディレクトリの下にさらにディレクトリがあることがわかりますディレクトリは最初は存在しません。スクリプトがここで実行されると自動的に作成され、ビルドされたツールが.build/docker/gotools/bin/ディレクトリに生成されます。

ここにポイントがあります:

記録的な速さで氷を含むコーラが少ないファブリック状態シークレットバージョンビルドプロセスノードこの記事では方法について説明していますが、前の例の方法を使用するためのツール(嘲笑、protoc-gen-goツールなど)が手作業で作成されてからコピーされていないことです.build/docker/gotools/bin/カタログに移動ます。しかし、この方法を何度も試したところ、問題があることがわかりまし
た。コピーしてdockerを作成した後、gotoolsの一部のツールの作成をスキップし(この方法でも実行できます)、ステップ5に直接スキップします。したがって、推奨されるアプローチは、ツールの1つだけをコピーするのではなく、他の場所からビルドされたすべてのツールをコピーすることです(たとえば、コピーソースとして香港サーバー上でビルドします)。次の操作例では、他のサーバーからすべてのツールを一度にコピーします。

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

パスワードを入力した後、コピーが完了するのを待ちます。

構築されたすべてのツールをすべてのgitee人がダウンロードできるように配置し、完了したら倉庫の住所を追加する予定です。

倉庫の住所は次のとおりです: https //gitee.com/TianCaoJiangLin/gotools-bin

5番目のステップ、実行を継続make dockerすると、chaintoolツールインターフェイスをダウンロードしているように見えます。国内のダウンロード速度は非常に遅いです。このとき、ctrl + cでオフにし、他の場所で作成されたツールを対応する.build/bin/ディレクトリにコピーできます特定の操作については説明しません。

注:このツールは私の倉庫にも置かれています。

6番目のステップを実行してから再度実行make dockerするbuild-envimage-toolコンパイルされ待機します。通常、最終的に成功するまで問題はありません。

この時点で、使用するdocker imagesとすべてのミラーが一覧表示され、名前または名前のないミラーがいくつか表示されます。これは、障害プロセス中に生成された役に立たないミラーであるはずです。次のコマンドでそれらを削除できます。

docker rmi image_id -f

ここで、image_idはイメージIDを指しmake cleanます。軽く使用しないように注意してください

ここには欠陥があります:
ビルドが完了した後、実行します

tree .build/docker/gotools/bin/

リストにgotools.mkある11個のツールではなく10個のツールしかリストされていないことがわかります。1つがmockery不足している場合はどうすればよいですか?無効なURLの置き換えで述べた一般的な理由ですが、具体的な詳細(能力の制限)については明確ではありません。

ここで1つ少なくmockeryても実際の操作には影響しませんが、完璧主義者の場合は、ここを通り抜けることができないはずです。どうすればよいですか。建物の正面をコピーしてからツールを追加するため
.build/docker/gotools/binすべてのツールmockery次に、再構築し、ビルドツールを手動でコピーします。

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

建物内でgotoolsいつctrl + cオフにするか、次に:

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

注:ここで再構築するには、名前や名前のない一部の画像も確認する必要がありますが、削除してください。

セブン、ファブリックをダウンロード-サンプルとテスト

1.バージョン1.4.2のファブリックサンプルをダウンロードします

将来的にCAを使用する可能性があるため(この記事にはCAの国家機密バージョンは含まれていませんが)、テストにはファブリックサンプルv1.4.2を使用します。ファブリックサンプルv1.4.1サンプルネットワークの起動スクリプトにはCAが含まれていません。自分で作成するのは面倒です。

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

2.上記でコンパイルしたバイナリファイルをfabric-sampleディレクトリにコピーします

make releaseこのステップは、コピー生成されたbinディレクトリからルートディレクトリfabirc-sampleにコピーされているため、次のコマンドを使用できます。

cp -r bin fabric-samples

3.変更configtx.yaml

国のシークレットバージョンの注文ノードはサポートされていないため、次と同じ設定にOrdererCapabilities V1_4_2変更しfabric-sample v1.4.1ます。

vim first-network/configtx.yaml
  • 最初Capabilitiesの一部変更ChannelV1_4_2: trueV1_3: true
  • 最初Capabilitiesの一部変更OrdererV1_4_2: trueV1_1: true
  • 最初のCapabilities部分ApplicationV1_4_2: trueコメントアウトされています。
  • 最初Capabilitiesの一部変更ApplicationV1_3: falseV1_3: true

4.テストを実行します

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

プロセス中にピアノードがクラッシュして実行できないというエラーが報告された場合(一部のマシンまたはcentosバージョンでこの状況が発生する場合あります)、現在のバージョンの問題が原因である可能性あります。これは、特定のcentosバージョン(またはサーバー設定)で設定する必要があります。ピアの環境変数。具体的な詳細については、Alibaba Cloudの記事を参照しくださいSIGSEGVの問題の分析とAlibabaCloud環境でのHyperledgerFabricの展開のためのソリューションの経験共有

ここbase/peer-base.yaml変更するには、ノードの環境変数設定に:を追加します- GODEBUG=netdns=go

その後:

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

8.ミラーのエクスポートとインポート

変更されたナショナルシークレットバージョンを複数のマシンに展開する必要がある場合、各マシンがこの手順を実行することは不可能であり、時間がかかりすぎます。私の個人的な想定は、コンパイルされたイメージをローカルファイルとしてエクスポートし、それを別のマシンにコピーしてからイメージをインポートし、上記でmake release生成されたbinフォルダーをコピーすることです

参考記事:docker copy image file

このアイデアは他の人によって実現されており、実現可能であり、速度は作成よりもはるかに高速です。

最後に、展開テストは多くのステップを伴う操作であるため、作成は比較的簡単であり、一部のステップ、特にツールを構築するステップも不明確です。記事に誤りがあったり、操作で問題が発生した場合は、メッセージを残して一緒に話し合ってください。

おすすめ

転載: blog.csdn.net/weixin_39430411/article/details/107939859