DOMjudge——Ubuntu18.04安装教程

离队有一段时间了,队伍需要配置一个判题的环境,我比较熟悉Ubuntu的系统,老师让我来配置一下,这是我们学院第一次用这个DOMjudge平台,记录一下配置的过程

系统环境

ubuntu18.04
mysql-server-5.7
domjudge7.3.4

domjudge官网下载

DOMjudge
请添加图片描述

点击release archive可以下载旧版本
请添加图片描述

这里下载的是DOMjudge7.3.4

新建domjudge用户并授予sudo权限

可用可不用,主要是为了分隔环境,同时输入命令时,需要权限的命令不用每次都输入sudo,方便一些
如果你的机器只运行一个domjudge就没必要新建用户,否则新建用户后记得切换用户

sudo adduser domjudge
sudo usermod -aG sudo domjudge

domserver配置

安装domserver所需软件

sudo apt install acl zip unzip  apache2 php php-fpm php-gd php-cli php-intl php-mbstring php-mysql php-curl php-json php-xml php-zip composer ntp mysql-server-5.7

注意这里mysql安装的是5.7版本

配置mysql

  • 启动mysql服务
    service mysql start

  • 查看mysql用户名密码:
    sudo cat /etc/mysql/debian.cnf
    请添加图片描述

  • 登陆mysql:
    mysql -u <username> -p <password>
    请添加图片描述

password就是前面查看的密码,复制下来就行

  • 修改root用户密码:
    注意:mysql 5.7.9版本以后修改密码的方式有变化
    查看root用户的密码
    select authentication_string from mysql.user where user=‘root’;
    请添加图片描述

如果密码不为空需要先将原密码置空
update user set authentication_string=‘’ where user=‘root’;
然后修改密码
alter user ‘root’@‘localhost’ identified with mysql_native_password by ‘123456’;
请添加图片描述

若原密码为空直接修改密码

  • 如需远程访问,权限远程访问限制:
    update mysql.user set Host =‘%’ where user=‘root’;
  • 刷新权限(只是修改密码不需要刷新权限):
    FLUSH PRIVILEGES;
    请添加图片描述
  • 如需mysql远程访问,权限远程访问限制:
    修改/etc/mysql/mysql.conf.d/mysqld.cnf 中 bind-address 为bind-address = 0.0.0.0
    修改后重启mysql服务生效
    service mysql restart

domserver安装

  • 解压下载好的domjudge安装包
    tar -zxvf domjudge-7.3.4.tar.gz
  • 进入domjudge目录
    cd domjudge-7.3.4/
  • 安装目录
    ./configure --prefix=$HOME/domjudge --with-baseurl=127.0.0.1
  • 安装domserver
    make domserver && sudo make install-domserver
  • 进入安装目录:
    cd $HOME/domjudge/
  • 安装数据库结构及实例数据:
    sudo domserver/bin/dj_setup_database genpass
    请添加图片描述

sudo domserver/bin/dj_setup_database -u root -p 123456 install
这条命令的格式为dj_setup_database [-u <mysql admin user>] [-p <password>|-r] install
请添加图片描述

  • 配置apache2:
    sudo ln -s $HOME/domjudge/domserver/etc/apache.conf /etc/apache2/conf-available/domjudge.conf
    sudo ln -s $HOME/domjudge/domserver/etc/domjudge-fpm.conf /etc/php/7.2/fpm/pool.d/domjudge.conf
  • 重启apache2服务:
    a2enmod proxy_fcgi setenvif rewrite
    请添加图片描述

a2enconf php7.2-fpm domjudge
请添加图片描述

service php7.2-fpm reload
service apache2 reload

  • 浏览器访问地址:
    http://127.0.0.1/domjudge/public
    请添加图片描述

  • 查看web管理员admin初始密码:
    cat domserver/etc/initial_admin_password.secret

  • login
    请添加图片描述

judgehost配置

安装judgehost所需软件

sudo apt install make sudo debootstrap libcgroup-dev lsof
php-cli php-curl php-json php-xml php-zip procps
gcc g++ default-jre-headless default-jdk-headless ghc fp-compiler

安装jdugehost

