2022年1月21日更新
痛下决心把服务器升级到了2g内存,elasticsearch服务还是启动失败,于是按照下面的方法重新安装了一遍之后服务倒是能够正常运行了。
几个扩展都开启,打开搜索之后报错,突然想起在官方文档中提到了如果使用git方式安装的话,需要执行composer install --no-dev
。
再次使用搜索,结果变成了“搜索时发生错误:由于出现暂时性的问题,我们未能完成您的搜索。请稍后再试。(An error has occurred while searching: We could not complete your search due to a temporary problem. Please try again later.)”。
原来在配置CirrusSearch扩展时还有几个重要的步骤,之前虽然执行了,但是没有记录于本文中,所以时间一长给忘了。
安装完所有扩展之后,在LocalSettings.php文件中加入:
wfLoadExtension( 'Elastica' );
wfLoadExtension( 'CirrusSearch' );
$wgDisableSearchUpdate = true;
然后通过终端,在CirrusSearch的扩展安装目录中,输入:
php UpdateSearchIndexConfig.php
运行完毕后,从LocalSettings.php文件中删除$wgDisableSearchUpdate = true;
,而后在终端中依次输入:
php ForceSearchIndex.php --skipLinks --indexOnSkip
php ForceSearchIndex.php --skipParse
重新回到搜索页面,错误消失了。
但是,中文分词的问题没解决,搜索功能还是稀烂。
参考文档:https://gerrit.wikimedia.org/g/mediawiki/extensions/CirrusSearch/%2B/HEAD/README
2022年1月19日更新
自打elasticsearch的中文分词搞失败后,就把CirrusSearch给删了,刚开始也没注意有啥问题,直到条目渐多,模板用的也比较多,然后发现搜索结果竟然没有展开模板,而是直白地显示出来了。
看来还是要把CirrusSearch请回来。
2021年2月16日更新
这两天用虚拟机重装了一遍MediaWiki,服务器配置跟阿里的一样,1核1g,安装elasticsearch服务竟然运行成功了,还没出现死机,CirrusSearch的维护代码运行下来也是一切顺利。
然后希望的火苗再一次被点燃了,既然本地虚拟机可以实现,那远程服务器凭啥就不行(心里打鼓)?
综合网上的几个问题贴,其中有一个提到删除/var/lib/elasticsearch/nodes/0/node.lock
文件后重新安装就OK了。而另外一个关于完全删除elasticsearch的帖子中提到了几个有关的目录,干脆也删了。
删完上面几个还是不放心,毕竟之前是安装了7.x后降版本重装的,或许还有其他残留,用find命令再搜了一遍
find / -name "elasticsearch"
删掉了所有该删的,重新安装,终于成功了。
最后记得改一下-Xms和-Xmx的内存大小,否则就我这简陋的配置会卡到怀疑人生。
参考文档
https://discuss.elastic.co/t/failed-to-start-elasticsearch-code-exited-status-1-failure/217898/10
https://discuss.elastic.co/t/uninstall-elsticsearch-on-centos/42864
2021年1月30日更新
服务器重装系统后,所有的配置工作都在逐渐恢复,但是一直没想到搜索插件,因为站点的内容太少,使用率不高。直到最近有人问起才重新捡起来,结果发现原文的内容存在很多问题误导了部分朋友,在这里说声对不起!
截至到目前,CirrusSearch的推荐安装版本为v6,v7版本因为默认不再支持指定索引类型而产生Root mapping definition has unsupported parameters:错误。
对于小内存(小于等于1G)的服务器可能造成服务无法启动的情况(v6版运行数秒后挂了)或因默认配置文件中-Xms和-Xmx的设置为1g造成服务超时(v7版)。
如果你不幸按照我之前的文章而导致无法使用CirrusSearch,请重新安装v6版本,具体方法如下:
一、卸载v7版本
如果你跟我之前一样用的是yum安装方式,那么直接
# yum remove elasticsearch
注意:卸载后记得要删除/etc/systemd/system/目录的elasticsearch.service,否则重装6.x版之后service的配置内容还是用的7.x版,然后导致服务启动出错。
二、修改RPM资源库
修改/etc/yum.repos.d/elasticsearch.repo文件,将原来的7.x改为6.x即可。
[elasticsearch]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
修改后运行
# yum clean all
注意:只有清空yum并重载才能正确安装6.x版本,否则会报错。
三、安装elasticsearch
# yum install -y elasticsearch-6.5.4
指定版本号为6.5.4,官方推荐版本见下面:
MediaWiki 1.29.x and 1.30.x require Elasticsearch 5.3.x or 5.4.x.
MediaWiki 1.31.x and 1.32.x require Elasticsearch 5.5.x or 5.6.x.
MediaWiki 1.33.x, 1.34.x and 1.35.x require Elasticsearch 6.5.x (6.5.4 recommended).
四、修改-Xms和-Xmx
# vim /etc/elasticsearch/jvm.options
默认-Xms和-Xmx为1g,可以根据自己需要修改。
五、启用服务
接下去就是把elasticsearch加入到服务中
# systemctl daemon-reload
# systemctl enable elasticsearch.service
运行一下服务(启动或停止)
# systemctl start elasticsearch.service
# systemctl stop elasticsearch.service
虽然能够启动,但是运行几秒之后就挂掉了。而v7.7以上版本的堆内存使用量显著降低,几乎提升了 7 倍 ,也就是为什么在原文中能够运行的原因。
原文
知乎上有朋友问我说,“mediawiki自带的搜索太烂了,请问怎么改善?”虽然我不太确定这个太烂指的是什么,不过官方倒是有款高级搜索器的插件,样子就如下图,有兴趣的也可以直接去维基上直接体验。
虽然就目前来说,我对搜索的要求还没那么高,毕竟条目太少,而且还全部都是我自己创建的条目。不过既然今天想到这个问题,不如就试着安装一下好了。
下载地址和安装说明都可以参考官网。虽说是英文的,但基本上我们也能看明白,在安装前必须有Extension:CirrusSearch的支持,而后面这个插件呢又需要用到Elasticsearch服务和另一个插件Elastica,真的是一环扣一环。
好了,安装顺序已经确定,Elasticsearch服务->Extension:Elastica->Extension:CirrusSearch->Extension:AdvancedSearch。
一、安装Elasticsearch
Elasticsearch的官网上有很详细的安装教程(包括CentOS)。基本上按照官方的指导,耐心点都能安装成功。以下是根据本人实际的系统CentOS7来介绍安装步骤。
1. 安装OpenJDK
在开始前,我们还有一件重要的事要做,就是先安装OpenJDK到我们的系统中。
sudo yum install java-1.8.0-openjdk.x86_64
执行后,检查一下安装的结果
java -version
返回结果如下:
Output of java -version
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)
2. 下载和安装Elasticsearch的公共签名密钥
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
3. 从RPM资源库中安装
在/etc/yum.repos.d/
目录下创建elasticsearch.repo
文件,输入如下代码:
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
elasticsearch的资源库就建好了,接下来的工作就更简单了,直接用yum命令安装。不过在安装前最好用Screen命令创建一个会话,毕竟安装包要好几百兆,而阿里云的下载速度极慢,预计要一个晚上的时间,所以为了避免中间有什么幺蛾子出现还是多增加一步。
screen -S Elastica
OK,现在可以开始安装了。
sudo yum install --enablerepo=elasticsearch elasticsearch
慢慢等吧,我先洗洗睡了,明天继续。
经过一个晚上,终于安装完毕。接下去就是把elasticsearch加入到服务中
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
运行一下服务(启动或停止)
sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service
运行过程没有任何提示,所以我们还需要再检验一下运行结果:
curl -X GET "localhost:9200/?pretty"
控制台将返回以下结果:
{
"name" : "iZ2362n1jwgZ",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "Zj17b7UmQXeqj8IhwUM_yA",
"version" : {
"number" : "7.8.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
"build_date" : "2020-06-14T19:35:50.234439Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
至此,elasticsearch就算是安装好了,如果你需要配置elasticsearch,用文本编辑器打开/etc/sysconfig/elasticsearch
(仅针对RPM安装方式)就可以了,具体见官网说明。
二、安装插件
MediaWiki的插件安装就简单多了,无非就是下载插件压缩包,解压后上传到插件目录然后再修改配置文件启用。
如果elasticsearch的安装没有任何问题,那么我们可以将三个插件Elastica、CirrusSearch和AdvancedSearch全部下载完后一起上传到服务器中,然后打开配置文件LocalSettings.php,在其中加入以下内容:
## 启用高级搜索
wfLoadExtension( 'Elastica' );//CirrusSearch必需
wfLoadExtension( 'CirrusSearch' );//AdvancedSearch必需
wfLoadExtension( 'AdvancedSearch' );
上传覆盖服务器中的配置文件,然后重新刷新服务器,试着搜索一下内容。
看上去果然高大上一点了。
参考文档:
Install Elasticsearch with RPM
2 条评论
/var/lib/elasticsearch 目录删除,安装6.8.23启动成功
但是elasticsearch占用好高,直接内存占用90+
Xms设置1g,实际占用5g。。。
难怪之前占用90%+