Ejudge - это система для проведения различных мероприятий, в которых необходима автоматическая проверка программ.
Система позволяет проведение турниров с автоматической проверкой задач. Такие как: icpc, ioi и другие. Можно проводить несколько турниров одновременно.
Одним из преимуществ этой системы перед другими тестирующими системами является то, что Ejudge имеет хорошую интеграцию с polygon и остается высокопроизводительным даже при большом количестве участников.
С другой стороны, недостатком в этой системе для меня стал высокий порог вхождения и сложная документация.
Все команды которые начинаются с sudo запускаются от имени root или с правами sudo
Более подробно можете прочитать с этих ресурсов
- https://codemore.ru/2014/10/05/ejudge-ubuntu.html”
- https://github.com/blackav/ejudge/blob/master/INSTALL.RUS
- https://ejudge.ru/wiki/index.php/Система_ejudge
1. Подготовка системы
1.1 Установка локали
sudo locale-gen en_US.UTF-8 ru_RU.UTF-8 kk_KZ.UTF-8
sudo update-locale
1.2 Установка необходимых программ и библиотек
sudo apt-get update
sudo apt-get install -y software-properties-common
sudo apt-get install -y --allow-unauthenticated \
wget locales ncurses-base libncurses-dev libncursesw5 \
libncursesw5-dev expat libexpat1 libexpat1-dev \
zlib1g-dev libelf-dev mysql-client-5.7 libmysqlclient-dev \
g++ gawk apache2 gettext fpc mc openjdk-8-jdk-headless \
libcurl4-openssl-dev libzip-dev uuid-dev bison flex \
mono-devel mono-runtime mono-vbnc perl python python3 \
sendmail
1.3 Установка MariaDB
MariaDB можно заменить MySQL
sudo apt-get install -y mariadb-server mariadb-client
1.4 Настройка MariaDB
Запускаем mysql
sudo mysql
Создайте пользователя ejudge с вашим паролем, например X93ZTC3GJm, и дайте необходимые права
CREATE USER 'ejudge'@'%' IDENTIFIED BY 'X93ZTC3GJm';
GRANT USAGE ON * . * TO 'ejudge'@'%' IDENTIFIED BY 'X93ZTC3GJm'
WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE DATABASE IF NOT EXISTS `ejudge` ;
GRANT ALL PRIVILEGES ON `ejudge` . * TO 'ejudge'@'%';
exit;
1.5 Установка Apache2
sudo rm /etc/apache2/sites-enabled/*
Создайте конфигурационнный файл для Apache2
sudo bash -c 'cat > /etc/apache2/sites-enabled/ejudge.conf' << EOF
<VirtualHost *:80>
DocumentRoot /var/www/ejudge/htdocs
ScriptAlias /cgi-bin/ "/var/www/ejudge/cgi-bin/"
<Directory "/var/www/ejudge/cgi-bin">
Options +ExecCGI +FollowSymLinks +Includes
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/ejudge/htdocs">
Require all granted
</Directory>
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
EOF
Активируйте cgi модуль и перезагрузите apache2
sudo a2enmod cgi
sudo service apache2 restart
1.6 Создание группы и пользователя ejudge
sudo groupadd ejudge
sudo useradd ejudge -r -s /bin/bash -g ejudge
1.7 Создание деректив
EJUDGE_HOME
sudo mkdir -p /home/ejudge
sudo chown ejudge:ejudge /home/ejudge
sudo chmod 0755 /home/ejudge
JUDGES_DIR и WORK_DIR
sudo mkdir -p /home/judges /home/judges/test_work
sudo chown ejudge:ejudge /home/judges /home/judges/test_work
sudo chmod 0755 /home/judges /home/judges/test_work
CGI-BIN-DIR и HTDOCS-DIR
sudo mkdir -p /var/www/ejudge/cgi-bin
sudo mkdir -p /var/www/ejudge/htdocs
sudo chmod 0777 /var/www/ejudge/cgi-bin /var/www/ejudge/htdocs
2. Инсталляция системы
Дальше выполняется от имени ejudge
Чтобы переключиться на ejudge
sudo su ejudge
2.1 Скачивание и распаковка
cd /home/ejudge
wget -O ejudge.tar.gz --no-check-certificate http://www.ejudge.ru/download/ejudge-3.8.0.tgz
tar -xvf ejudge.tar.gz
rm ejudge.tar.gz
2.2 Установка Ejudge
cd /home/ejudge/ejudge
./configure --prefix="/home/ejudge/inst-ejudge" \
--enable-contests-home-dir="/home/judges" \
--with-httpd-cgi-bin-dir="/var/www/ejudge/cgi-bin" \
--with-httpd-htdocs-dir="/var/www/ejudge/htdocs" \
--enable-ajax \
--enable-charset=utf-8 \
--with-primary-user="ejudge" \
--with-exec-user="ejudge" \
--with-compile-user="ejudge"
make
make install
Если вы поменяли параметры:
--with-primary-user
,--with-exec-user
,--with-compile-user
, то нужно запустить следующий код. Эта программа установит необходимые права на привилегированные исполняемые файлы.Нужно запустить от имени root
cd home/ejudge/inst-ejudge/bin/
sudo ./ejudge-suid-setup
2.3 Настройка
Запускаете от имени ejudge
cd /home/ejudge/ejudge/
./ejudge-setup
Меняем настройки на верные параметры:
- Testing working dir меняем на
/home/judges/test_work
- Меняем логин и пароль от MySQL
Сохраняем скрипт под названием ejudge-install.sh
2.4 Установка
От имени пользователя root запускаем установку
sudo /home/ejudge/ejudge/ejudge-install.sh
3. Запуск
cd /home/ejudge/inst-ejudge/bin
./ejudge-upgrade-web
./ejudge-control start
Сервис будет доступен по адресу http://localhost/cgi-bin/serve-control