BAAS部署
备注
安徽省高等学校教育联盟链基于 Hyperledger Fabric V2.2.x 进行二次开发和部署。
1. 先决条件
1.1 激活码
用户单位需要在“联盟管理系统”申请注册会员,并由联盟管理员“预审”通过后,系统分配激活码,并邮件发送给会员用户邮箱(用户单位注册时填写)。激活码可在机构会员中心中(“机构信息”栏目最下方,点击“查看激活码”),或查看邮件获取。

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节点服务器及监控其状态

2. 环境配置
重要
BAAS服务系统服务器,CA、TLS-CA所在服务器以及PEER节点所在服务器均需按本节说明完成 Docker、Docker-Compose的安装和联盟仓库的配置。
主要包括:
Docker安装
Docker-Compose安装
联盟仓库配置
2.1 Docker安装
安装docker
curl -sSL https://get.docker.com/ | \
sed s#download.docker.com#mirrors.aliyun.com/docker-ce# | sh
将用户添加到docker组
sudo usermod -aG docker $USER
更新用户组
newgrp docker
2.2 Docker-Compose安装
下载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
设置权限
sudo chmod +x /usr/local/bin/docker-compose
建立快捷方式
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
查看版本
docker-compose --version
2.3 联盟仓库配置
下载证书
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
配置联盟仓库源
sudo curl -L "https://edc.ah.edu.cn/mgmt/daemon.json" -o /etc/docker/daemon.json
重启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