.. role:: red
:class: red
.. role:: blue
:class: blue
.. role:: green
:class: green
.. raw:: html
========================
BAAS部署
========================
.. note::
安徽省高等学校教育联盟链基于 `Hyperledger Fabric V2.2.x `_ 进行二次开发和部署。
1. 先决条件
============
1.1 激活码
--------------
用户单位需要在“联盟管理系统”申请注册会员,并由联盟管理员“预审”通过后,系统分配激活码,并邮件发送给会员用户邮箱(用户单位注册时填写)。激活码可在机构会员中心中(“机构信息”栏目最下方,点击“查看激活码”),或查看邮件获取。
.. image:: ./_static/images/baas_001.png
------
- 高校申请会员入口:https://edc.ah.edu.cn/mgmt/register/collage
- 企业申请会员入口:https://edc.ah.edu.cn/mgmt/register/company
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节点服务器及监控其状态`
.. image:: ./_static/images/baas_002.png
------
2. 环境配置
============
.. important::
BAAS服务系统服务器,CA、TLS-CA所在服务器以及PEER节点所在服务器均需按本节说明完成
Docker、Docker-Compose的安装和联盟仓库的配置。
主要包括:
- Docker安装
- Docker-Compose安装
- 联盟仓库配置
2.1 Docker安装
------------------
1. 安装docker
.. code-block:: shell
curl -sSL https://get.docker.com/ | \
sed s#download.docker.com#mirrors.aliyun.com/docker-ce# | sh
2. 将用户添加到docker组
.. code-block:: shell
sudo usermod -aG docker $USER
3. 更新用户组
.. code-block:: shell
newgrp docker
2.2 Docker-Compose安装
-----------------------
1. 下载docker-compose
.. code-block:: shell
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
2. 设置权限
.. code-block:: shell
sudo chmod +x /usr/local/bin/docker-compose
3. 建立快捷方式
.. code-block:: shell
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
4. 查看版本
.. code-block:: shell
docker-compose --version
2.3 联盟仓库配置
------------------
1. 下载证书
.. code-block:: shell
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
2. 配置联盟仓库源
.. code-block:: shell
sudo curl -L "https://edc.ah.edu.cn/mgmt/daemon.json" -o /etc/docker/daemon.json
3. 重启Docker
.. code-block:: shell
sudo systemctl daemon-reload && sudo systemctl restart docker
3. 系统安装
===========
3.1 系统目录
--------------------------------
建议系统安装在当前用户Home目录下的baas目录,先在用户Home目录下创建baas目录,命令如下:
.. code-block:: shell
mkdir -p $HOME/baas
.. important::
本节所有命令均在\ ``BAAS服务系统安装目录``\ 下执行。
进入\ ``BAAS服务系统安装目录``\ 命令:\ ``cd $HOME/baas``
3.2 配置docker-compose.yml
--------------------------------
可通过以下命令下载docker-compose.yml文件,
.. code-block:: shell
curl -L "https://edc.ah.edu.cn/mgmt/docker-compose.yml" -o $HOME/baas/docker-compose.yml
或在系统安装目录下新建文件名docker-compose.yml并填充以下内容
.. code-block:: shell
version: "3"
services:
nginxphp:
image: educhain/baas
container_name: baasweb
environment:
- 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配置:
- 将\ ````\ 换成BAAS服务系统所在服务器的IP地址。
- 修改数据库密码。在配置文件中有两处,\ ``MYSQL_ROOT_PASSWORD=请输入新密码``\ ,请确保这两处密码相同。
.. important::
强烈建议修改数据库密码。数据库密码不少于6位, 必须包含大写字母、小写字母、数字及以下特殊符号(@!%^)之一的组合。
3.3 新建目录
--------------------------------
复制以下完整命令在终端执行:
.. code-block:: shell
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服务系统
--------------------------------
请参阅 :ref:`4. 操作命令`.
启动成功后,即可完成系统的部署,可通过浏览器输入BAAS服务系统所运行服务器的IP地址, 即可访问BAAS服务系统。系统激活请浏览:`BAAS系统激活 `_
.. _4. 操作命令:
4. 操作命令
=================
.. important::
本节所有命令均在\ ``BAAS服务系统安装目录``\ 下执行。
进入\ ``BAAS服务系统安装目录``\ 命令:\ ``cd $HOME/baas``
4.1 启动服务
--------------------------------
.. code-block:: shell
docker-compose up -d
说明:启动命令将检查镜像,如果不存在则自动从联盟仓库拉取镜像后并运行,启动成功后可通过IP地址访问BAAS服务系统。
4.2 重启服务
--------------------------------
.. code-block:: shell
docker-compose restart
4.3 停止服务
--------------------------------
.. code-block:: shell
docker-compose down
5. 系统升级
===========
BAAS服务系统升级,将推送至联盟仓库。本地升级需要按以下3个步骤执行:
5.1 停止服务
----------------
请参阅 :ref:`4. 操作命令`.
5.2 移除镜像
----------------
.. code-block:: shell
docker rmi educhain/baas:latest
5.3 启动服务
----------------
请参阅 :ref:`4. 操作命令`.
6. 数据备份
===========
BAAS服务系统数据库,证书文件等均在BAAS服务系统安装目录下的\ ``data`` \ 目录。
CA、TLS-CA以及PEER节点数据均在其所安装主机的\ ``映射路径``\ 下。
可针对以上目录进行定期备份操作。
7. 系统移除
===========
:red:`注意:系统移除将导致所有数据丢失,请谨慎操作。`
7.1 停止服务
----------------
请参阅 :ref:`4. 操作命令`.
7.2 移除镜像
----------------
.. code-block:: shell
docker rmi educhain/baas:latest
docker rmi educhain/mysql:latest
7.3 删除安装目录
----------------
.. code-block:: shell
sudo rm -rf $HOME/baas