CheckList

通常我们推荐使用物料包[FISCO BCOS物料包]搭建FISCO BCOS的环境, 可以屏蔽搭建过程中的一些繁琐细节。

物料包使用时, 本身即有一些依赖, FISCO BCOS对网络、yum源等外部环境也存在依赖, 为减少搭建过程中遇到的问题,建议在使用之前对整个搭建的环境进行检查, 特别是生产环境的搭建, 尤其推荐CheckList作为一个必备的流程。

检查项

  • 操作系统
  • 网络
  • java环境
  • openssl版本
  • yum/apt源检查

操作系统

  1. 支持操作系统:
  2. CentOS 7.2 64 Ubuntu 16.04 64
  • 检查系统是否为64位系统:使用uname -m命令, 64位系统的输出为x86_64, 32位系统的输出为i386或者i686.
  1. $ uname -m
  2. $ x86_64
  • 操作系统版本检查:
  1. CentOS
  2. $ cat /etc/redhat-release
  3. $ CentOS Linux release 7.2.1511 (Core)
  4.  
  5. Ubuntu
  6. $ cat /etc/os-release
  7. $ NAME="Ubuntu"
  8. $ VERSION="16.04.1 LTS (Xenial Xerus)"
  9. $ ID=ubuntu
  10. $ ID_LIKE=debian
  11. $ PRETTY_NAME="Ubuntu 16.04.1 LTS"
  12. $ VERSION_ID="16.04"
  13. $ HOME_URL="http://www.ubuntu.com/"
  14. $ SUPPORT_URL="http://help.ubuntu.com/"
  15. $ BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

网络

FISCO BCOS单节点需要使用三个端口: rpc_port、channel_port、p2p_port

  • rpc_port不会有远程访问
  • channel_port需要被使用web3sdk的服务访问
  • p2p_port 节点之间通过互联组成p2p网络实际中, 需要考虑channel_port、p2p_port的网络访问策略, 节点的channel_port需要被使用区块链服务的应用所在服务器连接,每个节点的p2p_port需要能被其他节点所在服务器的连接。

检查服务器A某一个端口p能够被另一台服务器B访问的简单方法:

  • 在服务器A上执行
  1. sudo nc -l p //实际检查时, 将p替换为实际端口。
  • 在服务器B上面执行telnet命令
  1. $ telnet A p //实际检查时, 将A替换服务器ip, 将p替换为实际端口。
  2. Trying A...
  3. Connected to A.
  4. Escape character is '^]'.

上面的结果说明成功, 服务器B确实可以访问服务器A的端口p。

  • 网络不通, 通常需要运维工程师协助解决。

java环境

版本检查

FISCO BCOS需求版本Oracle JDK 1.8(java 1.8)

  • [&] CentOS/Ubuntu默认安装或者通过yum/apt安装的JDK为openJDK, 并不符合使用的要求。
  • [&] 可以通过java -version查看版本, Oracle JDK输出包含”Java(TM) SE”字样, OpenJDK输出包含”OpenJDK”的字样, 很容易区分。
  1. Oracle JDK 输出:
  2. $ java -version
  3. $ java version "1.8.0_144"
  4. $ Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
  5. $ Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
  6.  
  7. OpenJDK 输出:
  8. $ java -version
  9. $ openjdk version "1.8.0_171"
  10. $ OpenJDK Runtime Environment (build 1.8.0_171-b10)
  11. $ OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)

Oracle JDK安装

当前系统如果没有安装JDK, 或者JDK的版本不符合预期, 可以参考[Oracle JAVA 1.8 安装教程]

openssl版本

openssl需求版本为1.0.2, 可以使用 openssl version 查看。

  1. $ openssl version
  2. $ OpenSSL 1.0.2k-fips 26 Jan 2017

服务器如果没有安装openssl, 可以使用yum/apt进行安装。

  1. sudo yum/apt -y install openssl

yum/apt不存在openssl, 可以参考下面的替换apt/yum源。

yum/apt源检查

物料包工作过程中会使用yum/apt安装一些依赖项, 当前yum/apt源无法下载到相关依赖时, 工作工程中可能会出现一些问题(fisco-bcos-package-tool内部已经做了相关处理, 在异常执行时给用户提示, 并停止工作, 但实际环境更加复杂, 不排除有遗漏)。

对此建议可以提前检查yum/apt源。

检查列表

在服务器上面依次执行下面命令:

  1. CentOS 依赖
  2. sudo yum -y install epel-release
  3. sudo yum -y install bc
  4. sudo yum -y install gettext
  5. sudo yum -y install cmake3
  6. sudo yum -y install git
  7. sudo yum -y install gcc-c++
  8. sudo yum -y install openssl
  9. sudo yum -y install openssl-devel
  10. sudo yum -y install leveldb-devel
  11. sudo yum -y install curl-devel
  12. sudo yum -y install libmicrohttpd-devel
  13. sudo yum -y install gmp-devel
  14. sudo yum -y install lsof
  15. sudo yum -y install crudini
  16. sudo yum -y install libuuid-devel
  17.  
  18. Ubuntu 依赖
  19. sudo apt-get -y install gettext
  20. sudo apt-get -y install bc
  21. sudo apt-get -y install cmake
  22. sudo apt-get -y install git
  23. sudo apt-get -y install gcc-c++
  24. sudo apt-get -y install openssl
  25. sudo apt-get -y install build-essential libboost-all-dev
  26. sudo apt-get -y install libcurl4-openssl-dev libgmp-dev
  27. sudo apt-get -y install libleveldb-dev libmicrohttpd-dev
  28. sudo apt-get -y install libminiupnpc-dev
  29. sudo apt-get -y install libssl-dev libkrb5-dev
  30. sudo apt-get -y install lsof
  31. sudo apt-get -y install crudini
  32. sudo apt-get -y install uuid-dev

如果apt/yum安装某些项失败, 说明apt/yum源不存在该依赖项。

替换yum/apt源

yum/apt源如果不满足要求, 可以考虑将源替换为阿里云的源。

  • CentOS更换阿里云yum源
  1. 1. 备份
  2. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base-bak.repo
  3. 2. 下载
  4. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  5. 3. 更新yum缓存
  6. yum makecache
  • Ubuntu 16.04更换阿里云源
  1. 1. 备份
  2. sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
  3. 2. 修改source.list
  4. sudo vim /etc/apt/source.list
  5. 添加以下信息
  6. # deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
  7. deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
  8. deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
  9. deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
  10. deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
  11. deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
  12. deb http://mirrors.aliyun.com/ubuntu/ xenial universe
  13. deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
  14. deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
  15. deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
  16. deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
  17. deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
  18. deb http://archive.canonical.com/ubuntu xenial partner
  19. deb-src http://archive.canonical.com/ubuntu xenial partner
  20. deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
  21. deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
  22. deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
  23. deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
  24.  
  25. 3. 更新apt缓存
  26. sudo apt-get update