CheckList

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

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

检查项

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

操作系统

支持操作系统:
CentOS 7.2 64位 、 Ubuntu 16.04 64位
  • 检查系统是否为64位系统:

使用uname -m命令, 64位系统的输出为x86_64, 32位系统的输出为i386或者i686.

$ uname -m
$ x86_64
  • 操作系统版本检查:
CentOS
$ cat /etc/redhat-release 
$ CentOS Linux release 7.2.1511 (Core)

Ubuntu
$ cat /etc/os-release
$ NAME="Ubuntu"
$ VERSION="16.04.1 LTS (Xenial Xerus)"
$ ID=ubuntu
$ ID_LIKE=debian
$ PRETTY_NAME="Ubuntu 16.04.1 LTS"
$ VERSION_ID="16.04"
$ HOME_URL="http://www.ubuntu.com/"
$ SUPPORT_URL="http://help.ubuntu.com/"
$ 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上执行
sudo nc -l p    //实际检查时, 将p替换为实际端口。
  • 在服务器B上面执行telnet命令
$ telnet A p  //实际检查时, 将A替换服务器ip, 将p替换为实际端口。
Trying A...
Connected to A.
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”的字样, 很容易区分。
Oracle JDK 输出:
$ java -version
$ java version "1.8.0_144"
$ Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
$ Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

OpenJDK 输出:
$ java -version
$ openjdk version "1.8.0_171"
$ OpenJDK Runtime Environment (build 1.8.0_171-b10)
$ 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 查看。

$ openssl version
$ OpenSSL 1.0.2k-fips  26 Jan 2017

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

sudo yum/apt -y install openssl

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

yum/apt源检查

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

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

检查列表

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

CentOS 依赖
        sudo yum -y install epel-release
        sudo yum -y install bc
        sudo yum -y install gettext
        sudo yum -y install cmake3
        sudo yum -y install git
        sudo yum -y install gcc-c++
        sudo yum -y install openssl
        sudo yum -y install openssl-devel
        sudo yum -y install leveldb-devel
        sudo yum -y install curl-devel
        sudo yum -y install libmicrohttpd-devel
        sudo yum -y install gmp-devel
        sudo yum -y install lsof
        sudo yum -y install crudini
        sudo yum -y install libuuid-devel

Ubuntu 依赖
        sudo apt-get -y install gettext
        sudo apt-get -y install bc
        sudo apt-get -y install cmake
        sudo apt-get -y install git
        sudo apt-get -y install gcc-c++
        sudo apt-get -y install openssl
        sudo apt-get -y install build-essential libboost-all-dev
        sudo apt-get -y install libcurl4-openssl-dev libgmp-dev
        sudo apt-get -y install libleveldb-dev  libmicrohttpd-dev
        sudo apt-get -y install libminiupnpc-dev
        sudo apt-get -y install libssl-dev libkrb5-dev
        sudo apt-get -y install lsof
        sudo apt-get -y install crudini
        sudo apt-get -y install uuid-dev

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

替换yum/apt源

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

  • CentOS更换阿里云yum源
1. 备份   
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base-bak.repo
2. 下载   
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3. 更新yum缓存   
yum makecache
  • Ubuntu 16.04更换阿里云源
1. 备份  
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
2. 修改source.list 
sudo vim /etc/apt/source.list
添加以下信息
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

3. 更新apt缓存    
sudo apt-get update