Раздел eJudge

Запуск Ejudge CGI под Nginx и uWSGI

Предыстория

В проекте algoprog.kz для проверки задач используется система eJudge. У нее есть отдельный web интерфейс, написанный на С, позволяющий в первую очередь управлять и следить за соревнованием. Исторически так сложилось, что эти CGI скрипты запускали из под apache, а я свои проекты запускаю по Nginx. В общем мне захотелось избавиться от apache и научиться запускать CGI скрипты из под Nginx. Далось мне это не так легко.

Дальше

Патч ejudge для algoprog

На algoprog.kz используется немного пропатченая версия ejudge.

Тестировал на версиях 2.3.16 и 2.3.17. Патч добавляет такие функции в еjudge-contests-cmd:

  • dump-languages - получить языки контеста
  • get-contest-status - получить статус контеста
  • get-contest-sched - время старта
  • get-contest-duration - длительность
  • get-contest-description - три предыдущих вместе + название контеста
  • submit-run-v2 - сабмит задачи не по short_name а по id

Дальше...

ставим ejudge на ubuntu

каждый раз ставлю ejudge и каждый раз приходится вспоминать какие пакеты надо поставить и как надо сконфигурировать. в этот раз сохраню лог проделанной работы

тут описано все коротко. полезно будет тому кто уже знаком с установкой. а кто не знаком идет сюда.

у меня стоит убунту 10.04
Linux german-desktop 2.6.32-21-generic #32-Ubuntu SMP Fri Apr 16 08:09:38 UTC 2010 x86_64 GNU/Linux

sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install gettext
sudo apt-get install expat
sudo apt-get install libexpat1-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libncurses5-dev
sudo apt-get install libncursesw5-dev
sudo apt-get install sendmail

вот эти пакеты мне пришлось поставить чтобы все скомпилировалось.

а порядок установки такой:

  1. качаем reuse
  2. я хроню его в папке ~/distr/reuse
  3. заходим в ~/distr/reuse/sources выполняем ./configure && make && make install
  4. заходим в папку куда распаковали eJudge выполняем конфигур
    чтобы было проще создал скрипт my-confugure.sh
  5. выполняем make && make install
  6. заходим в папку /home/$user/ejudge/bin запускаем ./ejudge-setup
  7. сохранив скрипт запускаем sudo ./ejudge-install.sh

my-configure.sh

#!/bin/sh -x

user=german
exec ./configure --prefix=/home/$user/ejudge  --with-reuse=/home/$user/distr/reuse  --enable-charset=utf-8  --enable-ajax --enable-contests-home-dir=/home/$user/judges --enable-local-dir=/var/lib/ejudge --enable-hidden-server-bins "$@"

Компиляция pluginов

Для того чтобы у вас скомпилилось все что лежит в папке plugins надо еще установить dev библиотеки mysql. Не знаю какой именно из них нужен, я установил обои и все заработало.

sudo apt-get install libmysqlclient16-dev libmysql++-dev libmysqld-dev libmysqlclient-dev