修改 /home/judge/src/web/template/syzoj/css/white.css末尾 设置页面内容字体大小。
修改/home/judge/src/web/template/syzoj/submitpage.php 432行 设置代码输入框的字体大小。
测试数据如果命名中包含用英文中括号[ ]
包裹的数字,则认定为建议分数,如没有建议分数则默认10分。
如: testA[30].in / testA[30].out
这组数据给的分数是30分,testB.in / testB.out
给的分数是10分。
系统将累计得分与题目所有数据的总分,计算通过率,写入数据库pass_rate字段,并在Web端显示。
1、注册一个新的账户例如judger1,用作判题。 2、用管理员登陆后台,给这个判题账户增加HTTP_JUDGE权限。 3、修改判题机judge.conf,设置好相关字段
OJ_HTTP_JUDGE=1
OJ_HTTP_BASEURL=http://OJ系统URL地址/
OJ_HTTP_USERNAME=judger1
OJ_HTTP_PASSWORD=judger1password
4、修改db_info.inc.php,禁用$OJ_VCODE验证码。 5、重启判题机
sudo pkill -9 judged
sudo judged
另参考 https://github.com/zhblue/hustoj/blob/master/wiki/HTTPJudge.md
可以,设置db_info.inc.php中的选项, https://github.com/zhblue/hustoj/blob/master/trunk/web/include/db_info.inc.php#L51
static $OJ_REGISTER=true; //允许注册新用户
static $OJ_REG_NEED_CONFIRM=false; //新注册用户需要审核
关闭注册后,管理员可以在后台“比赛队账户生成器”,生成指定数量的账户用于分配。 http://xxxx.xxxxx/admin/team_generate.php
修改db_info.inc.php设置
static $OJ_MATHJAX=true; // 激活mathjax
需要用户能够正常访问互联网,内网用户需要自行部署mathjax内网镜像,并修改template/bs3/problem.php中相关路径。
修改/home/judge/etc/judge.conf,设置
OJ_SIM_ENABLE=1
修改/home/judge/src/web/include/db_info.inc.php,设置
$OJ_SIM=true;
- 抄袭只对不同账号间生效,自己抄袭自己不计。拥有Source_browser权限的账号可以看到具体数值和对比。
wget https://gitee.com/zhblue/hustoj/raw/master/trunk/install/install-ubuntu18-gitee.sh
sudo bash install-ubuntu18-gitee.sh
sudo pkill -9 judged
sudo judged
sudo find /home/judge -name "XXXXX"
数据库账号密码存放在两个配置文件中:
/home/judge/etc/judge.conf
/home/judge/src/web/include/db_info.inc.php
新版本中,快速登陆mysql的脚本在install目录里,名字为mysql.sh 使用方法
sudo bash /home/judge/src/install/mysql.sh
1、先用谷歌浏览器直接打开xml文件,看是否有语法错误,如果有,用文本编辑器修订提示的行号。
2、如果超过100M,可以先用EasyFPSViewer拆分成多个小文件,然后再导入。
3、对于HUSTOJ,可以先压缩为zip再上传导入
4、修改/etc/php/7.2/fpm/php.ini, 提高post_max_size、upload_max_filesize 、memory_limit、max_execution_time 的值。修改后执行sudo service php7.2-fpm restart生效。
修改/home/judge/etc/judge.conf
OJ_CPU_COMPENSATION=1.0
增加这个值可以降低CPU的评测速度,安装脚本根据CPU的bogomips值来初始化。 最高不超过100,设为100可以将原先1ms的测试数据计成100ms。
这取决于买的阿里云还是校园网服务器,或者虚拟机: 阿里云直接用阿里提供的公网ip访问,也可以添加域名解析后用域名访问。 校园网,用学校提供的内网ip或二级域名访问。 虚拟机,百度“【虚拟机的名字如virtualbox或vmware】+端口映射” ,把80端口转进去,然后用物理机的ip地址访问。
这多半意味着数据库结构与预期不一致,可以通过以下方法解决:
- 管理后台更新数据库
- 参考db.sql中的建表语句,对比修订当前库表结构
- 处理掉从老版本MySQL里带来,在新版MySQL中不再合法的日期数据,如:'0000-00-00',然后参考前面的方案解决。
- 比赛的题目在比赛添加后,直到结束前,是不能在练习中看到和提交的,否则比赛将泄题或罚时被绕过。
- 私有比赛的题目,在比赛结束后,仍然保留,即使比赛被隐藏也是一样,这是为了防止下一届新生提前获知测试内容。
- 如果希望私有比赛后,题目公开可做,请将比赛切换为公开。
- 设置judge.conf中的OJ_OI_MODE=1 //不在单个数据点WA时停止判题,而是继续判题
- 设置db_info.inc.php中的 $OJ_MARK="mark"; // 非AC的提交结果显示得分而非错误比率
- 设置db_info.inc.php中的 $OJ_OI_1_SOLUTION_ONLY=true; //比赛是否采用noip中的仅保留最后一次提交的规则。
- 添加比赛时,比赛标题中包含"NOIP"这个关键词 // 赛后才能看结果
- "NOIP"这个敏感词在db_info.inc.php中可以修改
- 检查OJ_RUNNING的设置与run?目录的对应关系,例如:OJ_RUNNING=2,需要run0 run1两个目录,属主judge,权限700。
- 有的题目CE有的题目AC,适当放宽judge_client.cc中compile函数里的CPU、内存、文件限制。约1234行前后。修改后需在core目录执行sudo bash make.sh
如果使用debian或centos,可能默认安装的是mariadb不是mysql,这时请自行搜索安装mariadb的头文件。
debian里大约是
sudo apt-get install libmariadb-dev
centos里大约是
sudo yum install MariaDB-devel
编辑okcalls64.h或okcalls32.h(取决于您使用的Linux版本uname -a出现x64字样则64位,i686字样则32位),在对应的语言数组里增加内容。 如C或C++:
int LANG_CV[256] = { 85, 8,140, SYS_time, SYS_read, SYS_uname, SYS_write, SYS_open,
SYS_close, SYS_execve, SYS_access, SYS_brk, SYS_munmap, SYS_mprotect,
SYS_mmap2, SYS_fstat64, SYS_set_thread_area, 252, 0 };
将上述报错中CALLID:后的数字,增加到数组中非末尾的位置,如果这个数字是0,请加在首位。
int LANG_CV[256] = { 20, 85, 8,140, SYS_time, SYS_read, SYS_uname, SYS_write, SYS_open,
SYS_close, SYS_execve, SYS_access, SYS_brk, SYS_munmap, SYS_mprotect,
SYS_mmap2, SYS_fstat64, SYS_set_thread_area, 252, 0 };
修改完成,重新在core目录执行sudo ./make.sh 然后重新测试,如果发现再次出现类似错误,请留意CALLID数字变化,重复上述步骤直至问题消失。 看不懂请移步知乎 看更详细解释。
在judge_client.cc头部增加宏定义 IGNORE_ESOL
加好题目后在题目列表找TestData,点击上传。 主文件名一样的*.in *.out,如test1.in test1.out
sudo su
cd /home/judge/src/install
bash fixing.sh
如果您使用的是ie6浏览器,请禁用服务器上的deflate模块,在ubuntu下的命令是
sudo rm /etc/apache2/mods-enabled/deflate.* sudo /etc/init.d/apache2 restart
点击CentOS
不要钱,我们是GPL的。
查看安装说明[README],管理员登录后有Admin菜单。
判题程序judged需要用root帐号启动,请重启服务器或手动执行sudo judged。如果无效,请检查/home/judge/etc/judge.conf中的数据库账号配置,参考[Configuration],修正后再次重启服务器或执行sudo pkill -9 judged等待一会儿再执行sudo judged
您需要修改测试数据目录,给予php-fpm操作数据目录的权限。Ubuntu下php-fpm运行的用户身份是www-data
chgrp www-data -R /home/judge/data
chmod g+rw -R /home/judge/data
题目默认为删除状态,只有管理员能访问,当管理员确认题目没有问题后,可以点击ProblemList中红色的Reserved,切换为绿色的Available启用题目。
目前只支持sun原版jdk和openjdk,其他jdk暂不能保证支持。如果你用的是64位系统,你可能需要自己调整一下源代码。请联系我。
请给自己增加source_browser权限。issue1
运行下面的命令,如果fixing.sh文件不存在,可以从http://dl.hustoj.com/fixing.sh 下载
sudo su
cd /home/judge/src/install
bash fixing.sh
参考[POJ2HUSTOJ]
到issues去提问,new issue
注册一个叫admin的用户,自动获得权限。
自己不小心改坏了 web 代码,可以使用 install 目录中的 fixing.sh 进行系统修复。
以管理员身份登录,点击 Admin/管理
进入后台。
进入后台,点击左侧NewProblem。
添加题目时,可以在 test input
test output
添加一组测试数据,大规模的数据(10KB+)和更多的数据,可以在添加完题目后,通过 ftp/sftp
,上传到题目对应目录,通常是 /home/judge/data/题号
。命名规则是输入数据以 .in
结尾,输出数据以 .out
结尾,主文件名相同。
后台中点击 Problem List
,找到需要编辑的题目,点击 Edit
。编辑时不能修改测试数据,测试数据请使用 ftp
工具修改。
题目添加后,默认是停用状态,以防比赛提前漏题,后台中点击 ProblemList
,找到题目,点击 Resume
启用题目,或者组织比赛,比赛中的题目将自动启用。
在题目列表 ProblemList
中选择使用的题目, 在 PID
一栏打钩, 点击 CheckToNewContest
按钮,进入到比赛添加页面,输入比赛名称,设定 比赛时间
、语言类型
、访问权限
,然后提交即可。
也可以使用管理菜单中的 NewContest
,需要手动输入题目编号,用英文逗号分隔。
点击比赛列表 ContestList,选择 Edit
或 Delete
。
点击 SetMessage
。
点击 ChangePassWord
。
点击 Rejudge
,输入题号或运行编号。
Addprivilege
administrator
为管理员,source_browser
为代码审查,contest_creator
为比赛组织者。
通常给使用系统的老师分配代码审查和比赛组织者权限即可。
使用 ImportProblem ,上传 FPS 文件。
使用 ExportProblem ,输入起始编号,结束编号,或题号列表,如果输入了列表,起始结束将不起作用。
系统升级中,有对数据库的修改,这些修改不能通过 SVN 实现自动更新,如果发现升级 web/core
代码后系统报错,可以执行 update database
操作,进行数据库升级。因为脚本中有测试代码,所以重复执行不会造成影响。
- 访问
FreeProblemSet
,查看Downloads
列表。https://github.com/zhblue/freeproblemset/ - 访问 TK题库 下载题目
在 judge_client.cc
头部增加宏定义 IGNORE_ESOL
。
加好题目后在题目列表找 TestData
,点击上传。主文件名一样的 *.in
*.out
,如 test1.in
test1.out
可能是 judged
服务未能正常启动,执行如下命令即可。
sudo judged
或者检查 /home/judge/etc/judge.conf
中的数据库账号配置,修正后再次重启服务器或执行 sudo pkill -9 judged
。
等待一会儿再执行 sudo judged
若出现 Runtime Error:[ERROR] A Not allowed system call: runid:10735 CALLID:20
时,编辑 okcalls64.h
或 okcalls32.h
(取决于您使用的 Linux
版本 uname -a
出现 x64
字样则 64
位,i686
字样则 32
位),在对应的语言数组里增加内容。如 C
或 C++
:
int LANG_CV[256] = { 85, 8,140, SYS_time, SYS_read, SYS_uname, SYS_write, SYS_open,
SYS_close, SYS_execve, SYS_access, SYS_brk, SYS_munmap, SYS_mprotect, SYS_mmap2,
SYS_fstat64, SYS_set_thread_area, 252, 0 };
将上述报错中 CALLID:
后的数字,增加到数组中非末尾的位置,如果这个数字是0,请加在首位。
int LANG_CV[256] = { 20, 85, 8,140, SYS_time, SYS_read, SYS_uname, SYS_write,
SYS_open,SYS_close, SYS_execve, SYS_access, SYS_brk, SYS_munmap,
SYS_mprotect,SYS_mmap2, SYS_fstat64, SYS_set_thread_area, 252, 0 };
修改完成,重新在 core
目录执行 sudo ./make.sh
然后重新测试,如果发现再次出现类似错误,请留意 CALLID
数字变化,重复上述步骤直至问题消失。
Ubuntu 环境,当 apache2
重启提示时:
* Starting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name,
... waiting apache2: Could not reliably determine the server's fully qualified domain
name, using 127.0.1.1 for ServerName
解决的方法是:
sudo vim /etc/apache2/sites-available/default
打开 default
文件后,在 default
文件顶端加入:ServerName 127.0.0.1
重启 apache2
就不会提示上述错误了。
sudo /etc/init.d/apache2 restart
如果您使用的是 ie6
浏览器,请禁用服务器上的 deflate
模块。
sudo rm /etc/apache2/mods-enabled/deflate.*
sudo /etc/init.d/apache2 restart
21.添加题目时出现 warning/
题目目录下数据没有自动生成
需要修改系统 php.ini
,给予 php
操作数据目录的权限。以下是推荐修改的设置。
sudo gedit /etc/php5/apache2/php.ini open_basedir=/home/judge/data:/var/www/JudgeOnline:/tmp
max_execution_time = 300
; Maximum execution time of each script, in seconds
max_input_time = 600
memory_limit = 128M
; Maximum amount of memory a script may consume
post_max_size = 64M
upload_tmp_dir =/tmp
upload_max_filesize = 64M
重启 Apache
即可。
题目默认为删除状态,只有管理员能访问,当管理员确认题目没有问题后,可以点击 ProblemList
中的 Resume
启用题目。
目前只支持 sun
原版 jdk
和 openjdk
,其他 jdk
暂不能保证支持。
请给自己增加 source_browser
权限。
如果 web
安装位置不在 /JudgeOnline
,需要手工修改 /fckeditor/editor/filemanager/connectors/php/config.php
的第 37 行: $Config['UserFilesPath'] ='/JudgeOnline/upload/'.date("Ym")."/" ;
将 JudgeOnline
修改为对应的 OJ web
路径,如 oj
。