在生产环境中运行 Meilisearch
在 DigitalOcean Droplet 中部署 Meilisearch。涵盖安装、服务器配置和实例安全。
本教程将指导您设置一个可用于生产环境的 Meilisearch 实例。这些说明使用运行 Debian 的 DigitalOcean Droplet,但也应兼容任何运行 Linux 发行版的托管服务。
Meilisearch Cloud 是在生产环境中运行 Meilisearch 的推荐方式。
要求
- 运行 Debian 12 的 DigitalOcean Droplet
- 用于连接到该机器的 SSH 密钥对
DigitalOcean 提供了详细文档,说明 如何使用 SSH 连接到 Droplet。
步骤 1:安装 Meilisearch
通过 SSH 登录您的服务器,更新可用软件包列表,并安装 curl
使用最新版本的软件包是良好的安全实践,尤其是在生产环境中。
接下来,使用 curl
下载并运行 Meilisearch 命令行安装程序
Meilisearch 安装程序是一组脚本,可确保您获得适用于您系统的正确二进制文件。
接下来,您需要让二进制文件在您的系统中随处可访问。将二进制文件移动到 /usr/local/bin
Meilisearch 现已安装在您的系统中,但尚未公开访问。
步骤 2:创建系统用户
以 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 已安装并正在运行。它也受到保护,可防止最终的崩溃和系统重启。
下一步是让您的实例可公开访问。
如果您发送给 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 实例现已在安全且可公开访问的环境中运行。