前言
這幾天一直在研究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,不需要一杯奶茶錢,只需要你點個關注。如果覺得小編的文章對你有幫助,記得點個贊,順便幫我分享出去。有什么不明白的地方,歡迎在下方評論,或私信小編。最后,感謝大家的閱讀,祝大家生活愉快。