Spinx环境搭建

前言

之前存了很多文本数据 - 具体是啥就不说了

很早之前就想对其内容进行检索了,自己写一个又觉得太麻烦,而且效率估计还低下。

百度搜了下又ELK和Spinx这2个方案,都测试了下,ELK太大了,感觉要花费好多时间去了解,Spinx暂时应该能满足我的需求了。

加上最近觉得自己挺久没写博客了,将这次搭建Spinx文本检索环境的过程记录下来。

环境搭建

1.从官网下载sphinx-3.1.1,我使用的是这个版本。

2.将etc目录下的sphinx-min.conf.dist配置文件复制到Bin下面,命名为sphinx.conf。

3.配置如下,该配置支持中文。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
source src1
{
type = mysql

sql_host = localhost
sql_user = root
sql_pass = root
sql_db = sheg
sql_port = 3306 # optional, default is 3306
sql_query_pre = set charset utf8
sql_query = \
SELECT id, mail, name, idcard, passwd, phone, mail2 \
FROM `12306`
sql_attr_uint = group_id
sql_attr_timestamp = date_added
}


index sk12306
{
source = src1
path = F:\sk\sphinx-3.1.1\data\sk12306\
# 设置中文匹配
min_word_len = 1
# 指定字符集(已废弃)
charset_type = utf-8
# 指定utf-8的编码表
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
min_prefix_len = 0
min_infix_len = 3
# 开启中文分词支持
ngram_len = 1
# 需要分词的字符
ngram_chars = U+3000..U+2FA1F
}


index rt
{
type = rt
rt_mem_limit = 128M
path = F:\sk\sphinx-3.1.1\data\testrt\
rt_field = name
rt_field = idcard
rt_field = mail
rt_field = passwd
rt_field = mail_2
rt_field = phone
rt_attr_uint = gid
}


indexer
{
mem_limit = 128M
}


searchd
{
listen = 9312
listen = 9306:mysql41
log = F:\sk\sphinx-3.1.1\log\searchd.log
query_log = F:\sk\sphinx-3.1.1\log\query.log
read_timeout = 5
max_children = 30
pid_file = F:\sk\sphinx-3.1.1\log\searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads # for RT to work
binlog_path = F:\sk\sphinx-3.1.1\log
}

查询指定列 idcard: @idcard xxxxxxx
模糊查询 352225*
中文默认模糊查询

4.将某库代码放到PHP下运行就可以了。

那么问题了,先整理数据还是把某库修改成适合我的文本查询器呢。

记一次PHPstudy无法正常启动

C盘满了,把PHPStudy换到D盘,结果启动不了。。

由于我之前比较谨慎,一直用的非服务模式,也就是没有系统服务,那么唯一的可能就是配置文件写了绝对路径了。

打开 php下的php.ini 修改 extension_dir属性
打开 apache下的httpd.conf 修改 ServerRoot 和 DocumentRoot 属性
打开 mysql下的my.ini 修改 basedir 和 datadir

重新打开,搞定收工!。

搭建CTFD平台

安装Flask

1
pip install Flask

下载安装CTFD

1
2
3
4
5
git clone https://github.com/isislab/CTFd.git
cd CTFd
./prepare.sh #需手动排查各种依赖包
需先安装 libicu-dev包 apt-get install libicu-dev
python serve.py

优化CTFD

1
2
pip install gunicorn
gunicorn --bind 0.0.0.0:8000 -w 4 "CTFd:create_app()"

Docker的基本使用

Docker常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
docker ps   #  docker进程管理系统

-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。

docker run

-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
-m :设置容器使用内存最大值;

docker start :启动一个或多个已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器

docker kill : 强行关闭一个容器

docker rm :删除一个或多少容器

docker rmi :删除一个或多少镜像

docker images :查看所有镜像


docker save lnmp -o lnmp.tar
docker load -i lnmpp.tar

以上方法用于保存整个docekr

docker export [OPTIONS] CONTAINER # -o :将输入内容写到文件。
docker import my_ubuntu_v3.tar runoob/ubuntu:v4


docker build -t runoob/ubuntu:v1 .

docker tag 打标签

Debian安装docker

1.更新源

1
apt-get update

这里使用的是163的源

2.安装工具

1
apt-get install      apt-transport-https      ca-certificates      curl      gnupg2      software-properties-common

3.下载添加GPG

1
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -

4.添加仓库

1
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

5.更新源

1
apt-get update

6.安装docker

1
apt-get install docker-ce

安装Arch操作系统并进行简单配置


注: 关于下载操作系统包以及制作系统盘这些操作请到百度搜索相关教程

1. 准备工作

启动系统进入安装界面

确保计算机有网络,wifi或者DHCP都可以,拨号上网我没试过

wifi使用方法:执行wifi-menu,后面的操作自己体会

DHCP使用方法:开启服务运行 dhcpcd 即可

查看磁盘格式,有GPT和MBR这2种格式,我尝试过GPT,但是失败了,所以我这边只介绍关于MBR格式磁盘的安装

Hexo搭建Blog环境过程记录

1.安装nodejs环境

1
2
3
apt-get install curl python-software-properties
curl -sL https://deb.nodesource.com/setup_8.x | bash -
apt-get install nodejs npm

2.安装配置hexo

1
2
npm install -g hexo
hexo init #在你想要的目录下

3.nginx配置80端口指向到hexo下的public

Git基本操作

安装git

1
apt-get install git

1.创建一个git仓库过程

1
2
3
4
git init --bare note.git  #创建仓库
add user #添加用户
vi /etc/passwd 改/bash/shell ==> /usr/bin/git-shell
chown -R git:git note

2.使用git仓库

1
2
3
4
5
6
7
8
9
10
11
12
git clone git@heiyiren.top:/var/www/git.git
git add readme.txt
git commit -m "add a readfile"
#完成一次修改
git diff readme.txt #比较
git log #查看提交记录
git reset --hard HEAD(^xx) #回退xx个版本
git reflog #比较久的回退
git reset --hard commitid #回退到某个版本
git reset HEAD readme.txt #撤回暂存区文件
git checkout --readme.txt #返回版本库,若存在暂存区则回退暂存区内容
git rm readme.txt #删除文件

Shadowsocks服务搭建

在vultr上面买一个服务器,装的是debian9系统(现已更换服务商,换了个香港的爽歪歪)

开始

用Xshell 连接后先进行 apt-get update 更新下软件源

使用 apt-get install python-pip 命令安装pip

pip install shadowsocks 安装shadowsocks

nano /etc/socks.json 填写以下内容

1
2
3
4
5
6
7
8
9
10
11
{
"port_password": {
"1024": "password",
"1025": "password",
"1026": "password",
"1027": "password",
"1028": "password",
"1029": "password"
},
"method":"aes-256-cfb"
}

搭建SVN服务器

安装svn并创建项目

1
2
apt-get install subversion
svnadmin create projec

配置

修改目录conf下的svnserve.conf等文件,具体配置可以参考文件的注释

不同的是 要添加

1
2
[/]
@组名 = rw 来再给根目录添加一下读写权限

之后运行 svnserve -d -r 项目目录(上面创建的) 来启动服务,若要运行多个SVN 项目管理,则可以 使用项目目录的上级目录来创建服务