2.2 环境依赖

系统依赖

部署 DOMjudge 的依赖有:

  • 运行 judgehosts 和 DOMserver 的计算机必须运行 Linux(DOMserver 或许可以运行在一台 Unix 的变种上)。这套系统主要在 Debian GNU/Linux 下开发,手册中页添加了一些特别提示项,对 Debian 的派生系统如 Ubuntu 也有效。DOMjudge 也在类 RedHat Linux 系统下测试过。我们尝试遵循 POSIX 标准,但是唯独是 judgehost 的安全解决方案是 Linux 专属的。
  • DOMserver 和 judgehost 的(本地)root 权限,用于配置 sudo ,安装有限制性权限的文件,以及挂载(卸载) proc 文件系统。详情查阅安全性:root 权限
  • 一个连接所有 DOMjudge 参赛队伍计算机的 TCP/IP 网络。另外需要限制因特网访问或其他服务(如 ssh,邮件,网络聊天 等)功能的安全服务,本软件并不提供。详情参见安全:外部安全。所有基于网络的交互都由 HTTP 或 HTTPS 协议( TCP 端口 80 或 433)完成:

    • 向web服务器发送的来自于队伍,公众或裁判的 HTTP 流量。
    • 评测机通过 HTTP(S) 连接到web服务器上的 DOMjudge 的 API。
    • 命令行提交客户端(submit)也通过 HTTP(S) 连接到 web 服务器上的 API。

      当使用“IP地址”认证模式时,每个队伍的计算机需要有一个 DOMjudge 服务器能确定唯一的IP地址,详细请见验证行为


软件依赖

DOMjudge 运行时需要以下软件支持:

  • 对每一种支持的语言都需要有一个对应的编译器,最好是可以产生静态链接的独立可执行文件那种。
  • 带 PHP FPM 的 Nginx web服务器或支持 mod_rewirte 的 Apache 服务器
  • 无论是使用 FPM 或 Apache 的 mod_php, PHP >= 7.0。并且启用 mysqli, GD, curl, json, mbstring, intl, zip 以及 PHP 的 XML 拓展。我们也推荐用于产生额外调试信息的 posix 拓展。
  • MySQL 或 MariaDB >= 5.5.3 数据库,以及客户端软件。
  • PHP >= 7.0 命令行版本以及 curl 和 json 拓展。
  • /bin/sh(例如 bash 或 ash)中的 POSIX 的兼容 shell。
  • 一个静态编译的 POSIX shell,位于lib/judge/sh-static(i386/amd64 Linux 中包含 dash)。
  • libcgroup,用于启用 Linux cgroup 审计和 judgehost 上的安全措施,参见 安装 judgehost 章节。
  • 许多标准的( GNU )程序,包括但不限于:hostname, date, dirname, basename, touch, chmod, cp, mv, cat, grep, diff, wc, mkdir, mkfifo, mount, sleep, head, tail, pgrep, zip, unzip。
  • 用于获得 root 权限的 sudo。
  • 用于重新产生含有专属网站配置设置的队伍 PDF 手册的 LaTeX。

以下配置是可选的,但是它们通常是有用的或者对某些功能来说是必须的:

  • phpMyAdmin,用于紧急情况下访问数据库或导入导出数据
  • NTP 守护进程,用于保持裁判系统、队伍设备的时间一致
  • libcurllibJSONcpp,用于命令行提交客户端
  • libmagic 用于命令行提交客户端探测二进制提交文件
  • PECL xdiff 扩展用于可靠地对提交文件进行比较,如果没有安装那么 DOMjudge 会尝试其他方法比较提交文件
  • beep 用于使用默认的 alert 脚本时,对错误、提交和评测发出可听见的通知

编译 DOMjudge 依赖的软件:

  • 包含标准库的 gcc 以及 g++;其他的库也可能有效:我们曾成功地用 LLVM 工程的 Clang 完全编译了 DOMjudge 的源文件;C 库应支持 POSIX.1-2008 标准。
  • GNU make

队伍设备的配置要求

最基本的队伍主机只需要一个现代 web 浏览器(当然还应有必要的程序编写工具),DOMjudge 支持所有版本的 Firefox,Chrome,Edge。