生产环境运行 Meilisearch
在 Digital Ocean 云服务器上部署 Meilisearch。涵盖安装、服务器配置和实例安全防护。
本教程将指导您如何设置一个生产环境就绪的 Meilisearch 实例。以下说明使用运行 Debian 的 DigitalOcean 服务器,但也适用于任何运行 Linux 发行版的托管服务。
Meilisearch Cloud 是在生产环境中运行 Meilisearch 的推荐方式。
系统要求
- 运行 Debian 12 的 DigitalOcean 服务器
- 用于连接该机器的 SSH 密钥对
DigitalOcean 提供了详细的文档说明如何使用 SSH 连接服务器。
第一步:安装 Meilisearch
通过 SSH 登录您的服务器,更新可用软件包列表,并安装 curl
:
在生产环境中使用最新版本的软件包是良好的安全实践。
接下来,使用 curl
下载并运行 Meilisearch 命令行安装程序:
Meilisearch 安装程序是一组脚本,确保您将获得适合您系统的正确二进制文件。
接下来,您需要使二进制文件在系统的任何位置都可访问。将二进制文件移动到 /usr/local/bin
:
现在 Meilisearch 已安装在您的系统中,但尚未公开可访问。
第二步:创建系统用户
以 root 身份运行应用程序会带来不必要的安全风险。为防止这种情况,为 Meilisearch 创建一个专用用户:
然后为新用户授予 Meilisearch 二进制文件的所有权:
步骤 3:创建配置文件
在安装 Meilisearch 并完成数据安全保护的第一步后,您需要设置一个基础配置文件。
首先,创建 Meilisearch 用于存储数据的目录:
本教程中,您将在 Droplet 的本地磁盘上创建这些目录。如果使用额外的块存储设备,请在该设备上创建这些目录。
接下来,下载默认配置文件到 /etc
目录:
最后,更新 meilisearch.toml
文件中的以下行,使 Meilisearch 使用您之前创建的目录来存储数据,并将 MASTER_KEY
替换为一个 16 字节的字符串:
请记住选择一个安全的 master key,并避免将其暴露在公开可访问的位置。
至此,您已完成 Meilisearch 实例的配置。
步骤 4:将 Meilisearch 作为服务运行
在 Linux 环境中,服务是一种可以在操作系统启动时启动并在后台持续运行的进程。如果程序因任何原因停止运行,Linux 会立即重启该服务,有助于减少停机时间。
4.1. 创建服务文件
服务文件是告诉操作系统如何运行程序的文本文件。
运行以下命令在 /etc/systemd/system
目录下创建服务文件:
4.2. 启用并启动服务
服务文件准备就绪后,使用 systemctl
激活服务:
systemctl enable
命令告诉操作系统在每次启动时自动运行该服务。systemctl start
则立即启动 Meilisearch 服务。
通过检查服务状态确认一切正常运行:
您应该会看到确认服务正在运行的消息:
步骤 5:安全加固并完成设置
此时,Meilisearch 已安装并运行。它还受到保护,可以避免意外崩溃和系统重启的影响。
下一步是使您的实例可以公开访问。
5.1. 使用 Nginx 创建反向代理
反向代理是一种处理外部世界与应用程序之间所有通信的应用程序。在本教程中,您将使用 Nginx 作为反向代理来接收外部 HTTP 请求并将其重定向到 Meilisearch。
首先,在您的机器上安装 Nginx:
接着,删除默认的配置文件:
Nginx 附带了一组默认设置(例如其默认的 HTTP 端口),这些设置可能会与 Meilisearch 产生冲突。
创建一个新的配置文件来指定反向代理设置:
最后,启用 Nginx 服务:
现在您的 Meilisearch 实例已可公开访问。
5.2. 启用 HTTPS
目前唯一剩下的问题是 Meilisearch 仅通过 HTTP 处理请求,没有任何额外的安全措施。这是一个严重的安全漏洞,可能导致攻击者访问您的数据。
本教程假设您已拥有一个注册域名,并且已正确配置其 DNS 的 A 记录
指向您的 DigitalOcean droplet 的 IP 地址。更多信息请参阅 DigitalOcean DNS 文档。
使用 certbot 在您的服务器上配置启用 HTTPS。
首先,在系统上安装所需软件包:
接着运行 certbot:
输入您的电子邮件地址,同意服务条款,并选择您的域名。当询问是否要自动重定向 HTTP 流量时,选择选项 2: Redirect
。
Certbot 将完成 Nginx 的配置。完成后,所有到您服务器的流量都将使用 HTTPS,您已完成 Meilisearch 实例的安全加固。
您的安全证书需要每 90 天续订一次。Certbot 会自动安排续订。运行以下测试命令验证该流程是否已就位:
如果该命令没有返回错误,则表示您已成功在 Nginx 服务器上启用了 HTTPS。
总结
您已完成了提供安全稳定服务的主要步骤。得益于反向代理、HTTPS 和 Meilisearch 内置安全密钥的组合,您的 Meilisearch 实例现在已在一个安全且可公开访问的环境中运行。