跳转到内容

CLI 命令

您可以使用 Paideia LMS 提供的命令行界面(CLI)来运行服务器、管理数据库迁移以及从终端窗口执行管理任务。

Paideia LMS 是一个双模式二进制文件,既可以作为 Web 服务器,也可以作为命令行界面。默认情况下,不带任何参数运行 paideia 会启动服务器。通过运行 paideia <command> 可以使用 CLI 命令。

启动服务器(默认行为):

终端窗口
# 启动服务器(默认行为)
paideia
# 或显式指定
paideia server

获取帮助:

终端窗口
# 显示帮助信息和可用命令
paideia help

终端将显示以下消息:

╔═══════════════════════════════════════════════════════╗
║ ║
║ ██████╗ █████╗ ██╗██████╗ ██████╗██╗ █████╗ ║
║ ██╔══██╗██╔══██╗██║██╔══██╗██╔═══╝██║██╔══██╗ ║
║ ██████╔╝███████║██║██║ ██║██████╗██║███████║ ║
║ ██╔═══╝ ██╔══██║██║██║ ██║██╔═══╝██║██╔══██║ ║
║ ██║ ██║ ██║██║██████╔╝██████╗██║██║ ██║ ║
║ ╚═╝ ╚═╝ ╚═╝╚═╝╚═════╝ ╚═════╝╚═╝╚═╝ ╚═╝ ║
║ ║
║ Learning Management System ║
║ ║
╚═══════════════════════════════════════════════════════╝
Paideia LMS - 0.5.5
Paideia CLI Commands
┌────────────────────────┬───────────────────────────────────────────────────────────────┐
│ Command │ Description │
├────────────────────────┼───────────────────────────────────────────────────────────────┤
│ paideia help │ Show help │
│ paideia server │ Start the Paideia server │
│ paideia migrate status │ Show migration status │
│ paideia migrate up │ Run pending migrations │
│ paideia migrate fresh │ Drop all database entities and re-run migrations from scratch │
│ paideia migrate dump │ Dump database to SQL file │
│ paideia sandbox reset │ Reset sandbox database (only when SANDBOX_MODE is enabled) │
└────────────────────────┴───────────────────────────────────────────────────────────────┘

启动 Paideia LMS Web 服务器。这是不带任何参数运行 paideia 时的默认行为。

终端窗口
# 启动服务器
paideia server
# 或简单运行(默认行为)
paideia

服务器将启动并监听配置的端口(默认:后端 3001,前端 3000)。服务器将一直运行,直到使用 Ctrl+C 停止。

显示 ASCII 徽标、介绍和可用命令。这提供了 Paideia LMS 功能和所有 CLI 命令的概述。

终端窗口
paideia help

显示 Paideia LMS 版本号。

终端窗口
paideia version

Paideia LMS 提供了一套全面的数据库迁移命令,用于管理数据库架构和执行管理任务。

显示所有数据库迁移的当前状态。这将显示哪些迁移已运行,哪些待处理。

终端窗口
paideia migrate status

输出示例:

Migration Name Status
────────────────────────────────────────
1234567890_initial_schema ✅ Applied
1234567891_add_users_table ✅ Applied
1234567892_add_courses_table ⏳ Pending

运行所有待处理的迁移。这将应用尚未执行的任何迁移。

终端窗口
paideia migrate up

使用场景:

  • 更新 Paideia LMS 后应用数据库架构更改
  • 在生产环境中运行新迁移
  • 拉取代码更改后更新数据库结构

删除所有数据库实体并从头重新运行所有迁移。这是一个破坏性操作,将删除所有数据和架构,然后重建所有内容。

终端窗口
# 全新迁移(将提示确认)
paideia migrate fresh
# 或使用强制标志跳过确认
paideia migrate fresh --force-accept-warning

使用场景:

  • 开发期间完全重置数据库
  • 从干净的数据库开始
  • 从头重建数据库

将整个数据库转储到 SQL 文件。这将创建数据库的备份,可以在以后恢复。

终端窗口
# 使用自动生成的文件名转储
paideia migrate dump
# 使用自定义文件名转储
paideia migrate dump -o my-backup.sql
# 或使用长格式
paideia migrate dump --output my-backup.sql

输出位置: 所有转储文件都保存到项目根目录的 paideia_data/ 目录中。如果目录不存在,将自动创建。

文件名格式: 如果未指定文件名,转储文件将命名为 paideia-dump-{timestamp}.sql

使用场景:

  • 在重大更改之前创建数据库备份
  • 导出数据库以迁移到另一台服务器
  • 创建灾难恢复备份
  • 通过 cron 作业或脚本自动备份

输出示例:

终端窗口
paideia migrate dump
# ✅ 数据库转储完成: paideia_data/paideia-dump-2025-11-02T10-30-45-123Z.sql

Paideia LMS 为开发和测试环境提供沙盒管理命令。

SANDBOX_MODE 启用时,手动重置沙盒数据库。此命令删除所有用户数据(学生、课程等),同时保留系统表(作业日志、迁移等),在重置过程中实现零停机时间

