sphinx+mysql搭建社工库

凡是杀不死你的,都会使你更强大!

0x00 前言

sphinx是什么

Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。
官方语言就是难懂,简单来说就是为你数据库中的表建立索引,然后查询的时候就是按照索引查找,数据更新了怎么办,当然是重建索引咯,其实还可以让它定时自动更新。

我个人在搭建过程中遇到的问题

我一开始使用的是findmima网的教程,各种报错,在此过程中我还去找了岚光的教程,发现findmima网的是参考他的,但是findmima网的详细一些。我遇到的问题主要是以下几点(他喵的,谷歌百度了好久好久,我还是太菜)

  1. 安装php扩展失败,编译环境是好了,但是因为需要安装php还有扩展(然而这扩展并没有什么luan用)
  2. php版本问题:我数据建立好之后,index.php这个文件打开不显示任何东西,我估摸着php.ini显示错误那个功能没打开,好了之后,报一个错,意思就是没这个语法,报错点$table=['wing','secwing'];,我一开始怀疑语法有问题,问了keykey说:没这种语法,你是不是python学多了。后面另外一个表哥说:php新版本支持这种,还本地var_dump给我看了一下,果真可以,然后安装了php5.6,不报错了。
  3. 下面就是测试搜索本地索引的时候报了一个错,FATAL: sql_query_info: mysql_query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE ID=1' at line 1,我给我导师看,他说可能是mysql版本或者语法的问题,于是乎,我就去安mysql5.7,百度了一下,很麻烦,还要安装一个什么.so文件,我就去下载了一下,发现官网好麻烦,云盘搜了一下也没有,就csdn一大堆,csdn是真的坑,下什么都要积分。下完之后,建立软链接就可以启动mysql了,还好数据库里面的数据都没变。下面再来尝试一波,tm还是报这个错,我突然意识到–这和mysql版本压根没有啥太大关系,那就是语法错误。
  4. 别人的代码真的坑,就上面个问题我昨天还发到吐司去,因为比较无奈了,然后search 去搜索本地索引的时候,调用的是一个配置文件,形如xxoo.conf,下面会介绍。里面有这么一句,select * where id =$id,这语句肯定是错的咩,我怀疑过它的,但是删了它之后,不影响报错,但其实就是它的问题,原来服务没重启,改成了select * from spdb1 where id = $id,重启服务,本地搜索索引,没报错。然后赶紧搜索一波,emmmm!
    sphinx
  5. 内心崩溃了,既然前面都没有问题,那就看看index.php这个文件,导师让我php动态调试一波,心想:xdebug这玩意还没学会,这我哪会。只好再看看代码,又看了好久好久,还是没看出哪儿不对,不管了,先睡一觉。
  6. 睡醒后,还是好困,继续睡,清醒完我想了一下逻辑,sphinx弄的9312端口是放索引的,我查询数据是按照索引来查询,数据查询不到,那就是索引的问题,但是索引我已经搞定了,那就是TMD端口的问题,把9312端口换一下,不知道是不是这个端口肾虚还是咋滴,换成9000,重启Apache服务,终于出现了,我想要的画面。
    wing

    ———————————–一条么么哒的分割线———————————–

    具体搭建步骤

    为了帮忙节约大家的csdn积分,我将需要的东西放到了gayhub上
    下载地址
    下载coreseekmmseg.so那个文件可以下可以不下,因为用centos默认的就行,我后面是因为司马当活马医了。
    环境准备
  • centos6.6
  • php5.6
  • mysql5.0以上版本
  • coreseek4.0版本和mmseg

    安装步骤

  • 安装支持库,编译用的。

      yum install -y make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel php-devel
    
  • 先升级php版本,自己用命令查看版本是否大于5.3。

  • cd /opt 在这个目录下把coreseek和mmseg3文件下载下来,解压。
  • 先安装mmseg3,没记错是中文分词库

      cd coreseek-4.1-beta/mmseg-3.2.14
      ./bootstrap   
      ./configure --prefix=/usr/local/mmseg3  
      make && make install
    
  • 安装coreseek

      cd /opt/coreseek-4.1-beta/csft-4.1
      sh buildconf.sh  
      ./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql 
      make && make install 
    
  • 然后那啥php的sphinx扩展建议别安,能提升速度,但是会报错,我这里会…..
    coreseek安装在/usr/local/coreseek,里面的etc目录下看有没有一个.conf结尾的文件,用这个文件替换掉,把其余的三个文件
    bootstrap.min.css
    index.php
    sphinxapi.php
    放到/var/www/html/目录下。里面的配置文件自己修改。
  • 进入mysql数据库,使用test数据库,然后新建五个表spdb2,spdb2,spdb3,spdb4,spdb5

      CREATE TABLE IF NOT EXISTS `spdb1` (
      `id` int(9) unsigned NOT NULL AUTO_INCREMENT,
      `username` varchar(50) NULL DEFAULT '',
      `email` varchar(50) NULL DEFAULT '',
      `password` varchar(50) NULL DEFAULT '',
      `salt` varchar(30) NULL DEFAULT '',
      `site` varchar(20) NULL DEFAULT '',
      PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    

往这几个表插入一些数据

    insert into spdb1(id,username,email,password,salt,site)values(1,"wing","secwing",12345,1231,1234567);

五个表建立好,数据插入成功之后,就是建立索引。
启动search服务

    /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf 启动search服务

生成索引

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all --rotate 生成所有索引

ps:过程中如果出现error或者fatal,那就是有问题的。
本地搜索索引

    /usr/local/coreseek/bin/search 123456                                     //本机搜索

会回显出相关的数据的。
下面是几个常用命令

rm -rf /usr/local/coreseek/var/data/*.*      //删除索引
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all --rotate 生成所有索引
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf 启动search服务
/usr/local/coreseek/bin/searchd --status                                    //查看状态
/usr/local/coreseek/bin/search 123456                                     //本机搜索
rm -rf /var/lock/subsys/mysqld                                          //Mysql易锁,删除锁定文件    

--rotate这个参数是在search服务开着的情况下使用,关闭的情况下使用会报错。

    单独生成每个表的索引
    /usr/local/coreseek/bin/indexer spdb1 -c /usr/local/coreseek/etc/csft.conf --rotate 
    /usr/local/coreseek/bin/indexer spdb2 -c /usr/local/coreseek/etc/csft.conf --rotate  
    更新增量索引
    /usr/local/coreseek/bin/indexer delta -c /usr/local/coreseek/etc/csft.conf --rotate
    合并2个表索引
    /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --merge spdb1 spdb2 --rotate --merge-dst-range deleted 0 0  

index.php这个文件修改一下配置即可。

搭建好之后,后面最麻烦的就是怎么处理数据的问题,各种裤子的格式也不一样,清洗起来不方便。要是列名特别多的裤子,就蛋疼了,如果不改前端,数据显示就会不完整。
还有很多问题等待发掘!问题越多或许你就会知道自己欠缺哪些东西,或许懂得的也越多!
有问题的表哥可以微博和我讨论哦!微博地址在博客左下角!

wing


   转载规则


《sphinx+mysql搭建社工库》 Wing 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
像我这样的人! 像我这样的人!
有没有这样一首歌,让你无限循环! 像我这样优秀的人本该灿烂过一生怎么二十多年到头来还在人海里浮沉像我这样聪明的人早就告别了单纯怎么还是用了一段情去换一身伤痕像我这样迷茫的人像我这样寻找的人像我这样碌碌无为的人你还见过多少人像我这样庸
2017-08-27 Wing
下一篇 
一款跨平台本地密码查看工具 一款跨平台本地密码查看工具
你或许喜欢法国大面包,那,你喜欢自带BGM的面包吗? 在得到服务器权限之后,如果想要获取本地的账号密码,有很多方法和工具,比如mimikatz(法国大面包),可获取管理员明文密码,但是LaZagne在我看来,它还是挺好玩的,它可以读
2017-08-20
  目录