IF
IndexFlowing
/ Docs
🌐 English Docs GitHub ↗

生产环境部署

本指南介绍如何在生产 VPS 上部署 IndexFlow Documentation(docs.indexflowing.com)、IndexFlow Cloud Web Service(www.indexflowing.com)和 IndexFlow Core Engine(IndexFlow-core)。


架构概览

文档使用 mdBook 构建并作为静态网站提供服务。IndexFlow-core 和商业 Web 服务分别运行在 Axum 端口 8080 和 8000,通过 Cloudflare / Nginx 对外提供访问。


1. 部署文档网站(docs.indexflowing.com)

步骤 1:在构建服务器安装 mdBook

cargo install mdbook

步骤 2:编译文档

从 IndexFlow-cloud/docs 目录执行:

cd IndexFlow-cloud/docs
mdbook build

这会在 IndexFlow-cloud/docs/book/ 生成编译后的 HTML 资源。

步骤 3:Nginx 虚拟主机配置

创建 /etc/nginx/sites-available/docs.indexflowing.com,配置 HTTPS、静态根目录 /var/www/indexflow-docs/book 和 try_files $uri $uri/ =404。


2. 在 VPS 部署 IndexFlow-core

步骤 1:构建发布二进制文件

cd IndexFlow-core
cargo build --release
sudo cp target/release/indexflow-core /usr/local/bin/indexflow-core

步骤 2:配置系统用户与存储

sudo useradd -r -s /bin/false -d /var/lib/indexflow indexflow
sudo mkdir -p /var/lib/indexflow
sudo mkdir -p /etc/indexflow
sudo chown -R indexflow:indexflow /var/lib/indexflow

步骤 3:生产环境文件

创建 /etc/indexflow/indexflow.env,设置 SERVER_HOST、SERVER_PORT、DATABASE_URL、worker 间隔、JWT_SECRET、DRY_RUN=false 和 RUST_LOG。

步骤 4:Systemd 服务单元

创建 /etc/systemd/system/indexflow.service,以 indexflow 用户运行 /usr/local/bin/indexflow-core,并设置 ProtectSystem=strict、ProtectHome=true 和 ReadWritePaths=/var/lib/indexflow。

启用并启动:

sudo systemctl daemon-reload
sudo systemctl enable --now indexflow

3. 部署 IndexFlow-cloud 商业 Web 服务器(www.indexflowing.com)

步骤 1:构建二进制文件

cd IndexFlow-cloud
cargo build --release
sudo cp target/release/indexflowing-web /usr/local/bin/indexflowing-web

步骤 2:Systemd 单元配置

创建 /etc/systemd/system/indexflowing-web.service,以 www-data 用户运行 Web 服务,设置端口 8000。

启用并启动:

sudo systemctl daemon-reload
sudo systemctl enable --now indexflowing-web

4. Web 应用的 Nginx 反向代理

创建 /etc/nginx/sites-available/indexflowing.com,将 www.indexflowing.com 的请求代理到 http://127.0.0.1:8000,并保留 Upgrade、Host 和转发相关请求头。


5. SQLite 备份与维护

IndexFlow 以 WAL 模式运行 SQLite。无需停止服务即可创建在线备份:

# Atomic online backup using sqlite3 CLI
sqlite3 /var/lib/indexflow/indexflow.db ".backup '/backup/indexflow-$(date +%Y%m%d%H%M).db'"

添加到 cron 以执行每日自动备份:

0 2 * * * sqlite3 /var/lib/indexflow/indexflow.db ".backup '/backup/indexflow-$(date +\%Y\%m\%d).db'"