OJ搭建详细

学校ACM部需要一个比赛的平台~
于是找到hustoj
架设方法如下:
资料来源于:
https://code.google.com/p/hustoj/wiki/

HUST JOL安装说明

by zhblue(newsclan@gmail.com)
方法二选一

1、下载安装程序

debian/ubuntu用户:sudo apt-get update;sudo apt-get install subversion
redhat/centos用户:sudo yum update;sudo yum install subversion.i386

svn checkout http://hustoj.googlecode.com/svn/trunk/install hustoj
cd hustoj
编辑install.sh和web/include/db_info.inc.php,设定数据库用户名密码后
sudo ./install.sh

自动安装使用install.sh,运行前阅读脚本头部说明设置数据库帐号,使用root运行。

2、手动安装顺序如下:

下载源码

        http://code.google.com/p/hustoj/
        svn checkout http://hustoj.googlecode.com/svn/trunk/ hustoj-read-only

创建数据库

        mysql
        set names utf8;
        create database jol;
        use jol;
        source db.sql

配置Web界面

cp -R web /var/www/html/JudgeOnline

注册用户

http://127.0.0.1/JudgeOnline/registerpage.php 注册一个普通帐号zhblue

创建管理员

insert into privilege(user_id,rightstr) values('zhblue','administrator'); zhblue 为需要加管理员权限的帐号

管理员登录

普通登录后访问http://127.0.0.1/JudgeOnline/admin

##########添加用户 useradd --uid 1536 judge judge_client.cc:424

setuid(1536); ==> //设置判题用户//

编译判题服务器、客户端

          需要make g++ libmysql++-dev
        (yum install gcc-c++  mysql-devel  / apt-get install g++ libmysql++-dev)
    mkdir /home/judge/
    mkdir /home/judge/etc
    mkdir /home/judge/data
    mkdir /home/judge/log
    mkdir /home/judge/run0

cd hustoj-read-only/core/
sudo ./make.sh

判题配置文件

########################/home/judge/etc/judge.conf###########################
        OJ_HOST_NAME=localhost    #数据库地址
        OJ_USER_NAME=jol #数据库用户名
        OJ_PASSWORD=# 数据库密码
        OJ_DB_NAME=jol #数据库名
        OJ_PORT_NUMBER=3306 #数据库端口
        OJ_RUNNING=1 #可以同时运行几个进程
        OJ_SLEEP_TIME=1 #如果有空闲 要休眠多久
        OJ_TOTAL=1 #总共有多少台机器负责判题
        OJ_MOD=0 #当前机器评判取模为多少的提交
########################/home/judge/etc/judge.conf###########################

设置启动脚本

   with root or sudo
   echo "LANG=C /usr/bin/judged" > /etc/init.d/judged
   chmod +x  /etc/init.d/judged
   ln -s /etc/init.d/judged /etc/rc2.d/S93judged
   ln -s /etc/init.d/judged /etc/rc3.d/S93judged

您需要修改系统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 = 256M      ; Maximum amount of memory a script may consume (16MB)
       post_max_size = 64M
       upload_tmp_dir =/tmp
       upload_max_filesize = 64M
      

修改php.ini后apache需重启

Centos用户:

尽管我们强烈推荐使用Debian/Ubuntu,但是由于驱动或资源的原因,有的用户不得不使用CentOS/RE/Federa。

Through Debian/Ubuntu is highly recommended, but in case of server hardware drivers or something else, people like to install HUSTOJ on CentOS/RedHat/Federa system.

这里是已知的一些问题。 Here is something for those users:

  • yum install php httpd php-mysql mysql-server php-xml php-gd gcc-c++ php-mbstring glibc
  • 默认web目录在/var/www/html,需要调整install.sh中的设置
  • SELinux会影响PHP的运行,可能需要关闭(/etc/selinux/config and setenforce 0)才能web编辑测试数据。

    或者执行 chcon -R -t httpd_sys_content_t /home

  • PHP.ini的位置在/etc/php.ini
  • php.ini中short_open_tag必须设为On,但是似乎默认为Off
  • php.ini中register_globals必须设为Off,但是似乎默认为On
  • 编译时mysql库的位置在/usr/lib/mysql

    因此需要手工修改judged和judge_client中两个makefile 将 -L/usr/local/mysql/lib/mysql 改为 -L/usr/lib/mysql

    -I/usr/local/mysql/include/mysql 改为 -I/usr/include/mysql

  • install what you need before starting by :

    yum install php httpd php-mysql mysql-server php-xml php-gd gcc-c++

  • the default web site root directory is different from debian/ubuntu

    /var/www/html you gonna need to adjust it in install.sh before running "sudo ./install.sh"

  • SELinux settings will stop php when it trying to make file I/O, so if you don't know how to make SELinux working with HUSTOJ, just disable it for a moment(/etc/selinux/config and setenforce 0), and find the right way later.

