
直接用 curl -L https://install.meilisearch.com | sh 装完就跑,是最稳的入门路径;但若要上生产,必须配 master_key、持久化路径和 systemd 服务,否则重启丢数据、API 无鉴权、进程一挂就断。
二进制安装后不加配置就运行,会遇到什么问题
默认启动时用的是 env="development" 和内存临时数据库,没有 master_key,所有 API 都裸奔;http_addr 默认绑 127.0.0.1:7700,外网根本连不上;进程退出后数据全丢——因为没指定 db_path,它写在当前目录下,下次重跑就清空。
常见错误现象:
curl http://your-server-ip:7700 返回 Connection refused加了文档却搜不到,curl http://localhost:7700/indexes/myindex/search?q=test 返回空数组服务器重启后 meilisearch 进程没了,手动再跑又得重导数据
实操建议:
先建好配置文件:curl https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml > /etc/meilisearch.toml编辑该文件,至少改三项:master_key = "your-secure-key-here"、http_addr = "0.0.0.0:7700"、db_path = "/var/lib/meilisearch/data"确保 /var/lib/meilisearch 目录存在且可写:sudo mkdir -p /var/lib/meilisearch && sudo chown $USER:$USER /var/lib/meilisearch
Docker 启动 MeiliSearch 容器时 -v 挂载路径不一致导致数据丢失
很多人复制命令时只改了主机路径,忘了同步容器内路径。比如用 -v /home/test/meilisearch/data:/data.ms,但新版 MeiliSearch 默认读取的是 /data.ms,而旧版或某些镜像可能期望是 /meili_data ——路径不匹配,数据就写进容器临时层,删容器即丢。
参数差异:
getmeili/meilisearch:latest(官方镜像):默认使用 /data.ms 作为数据根目录部分自建镜像或老教程里的 -v /path:/meili_data 是错的,除非你显式传了 –db-path /meili_datadump_dir 和 snapshot_dir 不挂载也行,但 db_path 必须挂载,否则不是“持久化”,只是“假装持久化”
实操建议:
统一用官方推荐路径:docker run -d –name meilisearch -p 7700:7700 -v /var/lib/meilisearch/data:/data.ms getmeili/meilisearch:latest验证是否生效:进容器 docker exec -it meilisearch ls /data.ms,应能看到 database.db 等文件别信“自动创建目录”,docker run 不会帮你递归创建宿主机路径,/var/lib/meilisearch/data 得提前 mkdir -p
systemd 服务配置里 WorkingDirectory 和 ExecStart 路径写错,启动失败
很多教程抄来抄去,把 WorkingDirectory 写成 /usr/local/bin,但 ExecStart=/usr/local/bin/meilisearch 启动时仍会尝试在工作目录下找 config.toml 或写 db_path 相对路径,结果权限报错或数据写歪。
容易踩的坑:
WorkingDirectory 设为 /var/lib/meilisearch,但 db_path 在配置里写的是 ./data → 实际路径变成 /var/lib/meilisearch/./data,和预期不符ExecStart 没带 –config-file-path 参数,服务就按默认路径找配置,找不到就静默失败没设 User 字段,以 root 启动,后续挂载卷权限混乱
实操建议:
service 文件中明确指定配置路径:ExecStart=/usr/local/bin/meilisearch –config-file-path /etc/meilisearch.tomlWorkingDirectory 可省略,或设为 /tmp 这类无状态目录,避免干扰加上 User=meilisearch(需提前创建用户),并确保该用户对 /var/lib/meilisearch 有读写权
最常被忽略的一点:无论二进制还是 Docker,master_key 一旦设了,所有写操作(如 POST /indexes/myindex/documents)都必须带 X-Meili-API-Key 请求头,否则 401;但很多人配完就忘,查日志只看到 401,却没翻配置确认 key 是否生效。

评论(0)