文/IT可达鸭
图/IT可达鸭、网络
前言
这几天一直在研究linux环境下安装配置rasa框架,顺便整理一下安装步骤,以后可以查看。
建议:本文适合收藏,里面每个步骤都是实际开发中遇到的,这里不涉及Rasa聊天机器人框架的源码,因为源码在网上获取非常方便。这里只是单纯介绍部署的步骤,以及如何解决一些遇到的问题。
本文不建议直接拿来用,因为网上有很多介绍关于rasa机器人的部署,特别是对于windows环境下的部署,已经有很多成熟的部署步骤。但是对于linux部署,小编是一直找不到合适的部署方法。
于是,小编通过不断尝试,不断总结,才有了本文。所以,大家可以先在windows下部署,如果成功了,想移植到linux环境下,可以回头来看看这篇文章,相信对你有很大的帮助。
环境: centos7、 python 3.6.2
目标: 安装flask+uwsgi+Rasa1.10.2+MITIE+tensorflow2.0+supervisor服务
【linux虚拟环境安装】
备注: 没有安装pyenv, 可以在linux下安装pyenv。 pyenv 类似于windows下的Anaconda,主要用于python的版本管理。
- 查看pyenv托管了哪些python版本
$ pyenv versions
- 使用pyenv安装python环境(已经安装好的可以跳过)
$ pyenv install -v 3.6.2
- 安装时报错ModuleNotFoundError: No module named '_ctypes'的解决办法
yum install libffi-devel
【项目配置】
- 从git上拉下项目( git-url 替换成实际的git地址)
git clone -b master git-url
- 进入代码根目录,新建虚拟环境
# 当前目录
$cd chatBotRasa
- 创建虚拟环境
# 当前python环境切换到3.6.2
$ pyenv global 3.6.2
# 在当前项目根目录下新建虚拟环境目录
$ virtualenv venv_rasa_362
# 切回之前的python环境(保证原始环境不变, 假设原始环境是python 3.6.0)
$ pyenv global 3.6.0
- 在项目的根目录下新建几个目录
$ mkdir log
$ mkdir logs
$ mkdir models
- 对应的模型放到指定目录下
total_word_feature_extractor_zh.dat # 放到 data 目录下
20200615-225841.tar.gz # 放到models下(不同版本rasa对应不同版本的模型,否则要重新训练)
【安装虚拟环境的rasa相关python包】
- 进入虚拟环境
$ source venv_rasa_362/bin/activate
- 退出虚拟环境
$ deactivate
- 安装rasa==1.10.2 , 安装失败,多安装几次就可以了
$ pip --default-timeout=1000 install rasa==1.10.2
- 安装项目其他的包
$ pip install -r requirements.txt
- 安装MITIE (第一步容易安装失败,多安装几次就可以了)
$ pip install git+https://github.com/mit-nlp/MITIE.git
$ pip install rasa[mitie]
- 安装uwsgi
$ pip install uwsgi
uwsgi 配置文件, 一般放在代码根目录下,例如:/opt/algorithm/chatBotRasa/chatBotRasa_config.ini
【启动rasa的两个服务】
(以脚本的形式,均需要在虚拟环境下进行。 一般更改模型的话,主线程App.py 不用重启,只要重启一下两个服务即可。运行脚本命令: $ sh xxxx.sh)
- 开启第一个服务 start_one_rasa.sh
nohup python -m rasa run --port 5005 --endpoints configs/endpoints.yml --credentials configs/credentials.yml --debug > ./log/start_one_rasa.log 2>&1 &
- 查看第一个服务 check_one_rasa.sh
# 查看端口对应的线程
netstat -tunlp|grep 5005
- 关闭第一个服务 kill_one_rasa.sh
fuser -k -n tcp 5005
- 开启第二个服务 start_two_rasa.sh
nohup python -m rasa run actions --port 5055 --actions actions --debug > ./log/start_two_rasa.log 2>&1 &
- 查看第二个服务 check_two_rasa.sh
# 查看端口对应的线程
netstat -tunlp|grep 5055
- 关闭第二个服务 kill_two_rasa.sh
fuser -k -n tcp 5055
【在线训练模型】
- 进入虚拟环境,进入项目根目录
# 模型训练: 该命令会同时训练NLU和Core模型
# 前提是安装好MITIE模块
$ python -m rasa train --config configs/config.yml --domain configs/domain.yml --data data/
【配置supervisor】
- 安装配置supervisor (非虚拟环境)
安装supervisor(一般是提前安装好了):
yum install supervisor
增加配置文件, 例如命名为: chatBotRasa_supervisor.ini
保存在 /etc/supervisord.d/chatBotRasa_supervisor.ini
注意事项:
(1) 如果网站所在的目录为chatBotRasa, 则建议ini文件命名为: chatBotRasa_supervisor.ini
(2) 如果有多一个网站,目录为charts, 则可以新建多个文件: charts_supervisor.ini
(3) 多个xxx_supervisor.ini 文件,Supervisor 会同时允许加载多个配置
- 启动停止supervisord (只有单个服务时适用, 或者首次启动)
(1) 启动supervisord: supervisord -c /etc/supervisord.conf
(2) 停止 supervisord(需要多次停止才能生效):supervisorctl shutdown
(3) 重启服务(里面的配置也会更新):supervisorctl reload
- 启动停止指定supervisord
(1) 查看所有子进程的状态:
$ supervisorctl status
(2) 关闭开启指定子进程:
$ supervisorctl restart chat_bot_rasa # 重启
$ supervisorctl stop chat_bot_rasa # 停止
$ supervisorctl start chat_bot_rasa # 启动
(3) 关闭、开启所有的子进程
$ supervisorctl stop all
$ supervisorctl start all
- 管理相关进程
(1) 查看相关进程: netstat -ntlp | grep 9108
(2) kill某个端口: fuser -k -n tcp 9108
【项目在线调试】
1. 进入虚拟目录: source my_venv/bin/activate
2. 启动项目: uwsgi dataSys_config.ini
3. 调试结束后,记得删除 项目下log目录下的日志(supervisord的调试日志)否则项目不能正常启动
结语
学习python,不需要一杯奶茶钱,只需要你点个关注。如果觉得小编的文章对你有帮助,记得点个赞,顺便帮我分享出去。有什么不明白的地方,欢迎在下方评论,或私信小编。最后,感谢大家的阅读,祝大家生活愉快。
本文由 IT可达鸭 原创,欢迎关注,带你一起长知识!