this line should works

chcon -R -t httpd_sys_content_t /home
  • PHP.ini is located at /etc/php.ini
  • You need to change php.ini
    short_open_tag=On
    register_globals=Off
    open_basedir=/var/www/html:/var/www/html/JudgeOnline:/tmp:/home/judge/data
  • change makefiles in core/judged and core/judge_client

    change -L/usr/local/mysql/lib/mysql to -L/usr/lib/mysql

    -I/usr/local/mysql/include/mysql to -I/usr/include/mysql

for English user ,email or issue is recommended for Chinese user ,QQ-qun group IM is recomended.

刚刚在全新的CentOS 5.6中安装了OJ,主要遇到问题和解决方法如下:

  • 安装时候提示找不到www-data用户,修改web的用户为apache
  • 运行/etc/init.d/judged出错,提示/lib/init/vars.sh找不到,修改/etc/init.d/judged,删除原有内容,修改内容为:
    /usr/bin/judged
  • 打开页面空白,这是由于CentOS默认带的php版本为5.1,不支持mysql_set_charset函数,这个函数需要5.2.3的支持,打开include/db_info.inc.php,注释掉第37行:
    if(!$OJ_SAE)mysql_set_charset("utf8");
  • 打开题目列表页面不完全,yum install php-mbstring。

关 于Java,如果Java提示编译失败,可以尝试: 1、卸载Java,安装官方jdk 2、测试(应该继续失败) 3、卸载官方jdk,安装java-1.6.0-openjdk-devel 4、测试(貌似就没有问题了,原因不明) PS:在CentOS 6下测试通过。 

https://code.google.com/p/hustoj/wiki/CentOS

分布式系统搭建方法

Introduction

http://hustoj.5d6d.com/forum-4-1.html

Details

建立分布式判题系统 HUSTOJ 支持一台数据库服务器,多台web服务器和多台判题服务器,以承担较高的访问负荷。

首先,需要创建用于从远程连接数据库的帐号。

GRANT ALL PRIVILEGES ON jol.* TO 'judge'@'%'
IDENTIFIED BY 'judge_pass' WITH GRANT OPTION;

对于网络原因无法远程mysql的,请参考HTTPJudge

其中jol为数据库,judge为帐号,judge_pass为密码。 注意: 检查/etc/mysql/my.cnf 确保

bind-address        = 0.0.0.0
  • 为了提高性能,可以适当增大

    key_buffer              = 128M
    query_cache_limit       = 4M
    query_cache_size        = 128M

其次,配置各web程序连接到数据库。 修改include/db_info.inc.php

   static  $DB_HOST="数据库服务器ip";
   static  $DB_NAME="jol";
   static  $DB_USER="judge";
   static  $DB_PASS="judge_pass";

第三,配置各判题程序连接到数据库,分配任务。

   OJ_HOST_NAME=数据库服务器ip
   OJ_USER_NAME=judge
   OJ_PASSWORD=judge_pass
   OJ_DB_NAME=jol
   ...
   OJ_TOTAL=判题机总数
   OJ_MOD=本机编号,从0开始
   ...

其中OJ_TOTAL=判题机总数,OJ_MOD=本机编号,从0开始,例如 有3台机器判题,分别编号0,1,2 OJ_TOTAL都设为3,OJ_MOD分别设为0,1,2

从r784开始不必设置OJ_TOTAL和OJ_MOD,所有judged会自动分配任务。

第四,复制测试数据目录到各判题机。

从r1520开始,使用HTTP_JUDGE方式不必单独复制数据,数据将从web服务器按需下载。

从主机向判题机复制

   scp -r /home/judge/data  root@判题机ip:/home/judge/

或用同步命令。

   rsync -vzrtopg --progress --delete /home/judge/data root@判题机ip:/home/judge/

判题机从主机复制

   scp -r root@主机ip:/home/judge/data  /home/judge/

或用同步命令。

   rsync -vzrtopg --progress --delete root@主机ip:/home/judge/data /home/judge/

最后,在各判题机重启判题程序。

   sudo pkill judged&&sudo judged
时间: 2024-12-03 15:11:05

OJ搭建详细的相关文章

CentOS 7.x下的LEMP环境搭建详细教程_Linux

最近由于项目需求,将服务器从CentOS6升级到CentOS7,对应的PHP版本也升级到PHP5.6.我们熟悉的有LEMP环境一键安装包,但是本文我们将单独安装各个组件模块,并搭建一个完整的PHP运行平台. 我们常说的LNMP环境是指Linux/nginx/MySQL/PHP组合,而LEMP是什么呢?其实Nginx的发音是Engine-X = E,LEMP包是由Linux.nginx.MariaDB/MySQL和PHP组成的,那么看来LEMP和LNMP是一样的,而现在业内习惯性的称作LEMP.M

