HestiaCP安装Meilisearch搜索引擎并对接 WordPress 完全教程

上周有美女,说她的WordPress网站搜索太慢了,中文搜个「教程」出来的结果乱七八糟,想让我帮忙搞搞。

我寻思这不简单吗,换个搜索引擎不就完了。Meilisearch,现在最火的开源搜索,中文分词强得离谱,性能也好,装上不就完事了?

结果。。。

我在他那个HestiaCP面板的服务器上折腾了整整一天。权限报错、服务起不来、502 Bad Gateway,经典的坑我一个没落下全踩了一遍。

说实话我也不确定一开始能不能搞成,但折腾完之后回头看,其实就那几个点,搞明白了就很简单。今天把这套方案掏出来,如果你也在用HestiaCP + WordPress,直接照着走就行。

WordPress搜索太难用,我决定换掉它

WordPress自带的搜索有多难用,用过的都知道。

就是那种你搜「AI教程」,它给你返回一堆包含「AI」或者「教程」的文章,但完全不相关。搜「HestiaCP安装」,出来一堆带「安装」两个字的无关内容。用户体验差到不行,每次搜索都像在抽奖。

HestiaCP安装Meilisearch搜索引擎并对接 WordPress 完全教程

Meilisearch完全不一样。这玩意支持中文分词,能理解你在搜什么,性能还贼好,毫秒级响应。关键是开源免费,自己部署,数据完全在手里。

但问题是,官方教程是通用的,HestiaCP这个面板有点特殊。权限管理严格,Nginx配置有自己的套路,直接照着官方文档搞,大概率会翻车。

我翻车了。

HestiaCP下安装Meilisearch踩坑实录

我第一次装的时候,直接用官方的一键脚本,curl一下就完事了。结果呢,服务死活起不来,报什么Permission denied。

我寻思不对啊,我用的root啊。后来发现是二进制文件下载下来之后没有执行权限,HestiaCP的环境跟标准的Debian有点不一样,路径权限也受限。

搞了半天,服务起来了,结果curl本地端口,502 Bad Gateway。

这块是个大坑。HestiaCP的Nginx配置有自己的管理方式,不是你手动改个配置文件就行的。你得用它的面板来管理,或者手动去调那些它生成的配置文件。我一开始没搞明白这个,来回折腾了好几轮。

最后彻底搞明白之后,我整理了一套方案,重头来一遍,十分钟搞定。

Meilisearch标准安装姿势(HestiaCP专用)

这块注意一下,我这个方案是专门针对HestiaCP的,跟官方教程不一样,但更稳。

首先更新一下系统依赖,这个没啥说的。

apt update && apt install curl wget -y

然后关键的一步,把之前可能存在的残留文件删掉。你之前如果装过,不管成功没成功,都有可能有权限异常的文件留着。别心软,直接删。

rm -f /usr/local/bin/meilisearch

这一步很多人会忽略,但我跟你说,这个就是502的根源之一。HestiaCP环境下,/usr/local/bin这个路径的权限有点玄学,删了重来最干净。

然后官方一键安装。

curl -L https://install.meilisearch.com | sh

装完之后,别急着启动,先把二进制文件挪到安全的地方。

mv meilisearch /usr/bin/
chmod +x /usr/bin/meilisearch

这一步很关键。/usr/bin是系统标准的可执行文件目录,权限管理更规范,不会出现那些奇奇怪怪的权限问题。

然后创建数据目录。

mkdir -p /var/lib/meilisearch

接下来配置systemd服务,让它开机自启。创建一个服务文件。

nano /etc/systemd/system/meilisearch.service

把下面这段配置粘进去。

[Unit]
Description=Meilisearch Search Engine
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/meilisearch \
    --env production \
    --http-addr 127.0.0.1:7700 \
    --db-path /var/lib/meilisearch \
    --master-key 1234567890123456

Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

注意几个点。http-addr绑定127.0.0.1:7700,意思是只监听本地,外网访问不了,这样最安全。master-key至少16位,你别用我这个示例的,自己搞一个复杂的。

保存退出之后,重载配置启动服务。

systemctl daemon-reload
systemctl enable meilisearch
systemctl restart meilisearch

