本安装文档仅描述了在一台服务器上安装搭建整个Metis的过程,目的是为了让用户对Metis的部署搭建、运行等整体认识。
如要用于生产环境,需要更多考虑分布式系统下容错、容灾能力。若有需要,可以加入Metis的qq技术交流群:288723616。
本文档提供两种安装方式:手工安装部署和docker安装部署。可以根据需要选择任意一种安装方式。
软件 | 软件要求 |
---|---|
linux发行版: | CentOS 7.4 |
python版本: | 2.7版本 |
MySQL版本: | 5.6.26及以上版本 |
Node.js版本: | 8.11.1及以上版本 |
Django版本: | 1.x.x 版本 |
运行服务器要求:1台普通安装linux系统的机器即可(推荐CentOS系统),服务器需要开放80和8080端口
以下步骤假定安装机器的代码目录是 /data/Metis/
,可根据实际情况更改。
采用yum源安装或者在MySQL官网下载源码安装,安装好后检测MySQL服务是否正常工作。
yum install mariadb-server
systemctl start mariadb
为了方便快速体验,提供了10+异常检测结果数据和300+样本数据供大家使用。
1、创建需要的数据库用户名并授权,连接MySQL客户端并执行
grant all privileges on metis.* to [email protected] identified by 'metis@123';
flush privileges;
2、创建数据库 metis
,在命令行下执行
mysqladmin -umetis -pmetis@123 -h127.0.0.1 create metis
3、将/Metis/app/sql/time_series_detector/
目录下的sql初始化文件,导入数据metis
数据库
mysql -umetis -pmetis@123 -h127.0.0.1 metis < /data/Metis/app/sql/time_series_detector/anomaly.sql
mysql -umetis -pmetis@123 -h127.0.0.1 metis < /data/Metis/app/sql/time_series_detector/sample_dataset.sql
mysql -umetis -pmetis@123 -h127.0.0.1 metis < /data/Metis/app/sql/time_series_detector/train_task.sql
4、将数据库配置信息更新到服务端配置文件database.py
vim /data/Metis/app/dao/db_common/database.py
改写配置
DB = 'metis'
USER = 'metis'
PASSWD = 'metis@123'
HOST = '127.0.0.1'
PORT = 3306
服务端python程序需要依赖django、numpy、tsfresh、MySQL-python、scikit-learn等包
yum install python-pip
pip install --upgrade pip
yum install gcc libffi-devel python-devel openssl-devel
yum install mysql-devel
通过工程目录下/Metis/docs/requirements.txt
安装
pip install -I -r requirements.txt
export PYTHONPATH=/data/Metis:$PYTHONPATH
为了保证下次登陆可以导入环境变量,请将环境变量配置写入服务器的/etc/profile
文件中
启动服务端程序,ip请替换为服务器真实ip地址
python /data/Metis/app/controller/manage.py runserver {ip}:{port}
此启动模式为Django的调试模式。如果需要部署生产环境,可通过nginx和uwsgi部署,具体请参考对应官网说明
需先安装Node.js,并且Node.js的版本需不低于 8.11.1
安装/Metis/uweb/pacakge.json
配置文件中依赖的第三方安装包
进入到uweb目录,执行npm install
修改/Metis/uweb/src/app.json
文件的后端地址配置: "origin": "http://${ip}:${port}" , ip和port对应服务端地址
运行npm run build
将uweb目录下的custom文件夹复制到uweb目录下生成的dist文件夹中
将nginx配置文件中的root定位到uweb目录下的dist文件夹
nginx配置如下:
server {
listen 80;
root /*/uweb/dist;
location / {
add_header Cache-Control max-age=0;
gzip on;
gzip_min_length 1k;
gzip_buffers 16 64k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
try_files $uri $uri/ /index.html;
}
location /index.html {
add_header Cache-Control 'no-store';
}
}
nginx正常启动后,打开浏览器并访问 http://${ip}:80/
如本地修改代码,发布更新方式如下:
npm run build 项目代码开发完成后,执行该命令打包项目代码。在项目根目录会生成一个 dist 目录,然后复制custom目录,放至dist目录下。发布时,将 dist 目录中的全部文件作为静态文件,放至服务器指定的静态文件目录即可
安装完成后,请参考API使用说明进行API调用
yum install docker
service docker start
执行部署文件
Metis/docker/start.sh ${IP}
等待部署完成后,执行docker ps命令
docker ps
查看三个容器(metis-db、metis-web、metis-svr)启动状态,如正常启动,则安装成功。
如安装成功,可以通过浏览器直接访问: http://${IP}
注意:Metis依赖80和8080端口,腾讯云服务器默认开通了80但没有开通8080的外网访问权限,需要手动在安全组中增加对8080端口的放通。
请参考API使用说明进行API调用