Linux下Android开发环境搭建详细步骤

  1.系统环境 [android@localhost ~]$ uname -a Linux localhost.localdomain 2.6.32-71.el6.i686 #1SMP Wed Sep 1 01:26:34 EDT 2010 i686 i686 i386 GNU/Linux [android@localhost ~]$ lsb_release -a LSB Version: :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:gra

redis单机搭建--详细

从机: centos 6.5 64 nginx 1.4.4  php 5.5.32 mysql主从 5.5.25 redis 3.0.7 服务端安装 mkdir  /opt/redis Redis的官方下载站是http://redis.io/download,可以去上面下载最新的安装程序下来,我写此文章时的的稳定版本是3.0.7.   步骤一: 下载Redis 进入软件安装包存放目录:cd /var/install/software/ [root@localhost software]# wge

高性能linux web集群搭建详细步骤 可达每秒百万请求

本文教程比较详细,可以说是手把手,所以如果你有这个需求而无从下手,请放点耐心阅读 如何生成每秒百万级别的 HTTP 请求? 负载生成工具(Load-Generating Tools) 在进行负责测试时要牢记一件重要的事:你能在 Linux 上建立多少个 socket 连接.这个限制是硬编码在内核里的,最典型的就是临时 W 端口的限制.(在某种程度上)你可以在 /etc/sysctl.conf 里扩展它.但是基本上,一台 Linux 机器只能同时打开大约 64,000 个 socket .因此在负

Hadoop 2.x伪分布式环境搭建详细步骤_数据库其它

本文以图文结合的方式详细介绍了Hadoop 2.x伪分布式环境搭建的全过程,供大家参考,具体内容如下 1.修改hadoop-env.sh.yarn-env.sh.mapred-env.sh 方法:使用notepad++(beifeng用户)打开这三个文件 添加代码:export JAVA_HOME=/opt/modules/jdk1.7.0_67 2.修改core-site.xml.hdfs-site.xml.yarn-site.xml.mapred-site.xml配置文件 1)修改core-

微信 小程序开发环境搭建详细介绍_相关技巧

微信小程序可谓是今天最火的一个名词了,一经出现真是轰炸了整个开发人员,当然很多App开发人员有了一个担心,微信小程序的到来会不会给移动端App带来一个寒冬,身为一个Android开发者我是不相信的,即使有,那也是很遥远的未来. 不管微信小程序是否能颠覆当今的开发格局,我们都要以好奇的心态去接收,去学习.不排斥新技术,所以,心动不如行动,赶紧先搭建一个微信小程序开发工具.那么接下来就让我们一起来开始吧. 先放一张Github上demo的动态图 开发工具下载是看到GitHub上的分享.那么你可以直接

PHP开发环境搭建详细教程

     首先你需要安装Apache Server,这里以当前最新版Apache Server2.4为例进行说明,可惜官网并没有提供最新版的msi安装包,连编译后的binary二进制压缩包都没提供,不过我已经编译并上传到我的百度网盘,下载地址如下:       Apache Server2.4最新版安装包   下载下来后直接解压到任意目录,如图:  然后你需要安装Apache Server系统服务,先cd 到apacher server2.4/bin下,然后执行如下命令: Java代码   ht

基于SVN源码服务器搭建(详细教程分析)_C 语言

一.引言笔者曾经试图在网上搜索一篇关于SVN源代码服务器搭建方面的中文技术文章,可惜,所找到的,要么是不完整,要么就是对笔者没什么帮助的文章,TortoiseSvn的帮助文档固然强大,但因为是英文,不是很适合来作为入门者使用:毕竟,TortoiseSvn是一个客户端,服务器端的配置也很重要.一年前,笔者刚刚毕业,初入公司,在进行开发时,由于没有进行软件代码版本管理,导致的结果是•软件一天一个版本•Bug日益增加且隐藏很深•代码无法向前回溯•几个月前修正过的Bug在几个月后又重新出现由于最近公司决

LAMP环境搭建详细教程

一.准备工作 1.安装编译工具gcc.gcc-c++ 注意解决依赖关系,推荐使用yum安装,若不 能联网可使用安装光盘做为yum源-- 1)编辑yum配置文件: # mount /dev/cdrom /mnt/cdrom # vi /etc/yum.repos.d/CentOS-Media.repo [c5-media] name=CentOS- $releasever - Media baseurl=file:///mnt/cdrom   * 修改为光盘挂载点              fil