Skip to content

服务部署

Samurais edited this page Sep 12, 2019 · 19 revisions

本节目录:

操作系统

安装依赖

下载Clause发布版

启动服务

示例程序

操作系统

Clause服务使用docker容器发布,容器镜像推送到dockerhub上,对于运行环境,有如下依赖:

  • Linux,兼容不同发布版本(Ubuntu, CentOS, Redhat, Debian, etc.)
  • Mac OSX
  • CPU支持AVX指令集
检测CPU是否支持AVX指令集的方法,在操作系统中执行:
grep avx /proc/cpuinfo
如果有文本输出,代表支持;否则,输出文本为空,则不支持。

提示:服务器部署和开发环境不支持在Windows上完成。同时,开发环境的代码编写不受限制,但是编译、运行和调试仅支持Linux环境。

保证部署环境具备硬件配置:

  • 8GB+ 内存
  • 4核心+ CPU
  • 128GB+ 存储空间

Clause服务在运行时不请求第三方网络资源,所以部署环境不依赖于网络。在没有网络的情况下,需要事先从dockerhub下载镜像,并且使用 "docker save"命令将相关镜像保存为本地压缩包,然后将压缩包上传至服务器;如果部署环境可以访问互联网,则可省略这步。所以,建议在服务部署环境支持服务器下载互联网资源。

安装依赖

Docker

下载并安装Docker,版本信息如下或更新。

Docker version 18.09.0

Docker下载地址:https://docs.docker.com/install/

在安装完成后,确定:

1. Docker 服务已经运行

docker ps

2. 登录账号具有使用Docker服务的权利

sudo groupadd docker
sudo usermod -aG docker $USER

然后,登出该用户,再次登陆。

docker-compose

在安装完成Docker后,还需要安装docker-composedocker-compose是一个简单的将不同容器编排为一个应用的工具。

docker-compose安装指南:https://docs.docker.com/compose/install/

下载Clause发布版

Clause的不同发布版本列表参考:https://github.com/chatopera/clause/releases

当前稳定版本为: 点击下载 clause v1.0.0

下载后得到dist压缩包,将压缩包上传至部署服务器,假设上传位置为 /root/clause.dist.5b6b74d.tgz,后文使用DIST_PATH代表这个路径,解压出来的文件夹的路径为 ROOT_PATH。 其中,5b6b74d为版本号,同时也对应了项目代码库的CommitID。

启动服务

  • 解压文件 登录到部署服务器。
cd /root # 进入DIST_PATH的根目录
tar xzf DIST_PATH # 解压压缩包
cd ROOT_PATH # 进入解压的文件夹,为 clause.dist.CommitID
ls # 查看文件
LICENSE  README.md  admin  docker-compose.yml  src  var
  • 目录说明
.
├── LICENSE              // 使用许可协议
├── README.md            // 文档
├── admin                // 管理脚本
│   └── docker           // 容器管理脚本
│       ├── flush.sh     // 清空持久化数据,通常是重新部署使用
│       ├── start.sh     // 启动应用,包含多个容器,通过docker-compose编排
│       └── stop.sh      // 停止应用,包含多个容器,通过docker-compose编排
├── docker-compose.yml   // 容器编排的描述
├── src                  // 配置   
│   └── clause
│       └── config       // MySQL数据库表初始化文件
└── var
    ├── activemq         // Apache ActiveMQ 持久化文件
    │   ├── data             
    │   └── logs
    ├── local            // Clause意图容器持久化文件
    │   ├── data         // 内置的词典等数据
    │   └── workarea     // 机器人训练文件、模型等
    ├── mysql            // MySQL数据库持久化文件
    │   ├── admin
    │   └── data
    └── redis            // Redis持久化文件
        └── data
  • 启动服务
cd ROOT_PATH
./admin/docker/start.sh

查看服务状态:

cd ROOT_PATH
docker-compose ps # 当每个服务都是UP的状态时,服务可用

并且,使用 docker-compose logs 查看没有异常日志。 在初次部署时,MySQL需要第一次初始化,启动的时间大约需要1min,这时,clause容器会连接MySQL服务不成功,造成clause容器多次重启,但是超过1min后,如果clause容器还不能启动,则说明有其他问题。比如,端口占用等情况,需要IT人员进一步排查。

image

默认情况下,服务的端口是通过一个环境变量文件设置的。

cd ROOT_PATH
cat .env # 配置文件
CLAUSE_DB_PASSWD=cl12345 # 各数据库使用的密码(Redis, ActiveMQ, MySQL, etc.)
INTENT_PORT=8063         # 意图识别模块的端口
CLAUSE_PORT=8056         # Clause应用端口
SYSDICTS_PORT=8066       # 系统词典模块的端口
MYSQL_PORT=8055          # MySQL数据库端口
REDIS_PORT=8050          # Redis端口
ACTIVEMQ_PORT=8057       # 以下为ActiveMQ端口
ACTIVEMQ_PORT2=8058
ACTIVEMQ_PORT3=8059
  • 服务地址

服务正常启动后,就得到了一个能用于标注、训练和提供对话接口的Clause服务了,请注意服务的提供地址:

CLAUSE_IP : 启动Clause服务的机器的IP地址

CLAUSE_PORT : 启动Clause服务的端口,也就是 .envCLAUSE_PORT值,默认为8056

后续Wiki文档中,会使用两个参数。

  • 更改默认配置

在有端口冲突的情况下,用户可以修改这个配置文件,或者更换数据库密码。

修改配置文件后,要使配置文件生效,执行以下命令:

cd ROOT_PATH
./admin/docker/stop.sh
./admin/docker/start.sh
  • 调整日志级别

在docker-compose.yml中,有几处设置模块日志级别的地方:

GLOG_v=NUMBER

NUMBER默认为3。

级别 说明
4 调试, DEBUG
3 信息, INFO
2 警告, WARN
1 错误, ERROR

在生产环境,建议设置为 2

因为clause通过docker容器分发,通过docker-compose编排,二者的基础知识在此不做详细介绍,在网络上有非常多的资料,请自行学习。

下一步

接下来,您就可以基于部署的Clause服务构建聊天机器人了,请参考 示例程序

You can’t perform that action at this time.