HUSTOJ
Популярная система OJ, многоплатформенная, простая в установке, с базой задач.
Для решения часто встречающихся вопросов рекомендуется ознакомиться с
Часто задаваемыми вопросами (FAQ)
Содержание
Примеры шаблонов
Уведомление о правах
Благодарность за вклад открытых проектов
Журнал обновлений
Инструкция по установке
Инструкция по установке
Внимание!
Просмотр системы
Требования к оборудованию
Установка на кампусной сети
Установка на основе Ubuntu 20.04 Рекомендовано новичкам, все программы самые новые, легче всего установить успешно
Замена источника программного обеспечения Ubuntu
Установка на основе Deepin 20+
Установка на основе CentOS
Установка на основе Docker
Установка на основе других дистрибутивов
Установка через LiveCD
Удаление защиты Aliyun Cloud Shield
Сведения после установки
Сведения после установки
Резервное копирование
Перенос данных
Обновление и обновление версий
Исправление ошибок
Вторичное развитие
Поддержка пожертвований, присоединение к сообществу
Бесплатная база задач
Помощь при возникновении ошибок
Если вы предпочитаете онлайн-чат и хотите получать быстрый отклик на свои вопросы, не против платного обслуживания, присоединяйтесь к официальной QQ-группе 23361372
: Нажмите здесь чтобы присоединиться
Пять встроенных шаблонов
syzoj тема добавлено @renbaoshuo
оригинальная bs3
sweet тема
bshark тема добавлено @yemaster
mdui тема добавлено @renbaoshuo
Измените значение переменной $OJ_TEMPLATE
в файле db_info.inc.php[стандартное расположение /home/judge/src/web/include]
, чтобы использовать указанные выше шаблоны. ## Лицензионное соглашениеHUSTOJ — это свободное программное обеспечение с лицензией GPL.
HUSTOJ использует лицензию GPL (только для оригинальной части кода; в проекте используются компоненты других открытых проектов, следует придерживаться условий их лицензий).
Благодарность за использование следующих и других открытых проектов:
- masteroj uoj loj syzoj zoj qduoj openJudger
- Linux Apache Nginx PHP MySQL MariaDB Memcached
- Bootstrap KindEditor ACEeditor Blockly CodeMirror KaTeX PhpFileManager MDUI
- Sim GCC Clang OpenJDK FreePascal Mono Docker SyntaxHighlighter
Порядок следования произвольный, список приветствуют дополнения.
Внимание: если вы используете этот проект для научных исследований, публикаций или системного развития, укажите в вашем материале или системе, что содержание и идеи были взяты из этого проекта.
Для цитирования рекомендовано использовать статью Проектирование и реализация системы онлайн-оценки на основе открытой облачной платформы.
Если планируете вторичное развитие, Wiki и эта Wiki могут оказаться полезными.
Примечание: GPL гарантирует вам законное игнорирование вышеуказанных замечаний, но не гарантирует защиту от осуждения, хах.По вопросам установки и использования обратитесь к разделу Часто задаваемые вопросы FAQ и Документация или воспользуйтесь поисковыми системами.Если этот проект был полезен для вас, пожалуйста:
- Поддержите проект, нажав на звездочку
**Star**
!
- Сохраните QR-код в нижней части страницы сайта.
- Посетите tk база данных задач, пополняйте баланс для скачивания задач.
- Рекомендуйте этот проект своим коллегам.
- Каждый день сканируйте QR-код ниже для получения подарочных средств через Alipay.
- Укажите адрес этого проекта в списке ваших источников информации.
Поддержите нас, пожалуйста!
Журнал обновлений2023 год
------- | :--: | :---------
10-09 | Обновление | После завершения приватной соревновательной игры создатель может видеть названия задач и ссылки на те задачи, которые используются другими приватными играми. При повторении названий задач автоматически добавляется цифровой суффикс при импорте.
09-29 | Обновление | Поддержка импорта zip-файлов, содержащих json + входные/выходные данные из HOJ.
09-17 | Обновление | При увеличении прав пользователя отправляется напоминание на почту администратора / $OJ_ADMIN для проверки студентов, которые могут самостоятельно повышать свои права.
09-06 | Обновление | Добавлена возможность активации аккаунтов через электронную почту.
08-25 | Обновление | Для вопросов с выбором ответа используется span class=auto_select для создания полей выбора; если в вопросе указано "множественный выбор", создаются флажки.
08-05 | Обновление | В случае успешного выполнения задача теперь получает реальный балл вместо фиксированного значения 100. Это позволяет составлять набор задач так, чтобы общая сумма баллов была равна 100.
08-04 | Обновление | Поддержка множественного выбора с использованием для добавления кнопок выбора.
08-03 | Обновление | При наличии вопроса с выбором ответа ACE автоматически отключается, показывая средний балл. Также добавлены поля выбора типа radio.
07-23 | Патч | Улучшение производительности удаленного судейства remote_bas, обновление некоторых меню на китайском языке, исправление функции ручного судейства.
06-20 | Обновление | Поддержка выбора задач между страницами, сохранение состояния выбранных задач. Оптимизация скрипта установки для Ubuntu 22.04, поддержка мини-сервера с 512МБ памяти.
06-08 | Патч | Улучшение поддержки импорта задач из hydroOJ.
04-21 | Обновление | Поддержка связывания подзадач на основе имени файла. Изменение цвета шрифта на более темный.
04-17 | Обновление | Настройка $OJ_BG="bing" для ежечасного обновления фонового изображения с сайта bing.com.
04-10 | Обновление | Поддержка импорта zip-файлов из syzoj (можно импортировать условия задач и данные). Открыт доступ к API базы данных задач из книги "Основы информационных технологий".
04-07 | Обновление | Начало использования podman как основного контейнерного управления программным обеспечением в скрипте установки для версии 22.04.
04-05 | Обновление | Добавлен параметр OJ_DEDICATE для оптимизации скорости судейства, добавлен podman как альтернатива Docker (благодарность Azure99 за совет).
04-03 | Обновление | Добавлен лимит количества регистраций в час $OJ_REG_SPEED, выключаемый переключатель для ограничения наблюдателей в приватных соревнованиях $OJ_NO_CONTEST_WATCHER.```
03-31 | Обновление | Устранение проблемы с MySQL при установке на системы с менее чем 1 ГБ оперативной памяти, решение проблемы изменения личной информации.
03-27 | Обновление | Улучшение функции выявления плагиата, снижение нагрузки на системные ресурсы. Zzb16888 внёс вклад в реализацию экспорта общего рейтинга.
03-25 | Обновление | Все задачи из TK базы данных, имеющие метку Luogu, стали бесплатными для скачивания.
03-24 | Обновление | Добавлено затемнение и более удобное фоновое изображение, а также график отправки задач для внешнего вида Syzoj.
03-23 | Обновление | Включено отключение модуля RemoteOJ по умолчанию, исправлена remote_hdu.php. Байшо внес вклад в remote-luogu.php.
03-20 | Патч | Устранены проблемы отображения некоторых условий задач из-за неправильного использования знаков больше/меньше.
03-19 | Патч | Оптимизирована частота запросов и логика работы модуля RemoteOJ.
03-06 | Патч | Улучшена форма отображения меток категорий для задач, решаемых через RemoteOJ.
03-01 | Обновление | Отображение заголовков задач в интерфейсе управления тестовыми данными, автоматическое создание 9 пустых файлов при отсутствии Main.c/cc.
02-28 | Патч | Возможна ошибка компиляции при одновременном использовании шаблонов iostream и universal.h (обновлен Dockerfile, перезапущен docker.sh)
02-27 | Обновление | Модуль RemoteJudge (vjudge-hdu)
02-26 | Обновление | Новая категория задач по умолчанию наследует последнюю добавленную задачу.
```02-25 | Обновление | Модуль RemoteJudge (vjudge-poj)
02-14 | Патч | Исправлена проблема сжатия тестовых данных.
2022 год
| Дата | Тип | Описание обновлений |
|--------|--------|---------------------|
| 14-12 | Обновление | Улучшение интерфейса мобильной версии, ограничение входа с одного IP-адреса. |
| 06-12 | В память | Прощаемся со старшим товарищем! |
| 30-11 | Обновление | Внедрена возможность автоматического сохранения временного кода в skin syzoj через localStorage. |
| 18-11 | Обновление | Добавлено отображение состояния сервера на первой странице справочной информации администратора. |
| 16-11 | Патч | Применён патч для /usr/include/c++/9/iostream внутри Docker-контейнеров, чтобы запретить выполнение cout.flush() после endl, что улучшает производительность вывода. |
| 15-11 | Патч | Исправлено сообщение об ошибке "Urgent I/O condition" и "Forbidden system call:35 [35]" при использовании новой версии golang. |
| 12-11 | Патч | Исправлено отсутствие отображения задач с большими номерами после решения определённого количества промежуточных задач. |
| 06-11 | Обновление | Добавлена простая функциональность импорта задач в формате zip (yaml + директория) из HydroOJ, пока не поддерживаются изображения и другие продвинутые возможности. Для старых версий требуется установка php-yaml (sudo apt install php-yaml). |
| 19-10 | Обновление | Замена таблицы рангов на странице домашней страницы syzoj на новость с заголовком "HelloWorld!", которую можно настроить в db_info.inc.php путём изменения значения $OJ_INDEX_NEWS_TITLE. |
| 18-10 | Обновление | Добавлена функциональность импорта списка пользователей в формате CSV. Если содержится китайский текст, он должен быть закодирован UTF-8. |
| 12-10 | Обновление | Добавлена простая функциональность импорта задач в формате ZIP (JSON + директория) из QDUOJ. Пока не поддерживаются изображения и другие продвинутые возможности. |
| 08-10 | Обновление | Включен экспериментальный синтаксис Markdown с помощью $OJ_MARKDOWN, который позволяет использовать [md][/md] для встраивания условий задач и новостей в режиме кода. Также поддерживается . |
| 05-10 | Обновление | Разрешено загружать больше типов файлов в условиях задач и новостях. |
| 19-09 | Обновление | Улучшено оформление страницы функции "露一手". |
| 31-08 | Патч | Из-за использования QQ почты как отправителя, невозможно отправлять электронные письма для восстановления пароля. |
| 30-08 | Патч | Исправлено отсутствие возможности перехода на последнюю страницу для просмотра всех задач в административном интерфейсе. |
| 29-08 | Патч | Автоматическая перезагрузка образа Docker после его переключения на Aliyun. |
| 14-08 | Обновление | Расширение SPJ до RawTextJudge для использования в задачах типа выбор ответа, см. [Выбор ответа](https://github.com/zhblue/hustoj/blob/master/wiki/RTJ.md). |
| 18-07 | Обновление | Архивация мало используемого каталога blockly в blockly.tar.gz. Будущее удаление из web каталога, но оставлен доступ по ссылке в db_info.inc. |php для нуждающихся пользователей.
| 14-07 | Патч | Исправлено открытие форума без тем.
| 10-07 | Патч | Исправлено отсутствие возможности загрузки изображений и компрессии файлов при использовании PHP 8.1 (Ubuntu 22.04).
| 05-06 | Обновление | Добавлено объявление HelloWorld, автоматизация тестирования Cobol и GitHub на основе docker/Ubuntu 22.04.
| 17-05 | Обновление | Обновление Ubuntu 22.04 и PHP 8.1 проводилось целенаправленное исправление.
| 05-09 | Обновление | Добавлена инсталляционная скрипт Баоцзуна для Ubuntu 20.04 с соответствующими инструкциями.
| 01-15 | Обновление | В менеджере тестовых данных добавлена возможность массового переименования .out и .ans файлов.
| 01-12 | Патч | Устранены проблемы в nodejs, добавлены некоторые системные вызовы.
| 01-10 | Обновление | Удалены части устаревшего кода, проведено приведение к совместимости с PHP 8.1, добавлен инсталляционный скрипт для Ubuntu 22.04 LTS.
| 01-03 | Патч | Устранена проблема с путями загрузки изображений.
| 01-01 | Патч | Устранена проблема с невозможностью загрузки функции sqrt при использовании -lm в Docker.
| Январь | Новость | Проголосовано за звезды более 2,5к!
2021 год
| Дата | Тип | Описание обновлений |
|--------|--------|----------------------|
| 12-31 | Обновление | Добавлен скрипт установки UOS20 |
| 12-21 | Обновление | Добавлена возможность сворачивания элементов списка задач plist, а также открытие ссылок в новом окне |
| 12-18 | Обновление | Добавлен перевод страниц admin/problem_list и других страниц администратора |
| 12-16 | Патч | Добавлен новый системный вызов для Loongson |
| 10-17 | Обновление | Добавлена возможность обсуждения для стандартной версии Syzoj |
| 10-16 | Обновление | Установлена стандартная шаблонная версия Syzoj |
| 10-15 | Обновление | Международализация строковых значений шаблона Syzoj |
| 10-12 | Обновление | Запущено облачное решение MyOJ по адресу http://my.hustoj.com/ |
| 09-30 | Обновление | Добавлен программный модуль JudgeHub для создания технологической платформы для облачных решений |
| 09-28 | Обновление | Добавлен уровень дружелюбия $OJ_FRIENDLY_LEVEL для помощи начинающим пользователям в быстрой настройке системы |
| 09-03 | Обновление | Добавлена возможность двойного щелчка администратором для изменения никнейма пользователя |
| 09-01 | Обновление | Добавлен новый параметр OJ_AUTO_RESULT=4, позволяющий автоматически устанавливать результат AC как 4 или 14, где 4 указывает на правильность, а 14 - на прохождение машины с последующей проверкой человеком. Пользователи с правами HTTP_JUDGE могут вручную назначать результат |
| 08-17 | Патч | Исправлены проблемы запуска различных языковых сред, таких как MATLAB, на Ubuntu 20.04; добавлены ограничивающие параметры для Docker и унифицированы переменные окружения |
| 07-11 | Обновление | Добавлена поддержка BBcode на странице новостей, а также добавлен синтаксис `[plist=1000,1001]Название списка задач[/plist]`, который позволяет добавлять списки задач на страницу новостей |
| 07-05 | Патч | Улучшены возможности скрытого режима, такие как копирование задач UOJ, при использовании обращайте внимание на частоту запросов, чтобы не создавать лишней нагрузки на сервер UOJ |
| 06-22 | Патч | Исправлено автоматическое обновление результатов для других шаблонов |
| 06-20 | Патч | Исправлено использование CDN для части статических ресурсов для других шаблонов |
| 06-20 | Патч | Исправлено использование CDN для части статических ресурсов для bs3 |
| 06-19 | Обновление | Добавлена возможность установки списка администраторов, не участвующих в рейтинге, через параметр $OJ_RANK_HIDDEN="'admin','zhblue'" |
| 06-18 | Обновление | Добавлена возможность использования внешнего judge_client для оценки задач внутри контейнера Docker, что облегчает обновление judge_client. В конфигурационном файле judge.conf добавлен параметр OJ_INTERNAL_CLIENT=1 |
| 06-16 | Обновление | Добавлена возможность использовать "tpj" как имя файла для специального тестового модуля, основанного на testlib.h, при наличии файла tpj он будет использоваться вместо spj || 06-12 | Обновление | Добавлена возможность настройки уровня оптимизации компилятора GCC/G++, по умолчанию `-O2`, но можно переопределить через параметр `OJ_CC_OPT` |
| 06-06 | Обновление | На Ubuntu 20. 04 добавлена возможность использования стандарта C17 для компиляции C-кода, можно переопределить через параметр `OJ_CC_STD` |
| 06-05 | Обновление | На Ubuntu 20. 04 добавлена возможность использования стандарта C++17 для компиляции C++-кода, можно переопределить через параметр `OJ_CPP_STD` |
| 05-02 | Патч | Запрещено просматривать исходный код задач, используемых во время проведения соревнований, до начала соревнований, чтобы избежать копирования старого кода во время тренировок |
| 04-08 | Обновление | Добавлена возможность использования опционального Docker как внешнего контейнера `judge_client` для повышения безопасности. [Пример использования](https://github.com/zhblue/hustoj/blob/master/wiki/FAQ.md#python-валидация-в-представлении-и-других-валидациях) |03-26 | Обновление | Введено новое право типа VIP. Аккаунты с правами VIP могут участвовать во всех приватных соревнованиях, названия которых содержат метку `[VIP]`.
03-08 | Патч | Устранены проблемы при запуске sqlite3 в Ubuntu 20.04
02-06 | Обновление | Новый шаблон mdui
доступен для использования. Для активации нового шаблона необходимо изменить файл /home/judge/src/web/include/db_info.inc.php
, установив значение $OJ_TEMPLATE="mdui"
. (Для внутренней сети добавьте в конец файла /home/judge/src/web/include/db_info.inc.php
строку $MDUI_OFFLINE=true;
) (Автор: @renbaoshuo)
01-01 | Обновление | Новый шаблон syzoj
доступен для использования. Для активации нового шаблона необходимо изменить файл /home/judge/src/web/include/db_info.inc.php
, установив значение $OJ_TEMPLATE="syzoj"
(Автор: @renbaoshuo)
2020 год
Дата | Тип | Обновление
----|-----|---------
12-30 | Обновление | Новая версия wiki была перемещена в этот репозиторий и доступна по адресу .
12-29 | Обновление | При импорте/экспорте FPS (xml) добавлено имя файла с возможностью сортировки по умолчанию.
12-28 | Обновление | Добавлена возможность указывать баллы тестовых данных вручную, где имя файла test01[60].in означает, что первая тестовая группа имеет 60 баллов.
12-27 | Патч | Устранено преждевременное завершение времени выполнения на Loongson из-за системных вызовов.
12-21 | Патч | Устранено отсутствие возможности добавления задач вручную.
12-07 | Обновление | HTTP-судья может ограничивать диапазон задач, которые могут быть получены через учетную запись problem_start/problem_end, а также использовать HTTP_DOWNLOAD=0 в judge.conf для более эффективной работы судейских серверов при невозможности обновления данных.
Декабрь | Хорошие новости | Превышено количество звезд 2000!
11-30 | Обновление | Оптимизация скрипта установки для Raspberry Pi 4, исправление уязвимостей и объединение обновлений относительно скачивания рейтингового файла.
11-29 | Обновление | Оптимизация способа предоставления входных данных для повышения общего уровня производительности судейства.
11-28 | Патч | Исправление ошибок компиляции C++ в системах выше 18.04, а также попытка поддержки вывода китайского текста в C/C++.
11-22 | Патч | Исправление некоторых RuntimeErrors и более рациональное управление временем выполнения.
09-23 | Обновление | Оптимизация скриптов установки для решения проблем установки в системах 18.04/20.04 из-за медленного доступа к GitHub внутри страны.
09-20 | Патч | Исправление проблемы неправильного списка задач в приватных соревнованиях.
08-08 | Патч | Добавлено окружение "PYTHONIOENCODING=utf-8", чтобы исправить проблему вывода китайских символов в Python3.
07-13 | Обновление | Разрешено длительное поддержание состояния входа, администратор может самостоятельно определять время. Включается путём изменения файла /home/judge/src/web/include/db_info.inc.php, установкой OJ_COOKIE_LOGIN=true; а также определением OJ_KEEP_TIME как **максимального времени, которое можно поддерживать после последнего входа**.
07-12 | Обновление | Возможность загрузки набора тестовых данных при ошибке WA, если SHOW_DIFF активирован. Загружаемый файл zip-формата включает in/out файлы.
02-10 | Обновление | Новый шаблон bshark теперь доступен. Для его использования достаточно изменить файл /home/judge/src/web/include/db_info.inc.php и установить $OJ_TEMPLATE="bshark".
01-31 | Обновление | [@melongist](https://github.com/melongist) значительно улучшил внешний вид страниц.
01-27 | Обновление | Увеличение временного лимита задач до типа float с точностью до трёх знаков после запятой, то есть миллисекунды (ms).01-26 | Обновление | Добавлена возможность добавления нескольких объектов UDP-уведомлений для каждого Web, каждый сервер судейства может слушать сообщения на разных портах UDP. Тестирование на Alibaba Cloud и Tencent Cloud прошло успешно.
01-23 | Обновление | Изменение [кода интеграции Moodle](https://github.com/zhblue/hustoj/blob/master/wiki/MoodleIntegration.md), реализация автоматической проверки домашних заданий системы HUSTOJ в Moodle.| Дата | Описание |
|------|----------|
| 01-20 | Обновление | Удаление лишних записей субмиссий для режима `noip`, возможность задания пользовательского ключевого слова `noip`, добавление индекса `user_id` таблицы `privilege`. |
2019 год
Дата | Тип | Обновление
----- | :--: | :---------
12-19 | Обновление | Добавлены комментарии в конфигурационном файле `judge.conf`, предоставлены переменные номера регистрации `$OJ_BEIAN`. Улучшена гибкость системы с учётом времени выполнения задач.
11-23 | Хорошие новости | Проект `hustoj` занял **третье место** на первом глубинном конкурсе по разработке программного обеспечения.
11-21 | Патч | Исправлена возможность выбора запрещённого языка после нажатия кнопки "Редактировать" во время соревнований. [Благодарность профессору Xie из университета имени Xiangtan]
11-20 | Обновление | Вывод каждого тестового примера (OK/FAIL/TIME LIMIT EXCEEDED...) при сравнении результатов выполнения задач (`OJ_SHOW_DIFF`).
11-16 | Оптимизация | [@muzea](https://github.com/muzea) реализовал механизм синхронизации данных между GitHub и [Gitee](https://gitee.com/zhblue/hustoj) и внедрил CI.
11-13 | Обновление | Отображение имени входного файла (infile) при ошибке выполнения программы (RuntimeError).
10-30 | Обновление | Внедрён переключатель режима `$OJ_OI_MODE`.
10-29 | Обновление | Усилен контроль за поведением веб-приложения в режиме OI.
10-03 | Обновление | Изменены скрипты установки для проверки совместимости с версией Deepin 15.11.
10-03 | Патч | Валидация CSRF на странице регистрации.
09-23 | Патч | Исправлено отсутствие обновления никнеймов участников после завершения соревнований, а также сообщено пользователям группы о необходимости обновления для решения проблемы 504 timeout.
09-21 | Патч | Исправлено ограничение повторной установки некоторых скриптов.
08-06 | Обновление | Поддержка использования UDP-пакетов для триггеринга запросов на проверку задач, что позволяет быстро получать результаты через Web.
07-26 | Обновление | Поддержка серверов Huawei Kunpeng, aarch64. Благодарность компании Depth Technology и облачного сервиса Huawei Cloud за предоставление серверов.
07-06 | Обновление | Для соревнований с названием, содержащим слово `NOIP`, результаты становятся доступны только после окончания соревнования.
07-04 | Обновление | Настройка переменных `$OJ_MARK="mark"` для отображения баллов, `$OJ_MARK="percent"` для отображения процента правильных ответов (AC) или процентов неверных ответов (WA), а также `$OJ_MARK=""` для отображения только финального результата.
06-24 | Документация | Разделение главной страницы проекта на части, корректировка порядка и содержания, добавление таблицы содержания.
06-12 | Обновление | Добавлены языки программирования `Fortran` и `Matlab(Octave)`. Исправлено удаление статистики после окончания соревнования, а также исправлены некоторые случаи ошибки RE.
05-18 | Корректировка | Неправильное отображение FB начиная с версий 16.04.[Интегрированная портативная версия Windows на основе OpenJudger](https://github.com/Azure99/WinHustOJ/releases) [Университетская сеть Cuz](https://pan.cuz.edu.cn:8443/share/b02149ee631b2776e93590b461)
05-17 | Корректировка | Улучшение AJAX для снижения нагрузки на веб-сервер и повышения эффективности запросов на проверку задач.
05-15 | Корректировка | Исправлены случаи ошибочного распознавания TLE как RE, особенно на Ubuntu 18/19 и Deepin 15.9/15.10. Предположительно связано с компиляторами gcc/g++.
05-07 | Обновление | [@muzea](https://github.com/muzea)/com/muzea) предоставляет пакеты установки Debian (`*.deb`),
04-13 | Обновление | Поддержка проверки решений с использованием SQL, основанной на `SQLite3`, поддержка процессора Loongson 3A3000 (благодарим компанию Jiangsu Aerospace Longmen Information Technology за предоставление сервера на основе Loongson! ).
03-14 | Обновление | Основная ветка поддерживает Raspberry Pi (arm), Loongson (loongson-2f), i386, x86_64. ## Инструкция по установке
Видеоуроки
Установка на Ubuntu 18.04 (https://www.bilibili.com/video/BV1Mp4y1C7Xx)
Внимание
В зависимости от выбранной версии дистрибутива используйте один из трёх скриптов.
Не доверяйте длинным руководствам, найденным через Baidu, они устарели на несколько лет назад и могут привести к проблемам с компиляцией, отображением, обновлением и прочее.
Особенно не устанавливайте Apache
, если он уже установлен, деактивируйте или удалите его, чтобы избежать конфликта портов.
Не используйте LNMP
, LAMP
, Cpanel
или другие панели программ, предоставляющих MySQL
, Nginx
, Apache
, PHP
. Установочный скрипт включает все необходимые среды.
Пользователям Tencent Cloud рекомендуется заменить источник программного обеспечения, добавьте multiverse
.
Пользователям Alibaba Cloud рекомендуется найти информацию по запросу АлиБаба Облачные Сервисы 80 порт
.
Установка на основе Ubuntu 22.04
Первый выбор для всех облачных сервисов, самый простой, высокий процент успешной установки, наибольшее количество недавних развертываний, идеально для разработки прототипов
Поддерживает только чистую систему Ubuntu, не поддерживает WSL и Docker
Рекомендованная конфигурация сервера — двойное ядро, 2 ГБ оперативной памяти
wget http://dl.hustoj.com/install.sh
sudo bash install.sh
```### Установка на основе Ubuntu 20.04
**Поддерживает только чистую систему Ubuntu, не поддерживает WSL и Docker**
**Рекомендованная конфигурация сервера — одно ядро, 2 ГБ оперативной памяти**
```bash
wget http://dl.hustoj.com/install.sh
sudo bash install.sh
После выполнения скрипта можно будет получить доступ к сайту, введя IP-адрес в браузере. Если сайт недоступен, проверьте настройки политики доступа и файрвола, чтобы убедиться, что открыт порт 80.
Примечание: Ubuntu 20.04 на Alibaba Cloud имеет предустановленный apparmor
, который может вызывать проблемы с процессами systemd
и umount
, потребляющими 100% CPU.
Возможные решения:
- Установите docker (выполните
docker.sh
в директории judge_client
) и активируйте OJ_USE_DOCKER=1
.
-
Удалите Aliyun Shield.
Установка на основе Ubuntu 18.04
Скоро выйдет из поддержки, не рекомендуется
wget http://dl.hustoj.com/install.sh
sudo bash install.sh
Установка на кампус-сетях
Недавно доступ к SVN через GitHub замедлился, поэтому можно скачать версию tar.gz
с раздела Releases и использовать скрипт *-bytgz.sh
из директории install
.
Однако стоит отметить, что такие установки требуют ручного обновления при последующих обновлениях системы.
На примере Ubuntu 18.04
: скачайте Source code(tar.gz)
с раздела Releases, затем подготовьте install-ubuntu18-bytgz.sh
.```bash
sudo bash install-ubuntu18-bytgz.sh 19.06.04.tar.gz
*Сначала прочтите*[Руководство по установке HUSTOJ с помощью панели управления BT v0.2.docx](https://github.com/zhblue/hustoj/raw/master/docs/%E5%BD%A2%E5%BC%8F%E5%AE%9A%E4%B9%89HUSTOJ%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97v0.2.docx)
```bash
wget http://dl.hustoj.com/install-ubuntu-bt.sh
sudo bash install-ubuntu-bt.sh
Изменение источников программного обеспечения в Ubuntu
Два следующих скрипта можно использовать по выбору. Для пользователей, использующих облачное зеркало Tencent Cloud и оригинальные образы Ubuntu, рекомендуется использовать второй скрипт.
wget http://dl.hustoj.com/sources.list.sh
sudo bash sources.list.sh
wget http://dl.hustoj.com/update-sources-ubuntu.sh
sudo bash update-sources-ubuntu.sh
Установка на основе Deepin 20+
Для внутреннего использования на рабочем столе в Китае Deepin 20+
(включает QQ, WeChat, WPS для удобства тестирования задач, проверено на последней версии).
wget http://dl.hustoj.com/install-deepin20+.sh
sudo bash install-deepin20+.sh
Установка на основе UOS 20+
Для внутреннего использования на рабочем столе в Китае UOS 20+
(включает QQ, WeChat, WPS для удобства тестирования задач, проверено на последней версии).
wget http://dl.hustoj.com/install-uos20.sh
sudo bash install-uos20.sh
Установка на основе CentOS
Учитывая изменения политики выпуска CentOS, его будущее непредсказуемо, поэтому не рекомендуется.Если вам приходится использовать CentOS 7 (некоторые языки могут не поддерживаться, но некоторые серверы с картами RAID требуют установки CentOS), вы можете использовать следующий скрипт для быстрой установки OJ:```bash
wget https://raw.githubusercontent.com/zhblue/hustoj/master/trunk/install/install-centos7.sh
sudo bash install-centos7.sh
Пользователям REDHAT / CentOS следует обратиться к
<https://github.com/zhblue/hustoj/blob/master/wiki/CentOSx86_64.md>
<https://github.com/zhblue/hustoj/blob/master/wiki/CentOS.md>
### Установка на основе Docker
Установка на основе Docker позволяет быстро протестировать все возможности HUSTOJ, **возможность возникновения неизвестных проблем, пожалуйста, внимательно рассмотрите использование в производственной среде!!**
Использует подготовленный Docker-образ (GitLab CI/CD система автоматически создает образ)
```shell
docker run -d \
--name hustoj \
-p 8080:80 \
-v ~/volume:/volume \
registry.gitlab.com/mgdream/hustoj
Учитывая то, что веб-интерфейс/база данных/система оценки полностью упакованы в одном образе, расширять его невозможно, поэтому не рекомендуется использовать этот образ для распределенного тестирования. Кроме того, не используйте SHM файловой системы внутри Docker, так как это может привести к ошибкам из-за недостатка места в оперативной памяти и невозможности монтирования песочницы. После развертывания используйте браузер для доступа к http://localhost:8080
Установка с использованием Docker (распределенная)Распределённые изменения в Docker были выполнены; в настоящее время поддерживаются базовые образы web/mysql/judge, а также конфигурация через переменные окружения. Образ judge всё ещё находится в состоянии незавершённости, поэтому, если вы способны, пожалуйста, доработайте его в разделе docker/judge
.Перед запуском локально вам потребуется создать Docker-сети командой docker network create hustoj
. Используйте следующие команды для запуска соответствующих служб.
docker run -d \
--network hustoj \
--name hustoj.mysql \
-e MYSQL_USER=<mysql_username> \
-e MYSQL_PASSWORD=<mysql_password> \
-v mysql:/var/lib/mysql \
registry.gitlab.com/mgdream/hustoj:mysql
Базовый образ — это mysql:5.7
, все переменные окружения наследуются от официального образа mysql:5.7. По умолчанию предоставляется база данных jol
.
docker run -d \
--network hustoj \
--name hustoj.web \
-e DB_HOST=<mysql_server> \
-e DB_NAME=<mysql_database> \
-e DB_USER=<mysql_username> \
-e DB_PASS=<mysql_password> \
-v data:/home/judge/data \
-p 80:80 \
registry.gitlab.com/mgdream/hustoj:web
Базовый образ — это ubuntu:18.04
, версия PHP — php7.2
. Все переменные окружения наследуются из файла db_info.inc.php
. В будущем будут дорабатываться переменные окружения для PHP и Nginx.
Установка с использованием других дистрибутивов
Другие дистрибутивы, такие как Debian10+ (Debian10/11), raspbian8/9 для Raspberry Pi, установочные скрипты для Ubuntu14.04 находятся в директории install
, но могут содержать некоторые недочёты, требующие частичной ручной корректировки после установки.
https://www.youtube.com/watch?v=hRap7ettUWc
Пользователи Raspberry Pi должны использовать исходный код в ветке rpi
(экспериментальный характер) для ручного создания сервиса web
, а также для компиляции и установки judged
и judge_client
из каталога core
.Дополнительные методы установки
Установка с помощью LiveCD
Скачивание LiveCD Для пользователей Linux, работающих в локальной сети или без доступа к Интернету, рекомендуется использовать этот вариант при невозможности использования стандартной версии Ubuntu.
HUSTOJ_LiveCD (отправьте "livecd" в WeChat-канал onlinejudge
, чтобы получить ссылку для скачивания с Baidu Cloud).
Инструкции по использованию можно найти в README внутри ISO-образа, либо обратиться к краткому описанию LiveCD. Новичкам в Linux рекомендуется ознакомиться с "Поваренной книгой Бёрта".
Для создания системы требуются задачи, посетите библиотеку задач TK и проект freeproblemset
Удаление защиты Aliyun Shield
Выполните следующие команды для удаления защиты Aliyun:
# Установка скриптов удаления
wget http://update.aegis.aliyun.com/download/uninstall.sh
chmod +x uninstall.sh
./uninstall.sh
wget http://update.aegis.aliyun.com/download/quartz_uninstall.sh
chmod +x quartz_uninstall.sh
./quartz_uninstall.sh
# Удаление остатков
pkill aliyun-service
rm -rf /etc/init.d/agentwatch /usr/sbin/aliyun-service
rm -rf /usr/local/aegis*
Перезапустите систему и выполните команду ps -aux | grep -E 'aliyun|AliYunDun'
. Если процессов, связанных с защитой Aliyun, нет, удаление было успешным.
После установкиPython пользователям обратите внимание на этоmd#Python-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-ваш-где-ваш-```markdown
worker_processes 8; # Здесь число 8 можно заменить на целое число, кратное количеству ядер процессора.
events {
(worker_connections 2048;)
(multi_accept on;)
}
Если вы столкнулись с проблемой загрузки файла с результатами соревнований в формате `xls`, когда количество участников велико, то вам следует отредактировать файл конфигурации Nginx, расположенный по пути `/etc/nginx/sites-enabled/default`. Добавьте следующие строки после строки `fastcgi_pass`.
fastcgi_buffer_size 128k;
fastcgi_buffers 32 32k;
Сохраните изменения и перезапустите сервис `nginx`.
## Бэкап
Пользователи, использующие скрипты установки, могут использовать скрипт `bak.sh` из директории `install` для создания бэкапа.
sudo bash /home/judge/src/install/bak.sh
Бэкап будет создан в директории `/var/backups/`, название архива будет иметь вид `hustoj_%Y%m%d.tar.bz2`.
Для автоматизации процесса бэкапа воспользуйтесь командой `sudo crontab -e` для создания задачи cron. В некоторых скриптах установки уже прописана возможность автоматического бэкапа, но может потребоваться выполнение вышеуказанной команды для активации этой возможности.
## Перенос на CentOS
Если требуется перенос системы (например, с Ubuntu на CentOS), попробуйте использовать скрипт `backup+.sh` для создания бэкапа, который создаст архив в формате *.tar.gz. Архив будет расположен в директории `/home/judge/backup` и будет иметь название вида `+%Y-%m-%d-%H-%M-%S.tar.gz`.
```shell
sudo bash /home/judge/src/install/backup+.sh #Архив будет создан в директории `/home/judge/backup` с названием вида +%Y-%m-%d-%H-%M-%S.tar.gz
Перенос данных
Перед началом переноса данных рекомендуется провести полную установку и тестирование новой системы. После успешного завершения тестирования можно начинать перенос данных.
Копируйте нужный вам архив в директорию /home/judge/backup
на целевой системе и запустите следующий скрипт для восстановления данных:```shell
cd /home/judge/backup
sudo bash /home/judge/src/install/restore.sh hustoj_%Y%m%d.tar.bz2
Первый параметр этого скрипта — это имя архива, который вы хотите восстановить. Если параметр не указан, скрипт восстановит самый последний архив по алфавитному порядку.
* Для архивов, созданных с помощью `backup+.sh`, восстановление осуществляется через `restore+.sh`.
```shell
cd /home/judge/backup
sudo bash /home/judge/src/install/restore+.sh +%Y-%m-%d-%H-%M-%S.tar.gz
Обновление и Улучшение
Пользователи, использующие скрипты установки, могут использовать скрипт update-hustoj
из директории install
для обновления системы.
sudo bash /home/judge/src/install/update-hustoj
После выполнения скрипта обновления возможно потребуется войти в административную панель web-интерфейса и выполнить обновление базы данных.
- Все исторические версии открытого исходного кода Hustoj, если они не содержали изменений в структуре базы данных, могут быть обновлены до самой последней версии без потери данных, даже если они были выпущены более десяти лет назад.
- При возникновении вопросов относительно обновления старых систем обратитесь за помощью в официальную группу поддержки.
Если случайно испортили код `web`, воспользуйтесь скриптом `fixing.sh` в директории `install`.
```bash
sudo bash /home/judge/src/install/fixing.sh
Поддержка проекта, присоединение к сообществуДля получения помощи при использовании системы, пожалуйста, присоединитесь к пользовательской группе QQ 23361372
. При запросе указывайте ответ на вопрос: [образовательное учреждение/компания/организация] имя
.
Или присоединитесь к TG каналу.
Групповой доступ предоставляет базу задач, установочные диски и документацию. В группе можно обсуждать вопросы и получать консультации. Новым участникам группы рекомендуется изменить свое имя участника через 5 минут после входа.
Пожалуйста, уважайте труд разработчиков открытого программного обеспечения. Нехорошие высказывания могут привести к удалению из группы.
Вы можете поддержать этот проект следующими способами:
- Получите и используйте али付宝红包
-
Пополните баланс на сайте TK题库 для скачивания задач
-
Нажмите Star в правом верхнем углу, чтобы поддержать проект
-
Сохраните страницу с QR-кодом WeChat и ссылкой на официальный аккаунт в вашей установленной системе
-
Укажите ссылку на наш проект в ваших научных работах
-
Рекомендуйте этот проект другим преподавателям и студентам
Демонстрация системы
Фронтальная демонстрация
Установка на Loongson
Функционал административной панели
Требования к оборудованию
Процессор с одним ядром CPU, 1 ГБ оперативной памяти, 20 ГБ жесткого диска, сетевой пропускной способностью 1 Мбит/с — достаточно для использования до 20–50 человек.
Каждые 50 новых пользователей требуют увеличения количества ядер процессора, объема оперативной памяти, места на жестком диске и пропускной способности сети в соотношении 1:1.
Система может стабильно работать даже на минимальных учебных машинах от АлиБаба Облако, Тencent Облако, Huawei Облако.
Для более строгих тестов производительности QPS обратитесь к @muzea's HUSTOJ web benchmark tool.
Бесплатная база данных задач
Перейдите к проекту FPS для бесплатного скачивания примеров.
Перейдите к разделу TK题库免费区 FQ для доступа к архивированной версии Google Code, чтобы скачать старую версию FPS общего пользования.
Рекомендованные облачные провайдеры
BandwagonHost
UCloud годовая акция
Промо-акция Fast Cloud Servers## Рекомендованные открытые IDE
Red Panda C++
Комментарии ( 0 )