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

最省事的二进制安装方法是执行
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 https://你的公网IP:7700。只有当返回正常的JSON数据,且HTTP状态码为200时,才说明整个通路真正打通了。
在实际部署中,最容易出问题的环节往往有两个:一是忘了设置主密钥,导致API门户大开;二是配置了服务却没放行防火墙,导致请求根本到不了。所以说,--master-key和--http-addr这两个参数,任何一个都不能跳过。漏掉一个,你的MeiliSearch服务就谈不上真正“上线”。
