Linux Meilisearch轻量级搜索安装配置详解

作者:技术拾光时间:2026-06-02 06:58:01浏览:574

在 Linux 服务器上部署 MeiliSearch,选择二进制安装方式往往比 Docker 方案更直接、更可控,尤其是在需要精细管理持久化数据、配置外网访问或集成 systemd 服务时。不过,直接运行 meilisearch 命令有个默认设定:它只监听 127.0.0.1:7700。如果就这么直

在 Linux 服务器上部署 MeiliSearch,选择二进制安装方式往往比 Docker 方案更直接、更可控,尤其是在需要精细管理持久化数据、配置外网访问或集成 systemd 服务时。不过,直接运行 meilisearch 命令有个默认设定:它只监听 127.0.0.1:7700。如果就这么直接暴露在公网上,还不配置主密钥,那无异于把数据库大门敞开,安全风险极高。

Linux Meilisearch轻量级搜索安装配置详解

最省事的二进制安装方法是执行 curl -L https://install.meilisearch.com | sh,脚本会自动适配系统架构并将程序安装到 /usr/local/bin/meilisearch。而在生产环境启动时,有三个参数必须显式指定:--http-addr 0.0.0.0:7700、--master-key 和 --db-path,缺一不可。

用官方脚本一键安装二进制文件

对于绝大多数 x86_64 或 aarch64 架构的服务器,这是最快捷、兼容性最好的安装方式。

  • 直接运行命令:curl -L https://install.meilisearch.com | sh。这个脚本会自动检测 CPU 架构,下载对应的最新版二进制文件,并放置到 /usr/local/bin/meilisearch 目录下。
  • 安装完成后,可以通过 meilisearch --version 来验证,如果输出类似 meilisearch 1.29.0 的版本号,就说明安装成功了。
  • 这里有个细节需要注意:默认命令没有加 sudo。如果执行时提示权限错误,多半是当前用户没有写入 /usr/local/bin 目录的权限。这时,在前面加上 sudo 再执行即可:sudo curl -L https://install.meilisearch.com | sh。
  • 另外,安装好的二进制文件不建议手动改名(比如改成 ms),否则后续配置 systemd 服务或调用脚本时,很容易因为找不到命令而出错。

启动前必须配好的三个关键参数

临时运行 meilisearch 命令只能用于本地测试。要想在生产环境稳定使用,下面这三个参数必须在启动时明确给出,否则服务要么无法访问,要么毫无安全性可言。

  • --http-addr 0.0.0.0:7700:如果不加这个参数,服务默认会绑定在 127.0.0.1 上。结果就是,外部机器根本无法连接,你会遇到经典的“Connection refused”错误。
  • --master-key "YourSecureKey123!":这个参数是安全防线。如果不设置主密钥,整个 API 接口将完全开放,任何人都可以随意删除数据、导出索引。密钥的强度很重要,建议至少 16 位,并混合使用大小写字母、数字和特殊符号。
  • --db-path /var/lib/meilisearch:这是数据的“家”。如果不指定路径,数据要么存在内存里,要么放在临时目录,一旦服务重启,所有索引就会消失得无影无踪,查询索引列表只会返回一个空数组。
  • 一个推荐的生产环境启动命令组合是这样的:meilisearch --http-addr 0.0.0.0:7700 --master-key "MyKey@2026" --db-path /var/lib/meilisearch --env production。

用 systemd 管理服务并开机自启

手动在终端里运行进程,一来容易中断,二来不方便管理。在 Linux 生产环境中,使用 systemd 来托管服务才是标准做法。

  • 首先,创建好数据和日志的存放目录:sudo mkdir -p /var/lib/meilisearch /var/log/meilisearch。创建后,记得确保运行 MeiliSearch 的用户对这些目录有写入权限,例如执行:sudo chown $USER:$USER /var/lib/meilisearch /var/log/meilisearch。
  • 接下来,创建 systemd 服务文件:sudo vim /etc/systemd/system/meilisearch.service。文件内容中,ExecStart 这一行至关重要,必须完整包含前面提到的三个核心参数,可以参考下面的格式:
    ExecStart=/usr/local/bin/meilisearch --http-addr 0.0.0.0:7700 --master-key "MyKey@2026" --db-path /var/lib/meilisearch --env production --log-level INFO
  • 文件保存后,依次执行命令来启用并启动服务:sudo systemctl daemon-reload && sudo systemctl enable meilisearch && sudo systemctl start meilisearch。
  • 最后,检查服务状态:sudo systemctl status meilisearch。重点关注输出中是否有“active (running)”字样,以及日志末尾是否包含“Server listening on”这样的成功监听信息。

配置防火墙放行 7700 端口

即使 MeiliSearch 已经绑定了 0.0.0.0,服务器本身的防火墙(比如 ufw 或 firewalld)仍然可能将外网的请求拦截在外。

  • 在 Ubuntu 或 Debian 系统上,通常使用 ufw。执行 sudo ufw allow 7700 放行端口,然后用 sudo ufw status 确认规则已经生效。
  • 在 CentOS、Rocky Linux 等使用 firewalld 的系统上,命令是:sudo firewall-cmd --permanent --add-port=7700/tcp && sudo firewall-cmd --reload。
  • 如果你使用的是阿里云、腾讯云等云服务商的服务器,别忘了还有一层“安全组”规则。必须在云平台的控制台里,为安全组单独添加一条允许 7700 端口的入站规则,只配置系统防火墙是没用的。
  • 完成所有配置后,最终的验证步骤不能少:从外网尝试连接 curl -v http://你的公网IP:7700。只有当返回正常的 JSON 数据,且 HTTP 状态码为 200 时,才说明整个通路真正打通了。

在实际部署中,最容易出问题的环节往往有两个:一是忘了设置主密钥,导致 API 门户大开;二是配置了服务却没放行防火墙,导致请求根本到不了。所以说,--master-key 和 --http-addr 这两个参数,任何一个都不能跳过。漏掉一个,你的 MeiliSearch 服务就谈不上真正“上线”。