终端窗口
# 重置沙盒数据库(仅在 SANDBOX_MODE 启用时有效)
paideia sandbox reset

要求:

  • SANDBOX_MODE 环境变量必须设置为 "1""true"
  • 如果沙盒模式被禁用,命令将静默退出

功能:

  • 删除所有用户数据集合(用户、课程、注册、提交等)
  • 保留系统表(payload-jobspayload-jobs-logpayload-migrations 等)
  • 使用 seed.json(如果可用)中的新数据重新填充数据库
  • 实现零停机时间 - 应用程序在重置期间继续运行

使用场景:

  • 开发期间手动重置数据库
  • 测试数据库重置功能
  • 在不重启服务器的情况下重置测试数据
  • 在保留系统状态的同时清除用户数据

输出示例:

终端窗口
paideia sandbox reset
╔═══════════════════════════════════════════════════════╗
██████╗ █████╗ ██╗██████╗ ██████╗██╗ █████╗
██╔══██╗██╔══██╗██║██╔══██╗██╔═══╝██║██╔══██╗
██████╔╝███████║██║██║ ██║██████╗██║███████║
██╔═══╝ ██╔══██║██║██║ ██║██╔═══╝██║██╔══██║
██║ ██║ ██║██║██████╔╝██████╗██║██║ ██║
╚═╝ ╚═╝ ╚═╝╚═╝╚═════╝ ╚═════╝╚═╝╚═╝ ╚═╝
Learning Management System
╚═══════════════════════════════════════════════════════╝
🔄 正在重置沙盒数据库...
沙盒数据库重置成功完成!

零停机时间

沙盒重置过程通过在重置期间保留系统表来实现零停机时间。应用程序在清除和重新填充用户数据时继续正常运行。这与删除整个数据库并导致停机的 migrate fresh 不同。

所有命令都支持以下全局标志:

显示指定命令的帮助信息。

终端窗口
paideia migrate --help

跳过破坏性操作的确认提示。请谨慎使用。

适用于:

  • paideia migrate fresh

示例:

终端窗口
paideia migrate fresh --force-accept-warning

指定数据库转储的自定义输出文件名。文件名相对于 paideia_data/ 目录。

示例:

paideia_data/backup-before-update.sql
paideia migrate dump -o backup-before-update.sql
  1. 始终先备份: 在生产环境中运行迁移之前创建数据库转储

    终端窗口
    paideia migrate dump -o backup-before-migration.sql
    paideia migrate up
  2. 检查状态: 在应用迁移之前和之后验证迁移状态

    终端窗口
    paideia migrate status
  3. 在开发环境中测试: 始终先在开发环境中测试迁移

  4. 谨慎使用 Fresh: 仅在开发环境中使用 migrate fresh

  1. 定期备份: 安排定期数据库转储

    终端窗口
    # 每日备份的 cron 作业示例
    0 2 * * * cd /path/to/paideia && paideia migrate dump -o daily-$(date +\%Y-\%m-\%d).sql
  2. 在重大更改之前: 始终在以下操作之前转储:

    • 运行迁移
    • 更新 Paideia LMS
    • 进行重大架构更改
  3. 存储: 将转储文件移动到外部存储(S3 等)以长期保留

  4. 测试: 定期测试恢复过程以确保备份有效

  • 转储位置: 所有数据库转储自动保存到 paideia_data/ 目录
  • 目录创建: 如果 paideia_data/ 目录不存在,将自动创建
  • Git 忽略: paideia_data/ 目录自动被 git 忽略
  • Docker 忽略: paideia_data/ 目录从 Docker 构建中排除

Paideia CLI 命令返回适当的退出代码:

  • 0: 命令成功完成
  • 1: 命令失败并出现错误

这允许轻松集成到脚本和自动化工具中:

#!/bin/bash
if paideia migrate up; then
echo "迁移应用成功"
else
echo "迁移失败"
exit 1
fi

所有 CLI 命令都可以与编译的单二进制文件部署无缝配合:

  1. 开发: 直接运行命令

    终端窗口
    bun server/index.ts migrate status
  2. 生产: 编译为单二进制文件并运行

    终端窗口
    bun build server/index.ts --compile --outfile paideia
    ./paideia migrate status

CLI 模式可以与编译的二进制文件配合使用,因为:

  • 迁移在编译时捆绑到二进制文件中
  • 迁移实用程序没有文件系统依赖
  • 所有命令在编译和非编译模式下工作方式相同

迁移命令不工作:

  • 确保您在正确的项目目录中
  • 检查数据库连接是否正确配置
  • 验证 DATABASE_URL 环境变量是否已设置

转储命令失败:

  • 检查您在项目目录中是否有写入权限
  • 确保有足够的磁盘空间
  • 验证数据库连接是否处于活动状态

服务器无法启动:

  • 检查所需端口是否已被使用
  • 验证环境变量是否正确设置
  • 检查日志以获取特定错误消息
Ask DeepWiki
贡献 社区 赞助