然后测一下。

curl http://127.0.0.1:7700/health

如果返回{"status":"available"},恭喜你,搞定了。

我当时看到这个返回的时候,真的长舒一口气。折腾了一天,终于跑起来了。

WordPress对接Meilisearch配置方法

这步就简单了。进WP后台,装一个插件叫Scry Search。免费的,直接用。

装完进设置,填三个东西。

Meilisearch地址:http://127.0.0.1:7700

API密钥:就是你刚才设置的master-key。

索引名:给你的网站起个名字,比如「blog」。

然后点一下「开始全量索引」,等它跑完,前台搜索就自动接管了。不需要改主题代码,不需要动什么配置,装上就能用。

我当时测试了一下,搜「HestiaCP」,直接返回精确匹配的结果,搜「Meilisearch安装」,也是一样。中文分词准确得离谱,响应速度毫秒级。

这感觉太爽了。

同一服务器多个WordPress共用Meilisearch

这个要说一下,很多人可能有不止一个WordPress网站在同一台服务器上。

完全不用重复装Meilisearch。你已经装好的那个服务,所有同服务器的网站都能直接共用。

原理很简单,因为服务是绑定在127.0.0.1上的,本地通信,速度还更快。

你只需要在每个网站的插件配置里,地址和密钥填一样的,但索引名不一样就行。

比如第一个网站索引名叫「blog」,第二个叫「ufo」,第三个叫「shop」。每个网站有自己的索引,互不干扰,但共用同一个搜索服务。

就这么简单。

Meilisearch生产环境安全优化

有几个点要注意一下。

首先,master-key别用太简单的。16位以上,字母数字混合,别跟别人的一样。

其次,服务只监听127.0.0.1,外网根本访问不了。这一点很关键,很多人会忽略。你以为你藏得深,但端口暴露在外面就是风险。

第三,生产环境建议搞个只读的Search密钥给WP插件用,主密钥自己留着,避免泄露。

这几个点都做到了,安全性基本没问题。

HestiaCP安装Meilisearch常见报错解决方案

总结一下最常见的几个问题。

Permission denied

原因就是二进制文件权限不对,或者路径不对。解决方案就是我上面说的,删了重装到/usr/bin目录,chmod +x。

502 Bad Gateway

Meilisearch服务没跑起来,或者没监听本地端口。curl测一下本地端口就知道了。如果服务正常但还是502,可能是HestiaCP的Nginx配置问题,重建一下站点配置试试。

WordPress连不上服务

检查三点。地址是不是用的127.0.0.1,密钥对不对,服务状态是不是running。

基本上就这几个坑,搞明白了就很简单。

最后说点别的

说实话,我一直觉得搜索这个功能被低估了。

很多人花大价钱做网站、做内容,但搜索体验差得一塌糊涂。用户进来搜个东西,搜不到想要的,直接就走了。你内容再好,搜索不行,等于白搭。

Meilisearch这种工具,部署起来其实不难,但很多人被那些权限问题、配置问题吓退了。我这次折腾了一天,就是想把这个门槛彻底踏平,让后面的人能直接走通。

你想想,一个高性能的搜索引擎,开源免费,中文支持好,还安全。这种东西,以前想都不敢想。

现在开源生态越来越强了,很多以前需要花大钱买的服务,现在自己动手就能搞。这感觉真的挺好的。

如果你也在用HestiaCP + WordPress,被搜索问题困扰,试试这个方案吧。十分钟搞定,真的。

以上,既然看到这里了,如果觉得不错,随手点赞、转发吧,如果想第一时间收到推送,也可以给我个关注~

谢谢你看我的文章,我们,下次再见。

希望陈沩亮博客( https://www.chenweiliang.com/ ) 分享的《HestiaCP安装Meilisearch搜索引擎并对接 WordPress 完全教程》,对您有帮助。

欢迎分享本文链接:https://www.chenweiliang.com/cwl-34339.html

欲解锁更多隐藏秘技🔑,欢迎加入Telegram频道!

喜欢就分享和按赞!您的分享和按赞,是我们持续的动力!

 

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

文章目录
Scroll to Top