Инсталляция системы ejudge

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Инсталляция/Инсталляция из исходных текстов/Инсталляция системы ejudge

Предполагается (если не указано особо), что все действия совершаются от имени юзера ejudge

Компиляция и установка

EJUDGE_HOME - Домашний каталог пользователя ejudge (который вы указывали при создании)

Создайте каталог /home/judges и дайте ему права пользователя ejudge. Делается это так (от имени root):

 # mkdir -p /home/judges
 # chown ejudge:ejudge /home/judges
 # chmod 755 /home/judges

Если нет прав root - то можно создавать каталог EJUDGE_HOME/judges. Далее я буду называть этот каталог JUDGES_DIR

Скачать архив с исходными текстами системы можно в архиве программ. Рекомендуется всегда использовать последнюю версию, информацию о которой можно найти на Главной странице.

При помощи wget (VERSION - версия):

 # wget http://www.ejudge.ru/download/ejudge-VERSION.tgz

Для установки - следующие команды:

 # tar -xvzf ejudge-VERSION.tgz
 # cd ejudge
 # ./configure PARAMS
 # make && make install

PARAMS - параметры конфигурации

Ниже - некоторые параметры (которые обычно требуются)

  • --prefix=EJUDGE_PREFIX - корневой каталога программы. Если не задавать его, могут возникнуть проблемы. PREFIX предлагается задать как EJUDGE_HOME/inst-ejudge
  • --enable-contests-home-dir=JUDGES_DIR - Каталог для контестов. JUDGES_DIR мы уже задавали выше.
  • --with-httpd-cgi-bin-dir=CGI-BIN-DIR - каталог cgi-bin вашего сервера. Где он находится - можно узнать в конфигурации вашего веб-сервера.
  • --with-httpd-htdocs-dir=HTDOCS-DIR - каталог, в который кладутся веб-файлы (.html, .php, etc). Где он находится - опять же написано в конфигурации вашего сервера. В HTDOCS-DIR/ejudge будут помещены несколько js и css файлов
  • --enable-ajax - включает движок ajax для системы

Параметры, которые необязательно ставить:

  • --enable-charset=ENCODING - использование определенной кодировки в программе. ENCODING может быть, например, "UTF-8" или "KOI8-R". Значение по умолчанию - UTF-8.
  • --with-mysql=MYSQL-DIR - Каталог с mysql. Если компилировали mysql с нестандартным префиксом, то надо его указать. Вообще это необязательный параметр, MySQL может понадобиться только для некоторых необязательных плагинов

Что бы узнать все остальные параметры надо набрать:

 # ./configure --help

Если в процессе компиляции возникла ошибка, надо перепроверить конфигурационный скрипт или обратиться к разработчику.

Итак, мы выполнили ./configure, make, make install. Но это еще не все.

Настройка

Теперь надо создать конфигурацию ejudge. Для этого предназначен скрипт ejudge-setup

 # ./ejudge-setup

Заходим по очереди в каждый пункт меню и меняем все, что неверно, на верные параметры.

Некоторые комментарии:

 1. В панели "Ejudge Settings" есть пункт меню "Create Workdisk?" Если вам недоступен loop (например, на некоторых серверах VDS), 
 то укажите там "no", вернитесь в меню "Edit Path" и напишите в "Testing Working Dir" какой-нибудь доступный (желательно пустой)
 каталог.
 2. Меню "Edit Administrator Identity" надо заполнять так:
 * ID: 1
 * Login: ваш логин (например, Admin)
 * E-Mail - ваша почта
 * Name - какое имя будет отображаться
 * Password - ваш пароль (надо ввести два раза)

После заполнения сохраняем файл пунктом "Save Setup Script", затем от пользователя root запускаем установку

 # ./ejudge-install.sh

Осталось лишь выставить права на доступ к ссылкам на исполняемые файлы, которые установил ejudge:

 # cd CGI-BIN-DIR
 # chmod 755 new-* judge master register serve-control team users

Запуск

Теперь можно запустить ejudge (это делается только от имени ejudge!):

 # cd EJUDGE_PREFIX/bin
 # ./ejudge-control start

Если после этого ваш вебсервер выдаёт ошибку - попробуйте удалить все файлы в CGI_BIN_DIR (на самом деле это ссылки на файлы) и скопировать туда файлы из EJUDGE_PREFIX/libexec/ejudge/cgi-bin:

 # cd CGI_BIN_DIR
 # rm -rf new-* judge master register serve-control team users
 # cp EJUDGE_PREFIX/libexec/ejudge/cgi-bin/* ./

Если и после этого появляется ошибка - стоит обратиться к разработчику

Более подробно: [1]