这几天一直在研究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 versions
$ pyenv install -v 3.6.2
yum install libffi-devel
【项目配置】
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
$ pip --default-timeout=1000 install rasa==1.10.2
$ pip install -r requirements.txt
$ pip install git+https://github.com/mit-nlp/MITIE.git
$ pip install rasa[mitie]
$ pip install uwsgi
uwsgi 配置文件, 一般放在代码根目录下,例如:
/opt/algorithm/chatBotRasa/chatBotRasa_config.ini
【启动rasa的两个服务】
(以脚本的形式,均需要在虚拟环境下进行。 一般更改模型的话,主线程App.py 不用重启,只要重启一下两个服务即可。运行脚本命令: $ sh xxxx.sh)
nohup python -m rasa run --port 5005 --endpoints configs/endpoints.yml --credentials configs/credentials.yml --debug > ./log/start_one_rasa.log 2>&1 &
# 查看端口对应的线程
netstat -tunlp|grep 5005
fuser -k -n tcp 5005
nohup python -m rasa run actions --port 5055 --actions actions --debug > ./log/start_two_rasa.log 2>&1 &
# 查看端口对应的线程
netstat -tunlp|grep 5055
fuser -k -n tcp 5055
【在线训练模型】
# 模型训练: 该命令会同时训练NLU和Core模型
# 前提是安装好MITIE模块
$ python -m rasa train --config configs/config.yml --domain configs/domain.yml --data data/
【配置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 会同时允许加载多个配置
(1) 启动supervisord: supervisord -c /etc/supervisord.conf
(2) 停止 supervisord(需要多次停止才能生效):supervisorctl shutdown
(3) 重启服务(里面的配置也会更新):supervisorctl reload
(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,不需要一杯奶茶钱,只需要你点个关注。如果觉得小编的文章对你有帮助,记得点个赞,顺便帮我分享出去。有什么不明白的地方,欢迎在下方评论,或私信小编。最后,感谢大家的阅读,祝大家生活愉快。