BAAS部署

备注

安徽省高等学校教育联盟链基于 Hyperledger Fabric V2.2.x 进行二次开发和部署。

1. 先决条件

1.1 激活码

用户单位需要在“联盟管理系统”申请注册会员,并由联盟管理员“预审”通过后,系统分配激活码,并邮件发送给会员用户邮箱(用户单位注册时填写)。激活码可在机构会员中心中(“机构信息”栏目最下方,点击“查看激活码”),或查看邮件获取。

_images/baas_001.png

1.2 服务器要求

1、BAAS服务系统需要独立服务器部署;

2、CA/TLS-CA服务可以合并放在一台服务器;

3、每个PEER节点建议使用独立的服务器。

建议参考配置:Ubuntu18.04 Server 64位/8核/16G内存/200G硬盘

1.3 网络要求

  • BAAS服务系统服务器需要能访问教育网;

    BAAS服务系统服务器需要访问联盟管理系统完成系统激活与消息通讯;

  • PEER节点运行的服务器,需要能访问教育网;

    PEER节点需要与ORDERER排序节点与其他高校组织的PEER节点通讯。

  • PEER节点的端口,能被教育网中的其他高校访问;

    PEER节点端口不能被其他高校节点访问,则无法完成交易背书。本事项要求不影响部署环节,但需要在操作链码前需要完成PEER节点端口的映射,其他单位才能通过PEER端口访问本单位节点。

  • BAAS服务系统服务器与CA、TLS-CA服务器,Peer节点服务器间要能相互通讯;

    BAAS服务系统需要远程管理CA、TLS-CA以及PEER节点服务器及监控其状态

_images/baas_002.png

2. 环境配置

重要

BAAS服务系统服务器,CA、TLS-CA所在服务器以及PEER节点所在服务器均需按本节说明完成 Docker、Docker-Compose的安装和联盟仓库的配置。

主要包括:

  • Docker安装

  • Docker-Compose安装

  • 联盟仓库配置

2.1 Docker安装

  1. 安装docker

curl -sSL https://get.docker.com/ | \
sed s#download.docker.com#mirrors.aliyun.com/docker-ce# | sh
  1. 将用户添加到docker组

sudo usermod -aG docker $USER
  1. 更新用户组

newgrp docker

2.2 Docker-Compose安装

  1. 下载docker-compose

sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 设置权限

sudo chmod +x /usr/local/bin/docker-compose
  1. 建立快捷方式

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  1. 查看版本

docker-compose --version

2.3 联盟仓库配置

  1. 下载证书

sudo mkdir -p /etc/docker/certs.d/educhain.ustc.edu.cn:8443/ && \
sudo curl -L "https://edc.ah.edu.cn/mgmt/ca.crt" -o \
/etc/docker/certs.d/educhain.ustc.edu.cn:8443/ca.crt
  1. 配置联盟仓库源

sudo curl -L "https://edc.ah.edu.cn/mgmt/daemon.json" -o /etc/docker/daemon.json
  1. 重启Docker

sudo systemctl daemon-reload && sudo systemctl restart docker

3. 系统安装

3.1 系统目录

建议系统安装在当前用户Home目录下的baas目录,先在用户Home目录下创建baas目录,命令如下:

mkdir -p $HOME/baas

重要

本节所有命令均在BAAS服务系统安装目录下执行。 进入BAAS服务系统安装目录命令:cd $HOME/baas

3.2 配置docker-compose.yml

可通过以下命令下载docker-compose.yml文件,

curl -L "https://edc.ah.edu.cn/mgmt/docker-compose.yml" -o $HOME/baas/docker-compose.yml

或在系统安装目录下新建文件名docker-compose.yml并填充以下内容

version: "3"
services:
  nginxphp:
    image: educhain/baas
    container_name: baasweb
    environment:
      - SERVER_IP=<SERVER_IP>
      - BAAS_API_PORT=8080
      - MYSQL_ROOT_PASSWORD=请填写新密码
    ports:
      - 80:80
      - 8080:8080
    expose:
      - 9501
    depends_on:
      - mysql
    volumes:
      - ./data/organizations:/www/organizations/:rw
      - ./data/uploads:/www/api/public/uploads/:rw
      - ./data/storage:/www/api/storage/data/:rw
      - ./logs/nginx:/var/log/nginx/:rw
      - ./logs/php:/var/log/php
      - ./logs/gf-app:/var/log/gf-app
    ulimits:
      nproc: 65535
      nofile:
        soft: 65535
        hard: 65535
    restart: always
    cap_add:
      - SYS_PTRACE
    networks:
      default:
        ipv4_address: 10.0.0.2

  mysql:
    image: educhain/mysql
    container_name: baasmysql
    environment:
      - MYSQL_ROOT_PASSWORD=请填写新密码
    ports:
      - 3306:3306
    volumes:
      - ./data/mysql:/var/lib/mysql/:rw
    restart: always
    networks:
      default:
        ipv4_address: 10.0.0.5

networks:
  default:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 10.0.0.0/24

修改docker-compose.yml配置:

  • <SERVER_IP>换成BAAS服务系统所在服务器的IP地址。

  • 修改数据库密码。在配置文件中有两处,MYSQL_ROOT_PASSWORD=请输入新密码,请确保这两处密码相同。

重要

强烈建议修改数据库密码。数据库密码不少于6位, 必须包含大写字母、小写字母、数字及以下特殊符号(@!%^)之一的组合。

3.3 新建目录

复制以下完整命令在终端执行:

mkdir -p $HOME/baas/logs/gf-app && \
mkdir -p $HOME/baas/logs/nginx && \
mkdir -p $HOME/baas/logs/php && \
mkdir -p $HOME/baas/data/storage && \
mkdir -p $HOME/baas/data/uploads && \
chown -R 1000:1000 $HOME/baas/logs && \
chown -R 1000:1000 $HOME/baas/data/storage && \
chown -R 1000:1000 $HOME/baas/data/uploads

3.4 启动BAAS服务系统

请参阅 4. 操作命令.

启动成功后,即可完成系统的部署,可通过浏览器输入BAAS服务系统所运行服务器的IP地址, 即可访问BAAS服务系统。系统激活请浏览:BAAS系统激活

4. 操作命令

重要

本节所有命令均在BAAS服务系统安装目录下执行。 进入BAAS服务系统安装目录命令:cd $HOME/baas

4.1 启动服务

docker-compose up -d

说明:启动命令将检查镜像,如果不存在则自动从联盟仓库拉取镜像后并运行,启动成功后可通过IP地址访问BAAS服务系统。

4.2 重启服务

docker-compose restart

4.3 停止服务

docker-compose down

5. 系统升级

BAAS服务系统升级,将推送至联盟仓库。本地升级需要按以下3个步骤执行:

5.1 停止服务

请参阅 4. 操作命令.

5.2 移除镜像

docker rmi educhain/baas:latest

5.3 启动服务

请参阅 4. 操作命令.

6. 数据备份

BAAS服务系统数据库,证书文件等均在BAAS服务系统安装目录下的data 目录。

CA、TLS-CA以及PEER节点数据均在其所安装主机的映射路径下。

可针对以上目录进行定期备份操作。

7. 系统移除

注意:系统移除将导致所有数据丢失,请谨慎操作。

7.1 停止服务

请参阅 4. 操作命令.

7.2 移除镜像

docker rmi educhain/baas:latest
docker rmi educhain/mysql:latest

7.3 删除安装目录

sudo rm -rf $HOME/baas