一、搭建服务器环境
1. 安装Python2.7
当前主机环境为centos6.4 当前Python环境为Python2.6.6 ,需当前环境运行notify程序,还需要Python2.7 环境安装ES,安装Python2.7如下
wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
tar zxvf Python-2.7.13.tgz
cd Python-2.7.13
./configure --prefix=/usr/local/ -enable-shared CFLAGS=-fPIC && make && make install
cd /usr/local/lib
ln -s libpython2.7.so.1.0 libpython2.7.so
vim /etc/ld.so.conf.d/local.conf
/usr/local/lib #写入Python的lib路径
/sbin/ldconfig
/sbin/ldconfig -v #查看是否被引用
至此,当前主机上就有了Python2.7环境了
2. 安装es
根据测试版本,安装ES服务
virtualenv --system-site-packages elasticsearch -p python2.7 #使用Python2.7隔离环境
yum install -y java-1.7.0-openjdk
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
vim /etc/yum.repos.d/es.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=https://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
yum install -y elasticsearch
修改配置,并启动程序
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: your_name
path.data: your_data_path
path.logs: your_logs_path
http.port: your_port
action.destructive_requires_name: true
network.host: your_host
node.name: your_node
service elasticsearch start()#管理程序
curl http://your_host, 测试 成功
3. 构建后台代码环境
使用Python2.6构建后台代码运行环境
# 起一个虚拟环境
virtualenv --system-site-packages notify_new -p python2.6
pip install -r requirements.txt
二、 同步Python代码
1. 前台
将前端代码编译后提交到代码库,发布时直接获取即可
2. 后台
代码审核后,提交后台代码;打包后提交至代码库; 在生产环境获取代码
3. 构建ES
1. 创建 ES mapping
# 创建mapping
curl -XPUT http://ip/_template/mapping.json --user username:userpawd -d @/mapping.json
# 查看mapping
curl -XGET http://ip/_template --user username:userpawd| python -m json.tool
2. 创建 index
curl -XPUT 'http://ip/alerts_sender' --user username:userpawd
#查看 index
curl -XGET http://ip/cat/indices --user username:userpawd
3. 创建外部表 (跑脚本)
三、 psql同步ES
安装扩展 python2.6 装了 multicorn-1.3.2.zip
wget http://api.pgxn.org/dist/multicorn/1.3.2/multicorn-1.3.2.zip
unzip multicorn-1.3.2.zip
cd multicorn-1.3.2
make && make install
git clone https://github.com/Mikulas/pg-es-fdw /tmp/pg-es-fdw
cd $_
sudo python setup.py install
将SQL操作写入如下 的.sql脚本;跑这个脚本
psql -d aialert -U postgres -f multicorn_pg-es-fdw.sql
** psql操作扩展 命令示例:**
# 1.创建扩展
CREATE EXTENSION multicorn;
# 2.创建该数据源的服务器对象
CREATE SERVER multicorn_es FOREIGN DATA WRAPPER multicorn OPTIONS ( wrapper 'dite.ElasticsearchFDW');
# 3.创建外围表
CREATE FOREIGN TABLE alerts_es (
created_at timestamp,
updated_at timestamp,
deleted_at timestamp,
deleted boolean,
id integer,
keywords character varying(128),
ip character varying(128),
title character varying(128),
content character varying(512),
source character varying(128),
category character varying(128),
sendedid character varying(50))
SERVER multicorn_es OPTIONS (host '127.0.0.1', port '9222', node 'alerts_es', index 'alerts_es');
# 4.创建触发器
CREATE OR REPLACE FUNCTION delete_alert() RETURNS trigger AS $def$
BEGIN
DELETE FROM alerts_es a WHERE a.id = OLD.id; RETURN OLD; END; $def$ LANGUAGE plpgsql;
查看外围表服务
select * from pg_foreign_server;
查看扩展
select name from pg_available_extensions;
查看触发器
SELECT * FROM pg_trigger;
查看外围表
select * from pg_foreign_table;
删除扩展
DROP EXTENSION EXTENSION_name;
删除服务
DROP SERVER foreign_server;
删除 外围表
DROP FOREIGN TABLE foreign_table;
删除 触发器
DROP TRIGGER triggername;