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 守护进程,用于保持裁判系统、队伍设备的时间一致
libcurl 和 libJSONcpp,用于命令行提交客户端
libmagic 用于命令行提交客户端探测二进制提交文件
PECL xdiff 扩展用于可靠地对提交文件进行比较,如果没有安装那么 DOMjudge 会尝试其他方法比较提交文件
beep 用于使用默认的
alert
脚本时,对错误、提交和评测发出可听见的通知
编译 DOMjudge 依赖的软件:
包含标准库的 gcc 以及 g++;其他的库也可能有效:我们曾成功地用 LLVM 工程的 Clang 完全编译了 DOMjudge 的源文件;C 库应支持 POSIX.1-2008 标准。
GNU make
队伍设备的配置要求
最基本的队伍主机只需要一个现代 web 浏览器(当然还应有必要的程序编写工具),DOMjudge 支持所有版本的 Firefox,Chrome,Edge。
Last updated