目錄
環境:兩臺雲服務器 Ubuntu 18.04.4 Remote Desktop Manager
1.兩臺共同執行下載及安裝
通過gihub下載到主機上
(1)下載
cd ~/ && git clone https://github.com/FISCO-BCOS/generator.git && cd ./generator
(2)安裝
cd ~/generator && bash ./scripts/install.sh
(3)獲取節點二進制
./generator --download_fisco ./meta
問題:
(3.1)可能會出現的問題1:從github下載時網絡不穩定導致的
解決:
可以在後面加上--cdn
指令,從國內的鏡像進行下載,如果還是網絡錯誤,可多試幾次
./generator --download_fisco ./meta --cdn
(3.2)可能會出現的問題2:解壓fisco-bcos失敗
再者一個簡單粗暴的解決方法:
直接在瀏覽器裏面下載下來到你的電腦裏,下面是下載地址,複製到瀏覽器中即可下載
https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.4.0/fisco-bcos.tar.gz
然後把下載下來的fisco-bcos
文件,再通過WinSCP,複製到generator/meta/ 目錄下,解壓
tar -xzvf fisco-bcos.tar.gz
賦予運行權限:
chmod +x fisco-bcos
(4)檢查二進制版本
./meta/fisco-bcos -v
看到版本號信息則說明二進制文件已經生效可用,如下示:
2.初始化鏈證書及機構
A機構(其中一臺雲服務器)
(1)初始化鏈證書
在generator文件夾下進行,如果不是在generator目錄下先則先執行下列語句進入該目錄
cd ~/generator
若已在該目錄下,可直接執行下列命令:
./generator --generate_chain_certificate ./dir_chain_ca
(2)初始機構A
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA
(3)查看機構證書及私鑰
ls dir_agency_ca/agencyA/
可以看到:agency.crt agency.key ca.crt
(4)發送鏈證書、機構證書、機構私鑰至機構A
cp ./dir_agency_ca/agencyA/* ~/generator/meta/
因爲控制檯查看文檔的不方便,也爲了後續工作的方便執行,此處插播一個可視化工具推薦——WinSCP
發送鏈證書、機構證書、機構私鑰至機構A之後如果使用命令行查看的話還是比較麻煩的,但是通過WinSCP可以方便的看到我們剛纔所下載安裝的generator文件及鏈證書、機構證書、機構私鑰,而不需要通過命令行的方式進行查看及一些文件複製等操作。
B機構(另一臺雲服務)
(1)初始化機構B
通過手動方式,在WinSCP裏面將機構A的 dir_chain_ca 拷貝到機構B
(2)生成機構B證書
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyB
(3)發送鏈證書、機構證書、機構私鑰至機構B
cp ./dir_agency_ca/agencyB/* ~/generator/meta/
3.修改配置文件
手動修改generator/conf文件夾下面的node_deployment.ini ,如下圖所示,修改紅框內的p2p_ip和rpc_ip,P2P填的是外網ip,而RPC填的是內網ip,雲服務器上都要這樣修改。這裏由於我的服務器只有內網ip,就全填內網了。
注:在實際開發過程中RPC不能填外網ip,關於這3個接口,詳情可看——FISCO BCOS網絡端口講解
這裏,機構A和機構B,即兩臺服務器都要對 node_deployment.ini 做相應p2p_ip和rpc_ip的修改。
4.機構生成併發送節點信息
機構A
(1)機構A生成節點證書及p2p連接信息文件
./generator --generate_all_certificates ./agencyA_node_info
查看
ls ./agencyA_node_info
可以看到下列內容即爲成功:
機構B
(2)機構B生成節點證書及p2p連接信息文件
./generator --generate_all_certificates ./agencyB_node_info
5.創世機構收集節點證書
生成創世區塊的機構需要節點證書,示例中由A機構生成創世區塊,因此B機構除了發送節點p2p連接地址文件外,還需發送節點證書至機構A
(1)將機構B節點agencyB_node_info 文件夾 cert_*.crt文件,如下兩個文件,copy到機構A的meta文件夾中。
(2)同樣操作,將機構A節點agencyA_node_info 文件夾的兩個文件也一樣要copy到機構B的meta文件夾中。
6.各機構節點連接信息,相互收集
(1)將機構A中的 /generator/agencyA_node_info 文件夾下的 peers.txt 複製到自己的 /generator/meta 目錄下,並且把peers.txt 的內容複製到機構B中meta新建一個peersA存放。
(2)同理,將機構B中的 /generator/agencyB_node_info 文件夾下的 peers.txt 複製到自己的 /generator/meta 目錄下,並且把peers.txt 的內容複製到機構A中meta新建一個peersB存放。
即如下:
7.機構A生成羣組1創世區塊
(1)修改機構A的 /generator/conf 文件夾下的 group_genesis.ini ,這裏要結合個人主機的ip地址來看,注意端口要對上,與前面 node_deployment.ini
文件中p2p端口的對應。
;命令解釋
[group]
;羣組id
group_id=1
[nodes]
;機構A節點p2p地址
node0=10.13.1.23:30300
;機構A節點p2p地址
node1=10.13.1.23:30301
;機構B節點p2p地址
node2=10.13.1.24:30300
;機構B節點p2p地址
node3=10.13.1.24:30301
(2)機構A生成 group_genesis.ini 配置的羣組創世區塊
./generator --create_group_genesis ./group
(3)分發羣組1創世區塊至機構B
手動複製,機構A ./group/group.1.genesis 文件到機構B的meta文件夾下。
(4)機構A生成所屬節點
./generator --build_install_package ./meta/peersB.txt ./nodeA
(5)機構B生成所屬節點
./generator --build_install_package ./meta/peersA.txt ./nodeB
(6)各自啓動機構下的節點
啓動機構A節點:
bash ./nodeA/start_all.sh
啓動機構B節點:
bash ./nodeB/start_all.sh
問題:
解決:
因爲我們是root用戶下的四個子用戶,存在衝突,可嘗試 ps -ef | grep fisco 查看進程節點 bash ./stop_all.sh 停掉其他節點,再啓動就可以了。
(7)查看進程
ps -ef | grep fisco
(8)查看節點
tail -f ./node*/node*/log/log* | grep +++
查看到以下內容即爲成功:
8.控制檯的搭建
搭建控制檯,由於需要java環境,所以先要搭建java
(1)添加ppa源(注:中間會出現按enter鍵繼續 )
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
(2)安裝openjdk
sudo apt install openjdk-8-jre-headless
(3)在瀏覽器裏面下載jdk 1.8.211
地址如下:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(4)解壓文件
①在根目錄新建software 文件夾(與generator同級),將 jdk-8u251-linux-x64.tar.gz 安裝包放置其中
② 在/usr/lib/ 目錄下新建jdk 文件夾
cd /usr/lib
su root
mkdir jdk
③返回sofrware目錄下,執行解壓命令
sudo tar -zxvf jdk-8u251-linux-x64.tar.gz -C /usr/lib/jdk
(5)配置環境
①修改配置
sudo vim /etc/profile
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_251 這裏是要指定的文件位置
#set java env
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_251
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
如圖示:
保存
:wq
②執行命令,立即生效:
source /etc/profile
更新:sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk/jdk1.8.0_251/bin/java 300 這裏也是要改成指定的位置
sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk/jdk1.8.0_251/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jdk/jdk1.8.0_251/bin/javac 300
檢測版本
java -version
可以看到版本信息如下:
9.控制檯配置
(1)在generator目錄下下載控制檯
./generator --download_console ./ --cdn
(2)配置
①配置A機構控制檯生成sdk證書
./generator --generate_sdk_certificate ./dir_sdk_ca ./dir_agency_ca/agencyA
配置B機構控制檯生成sdk證書
./generator --generate_sdk_certificate ./dir_sdk_ca ./dir_agency_ca/agencyB
執行完 ls dir_sdk_ca/sdk 命令,可以看到 ca.crt node.crt node.key sdk.crt sdk.key 即爲成功
②將文件複製至console目錄下的conf文件夾
cp -rf dir_sdk_ca/sdk/* console/conf/
③進入generator/console/conf 目錄下,複製樣例文件applicationContext-sample.xml
爲新文件
cp applicationContext-sample.xml applicationContext.xml
④手動修改 applicationContext.xml 中的value,如下示:
10.啓動控制檯
./start.sh
就可以看到控制檯如下示: