DOMjudge 中文文档
  • 概述
  • 术语对照表
  • 管理员手册
    • 1 Domjudge 总体介绍
      • 1.1 功能
      • 1.2 环境依赖
      • 1.3 版权许可
      • 1.4 联系方式
    • 2 比赛安排
      • 2.1 比赛硬件
      • 2.2 环境依赖
    • 3 安装与配置
      • 3.1 快速安装
      • 3.2 准备工作
      • 3.3 安装评测系统
      • 3.4 安装数据库
      • 3.5 Web 服务器配置
      • 3.6 微调服务器的设置
      • 3.7 安装 judgehost
      • 3.8 构建和安装 submit client
      • 3.9 配置
      • 3.10 OpenID connect
      • 3.11 可执行文件
      • 3.12 语言设置
      • 3.13 设置特殊运行和比较程序
      • 3.14 通知系统
      • 3.15 其他可配置脚本
      • 3.16 日志和调试
      • 3.17 (重新)生成文档和团队手册
      • 3.18 可选功能
      • 3.19 更新
    • 4 配置一场比赛
      • 4.1 配置比赛数据
      • 4.2 比赛里程碑
      • 4.3 用户验证
      • 4.4 提供测试数据
      • 4.5 开启守护进程
      • 4.6 检查确保一切就绪
      • 4.7 测试裁判解(jury solutions)
    • 5 队伍环境
    • 6 网页界面
      • 6.1 裁判及管理员视图
      • 6.2 得分榜
      • 6.3 气球
    • 7 安全性
      • 7.1 考量
      • 7.2 内部安全
      • 7.3 root 权限
      • 7.4 文件系统权限
      • 7.5 外部安全
    • 附录
      • 8 常见问题和解决方案
        • 8.5 Memory limit errors in the web interface
        • 8.6 Compiler errors: `runguard: root privileges not dropped'
      • 9 多站比赛
      • 10 致开发者
        • 10.1 从 Git 源码库引导
        • 10.2 维护模式安装
        • 10.3 Makefile 结构
  • 裁判手册
    • 1 Domjudge 总体介绍
      • 1.1 功能
      • 1.2 版权许可
      • 1.3 联系方式
    • 2 概要
      • 2.1 裁判与管理员
      • 2.2 榜单
    • 3 比赛前
      • 3.1 题目及语言
      • 3.2 核对测试数据
      • 3.3 测试题解
      • 3.4 热身赛
    • 4 比赛期间
      • 4.1 监测队伍状态
      • 4.2 评测提交
      • 4.3 解释请求
    • 5 比赛后
    • 附录
      • 6 题目打包格式
  • 队员手册
    • 0 概要
    • 1 提交题解
      • 1.1 通过命令行
      • 1.2 通过网页界面
    • 2 查看提交结果
      • 2.1 可能的结果
    • 3 解释
    • 4 提交是怎么被评测的?
      • 4.1 提交题解
      • 4.2 编译
      • 4.3 测试
      • 4.4 各种限制
    • 附录
      • A 样例代码
Powered by GitBook
On this page
  • 第三方软件:
  • Domjudge:
  • 在 domserver 主机上:
  • 在 judgehost 上:
  • 可选:

Was this helpful?

  1. 管理员手册
  2. 3 安装与配置

3.1 快速安装

Previous3 安装与配置Next3.2 准备工作

Last updated 5 years ago

Was this helpful?

注意: 本节不能代替下面几节的完整安装。但对于安装过 Domjudge 并且需要一些提示的人来说,相当于一个备忘录。如有疑问,请务必查阅完整的安装说明。

第三方软件:

  • 安装 MySQL-server 或 MariaDB-server 并为其设置 root 密码。

  • 安装 Nginx 或 Apache 、 PHP 和 phpMyAdmin (推荐)。

  • 确保 PHP 可以在 Web服务器和命令行脚本下正常工作。

  • 在 judgehost 上安装必要的编译器。

  • 另行参阅 。

Domjudge:

  • 解压源码包并执行 ./configure [--enable-fhs|--prefix=<basepath>] --with-baseurl=<url>。

  • 执行 make domserver judgehost docs 或者只编译想在这台机器上安装的目标。

  • 用 root 权限执行 make install-{domserver,judgehost,docs}。

在 domserver 主机上:

  • 在domserver主机上初始化 MySQL 数据库:bin/dj_setup_database -u root -r install。

  • 对于 Apache :把 etc/apache.conf 添加到您的 Apache 配置中,如有必要可以修改此配置,然后重新加载 Web服务器:

    sudo ln -s <安装目录>/domserver/etc/apache.conf /etc/apache2/conf-available/domjudge.conf
    sudo a2enmod rewrite
    sudo a2enconf domjudge
    sudo apache2ctl graceful
  • 对于 Nginx:把 etc/nginx.conf 添加到您的 Nginx 配置中,并将 etc/domjudge-fpm.conf 添加到您的 PHP FPM 池目录,如有必要可以修改此配置,然后重新加载 Web服务器:

    sudo ln -s <安装目录>/domserver/etc/nginx-conf /etc/nginx/site-enable/domjudge
    sudo ln -s <安装目录>/domserver/etc/domjudge-fpm.conf /etc/php/<PHP版本>/fpm/pool.d/domjudge.conf
    sudo service nginx reload
  • 检查网页界面是否工作 (/team, /public, /jury)。

  • 更改 admin 用户的默认密码 ('admin')。

  • 检查 API (/api) 是否工作,并为 judgehost 创建凭证。

  • 通过管理员后台或 phpMyAdmin 添加队伍、用户账号和一些必要的比赛数据。

  • 在管理员后台运行配置检测(config checker)。

在 judgehost 上:

  • useradd -d /nonexistent -U -M -s /bin/false domjudge-run

  • 在 /etc/sudoers.d/ 或 /etc/sudoer 中添加 sudoer 配置,例如 etc/sudoers-domjudge。

  • 开启 cgroup 支持:在 /etc/default/grub 中修改内核参数并重启,然后使用 misc/create_cgroups 为 Domjudge 创建 cgroups。

  • 将正确的凭据放在所有 judgehost 的 /etc/restapi.secret 中(从 domserver 中复制)。

  • 启动评测守护进程:bin/judgedaemon

现在应该提交一组测试代码来检验每一部分是否正常工作。

cd test
make test

接下来,在管理员后台点击 judging verifier 以自动验证大多数测试,除了一些有多种可能结果的代码必须手工验证。阅读测试的源码以确定什么(不)应该发生。

可选:

  • 在队伍设备上安装 “提交客户端”。

  • 启动气球通知:cd bin; ./balloons 或者在气球的网页界面中操作。

  • 在 judgehost 上创建一个预先构建好的 chroot 树:

    sudo bin/dj_make_chroot [optional arguments]
    $EDITOR lib/judge/chroot-startstop.sh
  • 有关管理员后台的其他功能,可以安装以下PHP扩展:

    • xdiff PECL:展示提交之间的差异;

注意:根据您在 etc/domserver-config.php 中 AUTH_METHOD 选择不同,需要额外配置,详细请参考 。

通常情况下并不需要修改 chroot-startstop.sh,但当您的解释器不安装在 /usr 或来自其他地方时,请参阅 。

提交客户端设置
创建 chroot 环境
Debian 和 RedHat 的命令示例