当前位置: 首页 > news >正文

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安装与使用

相关文章:

  • JavaEE——文件内容的读写
  • 人脑能否重启?
  • 软件测试基础(五)—— Liunx基础命令行
  • 基于群智能的路径规划算法(三)------遗传算法
  • 到底怎么能精准挑到“报恩榴莲”?
  • C# 窗体进度条
  • 【opencv-c++】鼠标事件
  • STM32F103移植FreeRTOS必须搞明白的系列知识---2(FreeRTOS任务优先级)
  • ijkplayer播放器剖析(四)音频解码与音频输出机制分析
  • 本地web项目如何使用外网访问?教你轻松使用cpolar在windows搭建内网穿透
  • MySQL复合查询
  • 你需要的导航网站,这里都有
  • [SV]SystemVerilog中指定打印格式
  • 长期主义就是坚持重复的做一件事?
  • 各位程序员们,睡眠不足产生的后果超出你想象!
  • JavaScript-如何实现克隆(clone)函数
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 11111111
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • co模块的前端实现
  • CSS相对定位
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • magento2项目上线注意事项
  • mysql 5.6 原生Online DDL解析
  • nfs客户端进程变D,延伸linux的lock
  • Objective-C 中关联引用的概念
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue数据传递--我有特殊的实现技巧
  • 爱情 北京女病人
  • 高性能JavaScript阅读简记(三)
  • 给新手的新浪微博 SDK 集成教程【一】
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 巧用 TypeScript (一)
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 手写双向链表LinkedList的几个常用功能
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 找一份好的前端工作,起点很重要
  • 主流的CSS水平和垂直居中技术大全
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • (26)4.7 字符函数和字符串函数
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (补)B+树一些思想
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot教学评价 毕业设计 641310
  • (全注解开发)学习Spring-MVC的第三天
  • (一)u-boot-nand.bin的下载
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • .chm格式文件如何阅读
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET 发展历程