ejudge - це система для проведення різних заходів, в яких необхідна автоматична перевірка програм. Система може застосовуватися для проведення олімпіад та підтримки навчальних курсів.
Система ejudge складається з декількох програм, причому інтерфейс учасника турніру і адміністратора турніру надається через WEB. Програми master, judge, team, register, users є CGI-програмами, тобто запускаються з-під httpd-сервера.
Перевірте, що ejudge доступна в зібраному вигляді в репозиторії Вашого дистрибутива. В цьому випадку краще використовувати версію з дистрибутива. Якщо ж готової версії ejudge для Вашого дистрибутива немає, необхідно скомпілювати систему з вихідних кодів. (Зауваження: на момент написання статті для дистрибутивів Debian / Ubuntu пакета з системою ejudge не існує.)
Нижче наведено процес установки і настройки системи ejudge з вихідних кодів для Ubuntu Linux. При установці системи були використані матеріали з офіційного сайту тестує системи ejudge (www.ejudge.ru) і ejudge Wiki.
Підготовка робочого середовища для установки ejudge
Підготовка робочого середовища складається з наступних кроків:- Необхідно встановити такі сторонні програми і бібліотеки:
- bison
- flex
- ncurses, ncurses-devel (в Debian / Ubuntu це: ncurses-base, libncurses, libncurses-dev, libncursesw, libncursesw-dev)
- expat, expat-devel (в Debian / Ubuntu це: expat, libexpat, libexpat-dev)
- Створюємо користувача ejudge групи ejudge з домашнім каталогом / home / ejudge /:
# Groupadd ejudge
# Useradd ejudge -s / bin / bash -m -d / home / ejudge -g ejudge - Перемикаємося на новоствореного користувача, для цього в консолі потрібно набрати:
# Su ejudge - Виконуємо інсталяцію бібліотеки reuse.
- Викачуємо в домашній каталог користувача ejudge архів з вихідними файлами поточної версії бібліотеки reuse з головної сторінки проекту.
- В консолі виконуємо наступне:
$ Tar -xvzf reuse-VERSION.tgz
$ Cd reuse / source
$ ./configure
$ make
$ Make install
Установка системи ejudge
Передбачається (якщо не вказано особливо), що всі дії відбуваються від імені користувача ejudge- Створіть каталог / home / judges і дайте йому права користувача ejudge, набравши в консолі від імені root: # mkdir -p / home / judges
# Chown ejudge: ejudge / home / judges
# Chmod 755 / home / judges - Скачайте в домашній каталог користувача ejudge архів з вихідними файлами поточної версії ejudge з головної сторінки проекту.
- Для установки ejudge наберіть в консолі наступні команди:
$ Tar -xvzf ejudge-VERSION.tgz
$ Cd ejudge
$ ./configure PARAMS
$ make make install
У нашому випадку PARAMS набуває таких значень:
включає движок ajax для системи
Таким чином команда ./configure матиме вигляд:
$ ./configure --prefix = / home / ejudge / inst-ejudge --with-reuse = / home / ejudge / reuse --enable-contests-home-dir = / home / judges --with-httpd-cgi- bin-dir = / usr / lib / cgi-bin --with-httpd-htdocs-dir = / var / www / --enable-ajax
Тут перераховані обов'язкові параметри для конфігурації. Щоб дізнатися інші параметри необхідно виконати:
$ ./configure --help
ЗАУВАЖЕННЯ:
Користувач ejudge повинен володіти правами доступу до каталогів веб-файлів і cgi-bin сервера apache2. Якщо це не виконується, то встановіть права доступу до цих каталогів.
Для початку необхідно створити конфігурацію ejudge. Для цього призначений скрипт ejudge-setup:
Запуск ejudge проводиться від імені ejudge:
$ Cd / home / ejudge / inst-ejudge / bin /
$ ./ejudge-control start
ЗАУВАЖЕННЯ: Якщо після цього ваш вебсервер видає помилку - спробуйте видалити всі файли в каталозі cgi-bin (насправді це посилання на файли) і скопіювати туди файли з / home / ejudge / inst-ejudge / libexec / ejudge / cgi-bin:
$ Cd / usr / lib / cgi-bin
$ Rm -rf new- * judge master register serve-control team users
$ Cp EJUDGE_PREFIX / libexec / ejudge / cgi-bin / * ./
Тепер можна в рядку URL браузера (природно, httpd-сервер повинен бути запущений) вказати:
додаток
Налаштування веб-сервера Apache2
Для роботи ejudge рекомендується web-сервер apache2 (можлива робота і з сервером apache).
- Знайдіть в файлі конфігурації директиву
, де $ в нашому випадку - це / usr / lib / cgi-bin. Фрагмент конфігураційного файлу повинен виглядати наступним чином:
AllowOverride None
Options FollowSymLinks Includes
AddOutputFilterByType INCLUDES text / html
Order allow, deny
Allow from all
AddType text / html .shtml
AddOutputFilter INCLUDES .shtml
Alias / ejudge / / home / ejudge / inst-ejudge / share / ejudge / style /
AllowOverride None
Order allow, deny
allow from all
Патч до ядра Linux
Ejudge підтримує безпечний режим запуску програм, в якому запускається програма не може виконувати ніяких системних викликів. Для підтримки безпечного запуску необхідна установка ядра зі спеціальним патчем. Завантажити патч і подивитися документацію по установці патча можна на головній сторінці проекту.
Патч не є обов'язковим для роботи системи ejudge. Крім того, патч може бути доданий навіть після компіляції системи ejudge. Як тільки при роботі ejudge буде виявлено, що підтримуються можливості, що надаються патчем, вони будуть використовуватися системою ejudge.