带你快速搭建自己的Online Judge平台

1,500 阅读2分钟

欢迎留言讨论,期待与你共同进步掘金人的第一篇博客 - 掘金 (juejin.cn)

快速开始

在Ubuntu16.04主机上安装HUSTOJ

项目地址:zhblue/hustoj
官方网站:hustoj

主机说明

用户名密码
ubuntuubuntu
rootroot
judgejudge

网络配置

ifconfig
cat /etc/network/interfaces
ubuntu@ubuntu:~$ cat /etc/network/interfaces
 
# interfaces(5) file used by ifup(8) and ifdown(8)
source /etc/network/interfaces.d/*
 
# The loopback network interface
auto lo
iface lo inet loopback
 
auto ens33
iface ens33 inet dhcp
 
ubuntu@ubuntu:~$ ifconfig
 
ens33     Link encap:Ethernet  HWaddr 00:0c:29:be:bc:ac 
 
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
 
          inet6 addr: fe80::20c:29ff:febe:bcac/64 Scope:Link
 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
 
          RX packets:82 errors:0 dropped:0 overruns:0 frame:0
 
          TX packets:117 errors:0 dropped:0 overruns:0 carrier:0
 
          collisions:0 txqueuelen:1000
 
          RX bytes:13775 (13.7 KB)  TX bytes:21060 (21.0 KB)
 
 
 
lo        Link encap:Local Loopback 
 
          inet addr:127.0.0.1  Mask:255.0.0.0
 
          inet6 addr: ::1/128 Scope:Host
 
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
 
          RX packets:737 errors:0 dropped:0 overruns:0 frame:0
 
          TX packets:737 errors:0 dropped:0 overruns:0 carrier:0
 
          collisions:0 txqueuelen:1000
 
          RX bytes:62712 (62.7 KB)  TX bytes:62712 (62.7 KB)

image.png

基于Ubuntu16.04安装

首先安装ubuntu16.04(推荐使用,php7速度杠杠的),然后用下面脚本快速安装OJ:

wget https://raw.githubusercontent.com/zhblue/hustoj/master/trunk/install/install-ubuntu16+.sh
sudo bash install-ubuntu16+.sh

安装视频教程

交互设置数据库root账户密码:123456

image.png

-- 报错处理

可能会报错不过不影响使用

ln -s /usr/bin/mcs /usr/bin/gmcs
ln -sf /usr/bin/mcs /usr/bin/gmcs

部署完成

admin作为用户名注册一个用户,自动成为管理员。

IP地址直接访问,admin密码123456

导入题目

测试题目运行状态

配置管理

大部分功能和选项的开关和参数调整都在配置文件中,安装后几个重要配置文件的位置如下:

/home/judge/etc/judge.conf  # 判题judged/judge_client
/home/judge/src/web/include/db_info.inc.php   # Web
/etc/php5/fpm/php.ini 或 /etc/php7.0/fpm/php.ini 或 /etc/php.ini (in Centos7)  # php
/etc/nginx/sites-enabled/default 或 /etc/nginx/nginx.conf (in Centos7)   # nginx

1.如果用户量比较大,报50x错误,可能需要修改/etc/nginx/nginx.conf中的设置:

worker_processes 8;    #其中数字8可以取CPU核心数的整数倍。
    events {
                worker_connections 2048;
                multi_accept on;
}

2.如果遇到比赛人数多,比赛排名xls文件无法下载,请修改/etc/nginx/sites-enabled/default,在fastcgi_pass一行的后面增加:

fastcgi_buffer_size 128k;
fastcgi_buffers 32 32k;

保存后,重启nginx

sudo service nginx restart

参考:husto基于ubuntu1604安装

3.配置访问端口

sudo vim /etc/nginx/sites-enabled/default

image.png

而后重启nginx

sudo service nginx restart 

更新

sudo bash /home/judge/src/install/update-hustoj

在升级过程中,genuine需求配置选项,这里选的是,tc

会替换已有的文件,psh配置数据库文件也会变化,需要修改

sudo vim /home/judge/src/web/include/db_info.inc.php

image.png

重启nginx

sudo service nginx restart 

升级脚本执行后,可能需要登陆web端管理后台,在web页面执行一次更新数据库。

更多学习

请前往GItHub项目zhblue/hustoj官方demo进一步了解。