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