- _nosay
给docker博客环境装上coreseek扩展
2017-11-03 13:02:47
因为博客原来的搜索使用的是coreseek扩展的,犹记得当时装扩展的时候,可是费了一番功夫,当时就在想,唉呀,装这玩意真的是麻烦,下次如果换服务器的话,不免又要头疼了。
现在使用docker测试装了一下,体验相当不错,比原先安装方便多了,特此记录一下。
进入laradock目录,执行
git clone https://github.com/muzilong/CoreseekDocker.git sphinx
然后进入sphinx文件夹,建立csft.conf配置文件,下面是本博客的配置文件,仅供参考
#
# Minimal Sphinx configuration sample (clean, simple, functional)
#
source articles
{
type = mysql
sql_host = mysql
sql_user = #user
sql_pass = #pass
sql_db = #db
sql_port = 3306 # optional, default is 3306
sql_query_pre = SET NAMES utf8
sql_query = SELECT id,title from #table
sql_query_info = SELECT id FROM #table WHERE id=$id
}
source autoArticles
{
type = mysql
sql_host = mysql
sql_user = #user
sql_pass = #pass
sql_db = #db
sql_port = 3306 # optional, default is 3306
sql_query_pre = SET NAMES utf8
sql_query = SELECT id,title from #table
sql_query_info = SELECT id FROM #table WHERE id=$id
}
index articles
{
source = articles
path = /usr/local/coreseek/var/data/articles
charset_type = zh_cn.utf-8
charset_dictpath = /usr/local/mmseg3/etc/
}
index autoArticles
{
source = autoArticles
path = /usr/local/coreseek/var/data/autoArticles
charset_type = zh_cn.utf-8
charset_dictpath = /usr/local/mmseg3/etc/
}
indexer
{
mem_limit = 32M
}
searchd
{
listen = 9312
listen = 9306:mysql41
log = /usr/local/coreseek/var/log/searchd.log
query_log = /usr/local/coreseek/var/log/query.log
read_timeout = 5
max_children = 30
pid_file = /usr/local/coreseek/var/log/searchd.pid
max_matches = 1000
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads # for RT to work
}然后编辑Dockerfile文件,代码如下
# Author: Huijie Wei FROM ubuntu:14.04.2 MAINTAINER Huijie Wei huijiewei@outlook.com ADD ./assets/sources.list /etc/apt/sources.list RUN apt-get update RUN apt-get upgrade -y RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \ make \ gcc \ g++ \ automake \ libtool \ mysql-client \ libmysqlclient15-dev \ libxml2-dev \ libexpat1-dev \ git RUN mkdir -p /usr/src/coreseek/ RUN git clone https://github.com/huijiewei/Coreseek-Fix.git /usr/src/coreseek/ RUN chmod 777 -R /usr/src/coreseek WORKDIR /usr/src/coreseek/mmseg-3.2.14 RUN ./bootstrap RUN ./configure --prefix=/usr/local/mmseg3 RUN make && make install WORKDIR /usr/src/coreseek/csft-4.1 RUN sh buildconf.sh RUN ./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 RUN make && make install WORKDIR / ADD ./bin/index.sh / RUN chmod a+x index.sh ADD ./bin/searchd.sh / RUN chmod a+x searchd.sh ADD ./bin/run.sh / RUN chmod a+x run.sh && cp run.sh /usr/local/bin ADD csft.conf /opt/coreseek/sphinx.conf CMD ["sh","run.sh"] EXPOSE 9312
最后编辑docker-compose.yml文件,添加sphinx支持,添加内容如下
### Sphinx Console Container ############################
sphinx:
build: ./sphinx
ports:
- "9312:9312"
volumes:
- ${DATA_SAVE_PATH}/sphinx:/usr/local/coreseek/var/data
depends_on:
- mysql
links:
- mysql
networks:
- backend配置完毕后,尝试执行
docker-compose up -d sphinx
使用 docker-compose ps,发现报错了,报错信息为
Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev (r2922)] Copyright (c) 2007-2011, Beijing Choice Software Technologies Inc (http://www.coreseek.com) precaching index 'articles' [Fri Nov 3 03:56:48.964 2017] [ 9] WARNING: index 'articles': preload: failed to open /usr/local/coreseek/var/data/articles.sph: No such file or directory; NOT SERVING precaching index 'autoArticles' [Fri Nov 3 03:56:48.964 2017] [ 9] WARNING: index 'autoArticles': preload: failed to open /usr/local/coreseek/var/data/autoArticles.sph: No such file or directory; NOT SERVING [Fri Nov 3 03:56:48.964 2017] [ 9] FATAL: no valid indexes to serve
查看了一下错误原因,是因为连接不到数据库。解决方法
docker-compose down docker-compose -d nginx mysql redis docker-compose -d sphinx
首次启动的话,这样就可以了,暂时不知道什么原因,特备忘一下。记得在程序中连接sphinx,host要使用sphinx而非127.0.0.1或localhost