安装

./configure --prefix=$HOME/domjudge
make judgehost && sudo make install-judgehost

  • 添加user
    domjudge-run用来执行选手提交的代码,所有只需要最少的权限。
    sudo useradd -d /nonexistent -U -M -s /bin/false domjudge-run
  • 配置sudoer权限
    sudo cp $HOME/domjudge/judgehost/etc/sudoers-domjudge /etc/sudoers.d/

安装chroot环境

sudo vim $HOME/domjudge/judgehost/bin/dj_make_chroot

  • 修改UBUNTU镜像源,大概在180行左右:
    请添加图片描述

阿里源:http://mirrors.aliyun.com/ubuntu/

  • 执行judgehost安装目录下的 bin/dj_make_chroot
    sudo bash $HOME/domjudge/judgehost/bin/dj_make_chroot
    过程代该需要30分钟

设置cgroup

  • 修改文件
    sudo vim /etc/default/grub
    请添加图片描述

改为
请添加图片描述

  • 执行 sudo update-grub
    请添加图片描述

  • 重启电脑

配置 PHP 时区(最后看自己情况修改)

cd /etc/php/7.0/apache2/
sudo gedit php.ini
date.timezone = “Asia/Shanghai”
重启 Apache 服务
sudo service apache2 restart

启动judgehost

  • 在judgehost安装路径下执行 bin/create_cgroups来启动cgroups
    cd $HOME/domjudge/judgehost
    sudo ./bin/create_cgroups
    注:每次重启都需要运行bin/create_cgroups,否则提交会编译错误,或者将create_cgroups设置为开机启动
  • 修改 rest 文件
    因为judgehost通过http访问到judgeserver,所以我们需要产生一个judgehost的账号密码。找到domserver安装目录下的etc/restapi.secret文件。使得domhost安装目录下etc/restapi.secret文件与它相同即可。如果需要添加多个judgehost,具体步骤请翻阅官方文档。
  • 启动judgedaemon
    在judgehost安装路径下执行 ./bin/judgedaemon
    请添加图片描述
    这里就是等待题目上传的提示

DOMjudge配置

检查配置

在127.0.0.1/domjudge/public登陆管理员身份admin,密码前面有提到可以看
点击左上角DOMjudge标志,进入localhost/domjudge/jury界面
请添加图片描述

点击Administrator下面的configchecker项
请添加图片描述

绿色的代表已经配置ok。
黄色代表warning,比如题目没有设置气球颜色之类的,不改也没大问题。
红色代表配置不合理或者不正确

mysql配置

打开/etc/mysql/conf.d/mysql.cnf文档
sudo gedit /etc/mysql/conf.d/mysql.cnf
复制下面内容
[mysqld]
max_connections = 1000
配置会因为实际题目的不同(如测资大小,测资笔数)有不同的要求。
所以建议再添加完成题目之后,再回到config check页面检查一遍,按照给出的要求修改即可。
保存退出重启mysql
sudo service mysql restart

php配置

php配置
可以在configuration check页面的右边 system information一栏中,找到PHP:所在的一行,后面有一个蓝色的i。
点击进入页面找到Loaded Configuration File一栏可以看到php.ini配置文件所在的位置。
请添加图片描述

根据给出的要求修改
max_file_uploads 200
upload_max_filesize 128M
post_max_size 128M
memory_limit 512M
修改完保存php.ini文件重启php
sudo service apache2 restart

比赛创建

关于用户和队伍的添加,题目上传和创建比赛参考官方的博客就可以

其他问题

  • 如果需要安装kotlin,建议用sdkman安装而不是snap,snap可能会有权限问题
  • 安装sdkman时输入了:curl -s https://get.sdkman.io | bash后没有反应可能是没有配置Ubuntu的DNS
  • 在/etc/resov.conf中添加
    nameserver 202.96.134.133
    nameserver 8.8.8.8
    即可

参考内容

官方文档
DOMjudge中文文档
DOMjudge安装
DOMjudge安装笔记
记一次 DOMjudge 的安装经历
ACM中domjudge——judgehost评测机的安装与启动
DOMjudge安装与使用

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值