DOMJUDGE
En primero lugar necesitamos al menos
dos equipos, uno sera el DOMSERVER, y otro el JUDGEHOST. En primer
lugar configuraremos el DOMSERVER.
Instalamos paquetes necesarios.
apt-get install gcc g++ make
libcurl4-gnutls-dev mysql-server apache2 php5 php5-cli
libapache2-mod-php5 php5-mysql php-geshi ntp sudo procps sharutils
phpmyadmin xsltproc libboost-regex-dev libgmp3-dev linuxdoc-tools
transfig texlive-latex-extra textlive-fonts-recommended gcj-doc
openjdk-6-jre-headless openjdk-6-jdk ghc fp-compiler
##En la instalacion nos pedira
contraseñas para mysql y phpmyadmin.
Cambiamos el hostname de nuestra
maquina para diferenciarlas
nano /etc/hostname
DOMSERVER
Creamos un usuario DOMJUDGE
Descargamos paquete domjudge de su
pagina oficial
Una vez descargado nos situamos en el
directorio de descarga y descomprimimos.
tar -xczf domjudge.tar.gz
Entramos en el directorio que se
descomprime
cd domjudge
Instalamos el DOMSERVER en el
directorio que queramos, yo lo instalare en /usr/local/domjudge
./configure -prefix =
/usr/local/domjudge
make domserver
make install-domserver
Entramos en el directorio donde
instalamos el DOMSERVER.
cd
/usr/local/domjudge
./dj-setup-database
-u root -r install
(introducir contraseña de root en mysql)
Una vez hecho esto podemos entrar.
mysql -u root -p
exit;
Editamos el fichero de mysql, cambiamos
las siguientes lineas
nano /etc/mysql/my.cfg
bind-address 192.168.1.1 (Direccion
IP DOMSERVER)
max_connections = 1000
max_allow_packet = 128M
Reiniciams servicio mysql
service mysql restart
Vemos si mysql escucha por todos los
puertos (*)
netstat -tlpn
Volvemos a entrar en mysql, y
ejecutamos las siguientes sentencias
mysql -u root -p
grant all privileges on *.* to
'domjudge'@'192.168.1.1' IDENTIFIED BY “domjudge”
grant all privileges on *.* to
'domjudge'@'192.168.1.2' IDENTIFIED BY “domjudge”
grant all privileges on *.* to
'root'@'192.168.1.1' IDENTIFIED BY “toor01”
grant all privileges on *.* to
'root'@'192.168.1.2' IDENTIFIED BY “toor01”
Salimos y establecemos la siguiente
ruta
iptables -A INPUT -i
interfaz salida -s 'IPjudgehost' -ptcp - -destination-port 3306 -j
ACCEPT
iptables -A INPUT -i eth1 -s
'192.168.1.2' -ptcp - -destination-port 3306 -j ACCEPT
Reiniciamos mysql
Service mysql restart
En este paso, debemos tener el segundo
equipo preparado en la misma red que el DOMSERVER, unicamente,
debemos tener instalados los mismos paquetes que en DOMSERVER.
Desde JUDGEHOST probaremos el acceso
remoto a mysql. Una vez hecho volveremos al DOMSERVER
mysql -u root
-h 192.168.1.1 -p
En el directorio donde instalamos de
DOMSERVER hay un archivo de configuracion de apache que sustituiremos
por el que esta usando.
cp
/usr/local/domjudge/domserver/etc/apache.conf
/etc/apache2/sites-available/domjudge.conf
Lo editamos y añadimos
NameVirtualHost domjudge.com (sera
la direccion por la que accederemos atraves del navegador)
<Virtual Host *>
Server Name domjudge.com
DocumentRoot
/usr/local/domjudge/domserver/www
</Virtual Host>
Activamos sitio
a2ensite domjudge.conf
Reiniciamos servidor apache
service apache2 restart
Haremos una prueba en Local, y remota
del entorno grafico
-Local (desde DOMSERVER)
Prueba a poner en la barra del
navegador...
domjudge.com/public
domjudge.com/team
domjudge.com/jury
-Remota (desde JUDGEHOST)
Prueba a poner en la barra del
navegador...
http://192.168.1.1/domjudge.com/public
**Si nos da algun fallo haciendo esta
operación, podemos solucionar el problema editando el fichero
dbpassword.secret y cambiamos el usuario domjudge por root y su
contraseña, hecho esto podremos acceder**
Creacion de Jueces
Nos situamos en el siguiente directorio
cd
/usr/local/domjudge/domserver/etc
Cambiamos la contraseña del
adminitrador total domjudge_ jury
htpasswd htpasswd-jury
domjudge_jury
Creamos un juez normal
htpasswd thpasswd-jury (nombre que
queramos)
JUDGEHOST
Nos situamos en el segundo equipo, el
JUDGEHOST. Este equipo tendra instalados los mismo paquetes que el
DOMSERVER. creamos un usuario JUEZ, que ejecutara el demonio. Con el
paquete del domjudge descargado, lo descomprimimos e instalamos
./configure prefix =
/usr/local/domjudge
make judgehost
make install-judgehost
Cambiamos el hostname de nuestra
maquina para diferenciarlas
nano /etc/hostname
DOMJUDGE
Como root...
useradd -d /noexistent -g group -s
/bin/false domjudge-run
dj-make-chroot
/usr/local/var/lib/domjudge/chroot i386
esperar....
Editamos el siguiente fichero, y
modificamos las lineas.
nano
/usr/local/domjudge/judgehost/etc/judgehost-config.php
('CHROOT_SCRIPT', '') por
('CHROOT_SCRIPT', 'chroot-startstop.sh')
Editamos el siguiente fichero y
cambiamos las lineas
/usr/local/domjudge/judgehost/etc/chroot-startstop.sh
CHROOTORIGINAL=”/usr/local/domjudge/judgehost/chroot”
visudo
añadimos
juez ALL= (root) NOPASSWD:
/bin/mount -n -t proc - -bind /proc proc
juez ALL= (root) NOPASSWD:
/bin/umount /*/proc
juez ALL= (root) NOPASSWD:
/bin/mount - -bind /usr/local/var/lib/domjudge/chroot/*
juez ALL= (root) NOPASSWD:
/bin/umount /usr/local/var/lib/domjudge/judgings/*
Editamos /etc/mysql/my.cfg
buscamos max_allowed_packet y ponemos
128M
Instalamos el servicio ssh en ambas
maquinas y copiamos las contraseñas de un equipo a otro
scp domjudge@192.168.1.1:
/usr/local/etc/domjudge/dbpasswords.secret /usr/local/etc/domjudge
El demonio que ejecutaremos se llama
JUDGEDAEMON, cambiaremos su propietario
chwon juez
/usr/local/bin/judgedaemon
chwon 600
/usr/local/etc/domjudge/dbpassword.secret
chwon juez
/usr/local/etc/domjudge/dbpassword.secret
Probamos a entrar
con el usuario juez
su juez
Editamos el fichero
y cambiamos la IP por la de DOMSERVER
nano dbpasword.secret
Ejecutamos el demonio
judgedaemon
En el DOMSERVER,
entramos como juez, y veremos como en el menu judgehost, se unio un
nuevo judgehost.