跳到主要内容

1. 快速部署体验链

本文档将帮助您通过一系列简单步骤,在您的本地环境中快速部署一个体验链节点。

2. 准备工作

  • 操作系统:CentOS 7.5 或 Ubuntu 20+

  • 硬件配置:8核CPU、16GB内存、500GB硬盘

  • jq:用于处理 JSON 数据的轻量级命令行工具。

  • BubiChain 安装包:区块链软件的压缩包。

  • 申请节点证书

3. 开始部署

3.1. 安装 jq 工具

  • 在线安装 jq 工具

    $ yum install -y jq
  • 离线安装 jq 工具

    在可联通网络的主机下载安装文件,将文件上传到需要安装的主机

    # linux主机操作方式:
    $ wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
    $ scp jq-linux64 {需要安装的主机}:/tmp
    $ cp /tmp/jq-linux64 /usr/local/bin/jq
    $ chmod +x /usr/local/bin/jq

    # windows主机操作方式:
    1.浏览器输入:https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
    2.下载完成后,通过ftp工具将jq-linux64文件上传到需要安装jq工具的主机(例如上传到/tmp目录中)
    3.在需要安装jq工具的主机执行操作:
    $ cp /tmp/jq-linux64 /usr/local/bin/jq
    $ chmod +x /usr/local/bin/jq
  • 验证安装

    # 执行命令查看版本号,正确显示即安装成功
    $ jq --version

    jq-1.x

3.2. 解压BubiChain安装包

$ tar xf bubichain-v4.tar.gz -C /usr/local
$ mv /usr/local/bubichian /usr/local/bubi

目录结构:

$ /usr/local/bubi/
├── bin/ # 二进制文件
├── config/ # 配置文件
├── coredump/
├── data/ # 数据目录
├── jslib/
├── log/ # 日志目录
└── scripts/ # 启动脚本

3.3. 执行部署脚本

创建 deploy_bubichian.sh 脚本

$ cat >deploy_bubichian.sh<<'EOF'

#!/bin/bash

# 清除注释行
remove_comments() {
sed -e 's://.*::g' "$1" > "$2"
}

# 创建地址
output1=$(./bin/bubi --create-account)
output2=$(./bin/bubi --create-account)
output3=$(./bin/bubi --create-account)

# 提取地址和私钥
address1=$(echo "$output1" | jq -r '.address')
private_key_aes1=$(echo "$output1" | jq -r '.private_key_aes')
address2=$(echo "$output2" | jq -r '.address')
private_key_aes2=$(echo "$output2" | jq -r '.private_key_aes')
address3=$(echo "$output3" | jq -r '.address')
private_key_aes3=$(echo "$output3" | jq -r '.private_key_aes')

# 打印p2p、ledger、创世账号地址和私钥
echo "p2p address1: $address1"
echo "p2p_key private_key_aes1: $private_key_aes1"
echo "ledger address2: $address2"
echo "ledger_key private_key_aes2: $private_key_aes2"
echo "genesis address3: $address3"
echo "genesis private_key_aes3: $private_key_aes3"

# 检查所有地址和私钥是否为非空
if [[ -z $address1 || -z $private_key_aes1 || -z $address2 || -z $private_key_aes2 || -z $address3 ]]; then
echo "提取失败,请检查"
exit 1
fi

# 从bubi.json中删除注释并保存到临时文件
remove_comments ./config/bubi.json ./config/bubi.json.tmp

# 更新到 bubi.json
jq --arg address1 "$address1" \
--arg private_key_aes1 "$private_key_aes1" \
--arg address2 "$address2" \
--arg private_key_aes2 "$private_key_aes2" \
--arg address3 "$address3" \
'.p2p.address = $address1 | .p2p.node_private_key = $private_key_aes1 | .ledger.validation_address = $address2 | .ledger.validation_private_key = $private_key_aes2 | .genesis.account = $address3 | .genesis.validators = [$address2]' \
./config/bubi.json.tmp > ./config/bubi.json.tmp2 && mv ./config/bubi.json.tmp2 ./config/bubi.json

# 验证是否更新成功
if [[ $? -eq 0 ]]; then
echo "配置文件已成功更新。"
else
echo "配置文件更新失败。"
exit 1
fi

# 删除临时文件
rm ./config/bubi.json.tmp

EOF

执行脚本将创建 genesisp2p 地址、Ledger 地址及私钥,并自动更新到 ./config/bubi.json 文件中。

$ chmod +x deploy_bubichian.sh
$ ./deploy_bubichian.sh

3.4. 配置证书

将生成的节点证书以及对应的证书签名请求文件ca.crtnode_bubi.crtnode_bubi.pemnode_bubi.csr 复制到 /usr/local/bubi/config 目录下。

$ cp ca.crt node_bubi.crt node_bubi.pem node_bubi.csr   /usr/local/bubi/config

3.5. 启动服务

执行启动脚本

$ cd /usr/local/bubi/
$ ./scripts/bubi start

3.6. 验证状态

检查服务端口

$ netstat -tpnl | grep bubi

应显示以下端口:

  • 9333 (P2P端口)
  • 19333 (RPC端口)
  • 7053 (Web API端口)

查询区块高度

$ curl {节点IP}:19333/getLedger

# 如果seq值随时间(1分钟)递增,则表示部署成功。