====== Contest ======
CMS es un sistema para concursos de programación basado en subtareas en lugar de intentos/tiempo como DOMJudge.
===== Instalación (1.5.dev0) =====
- Sistema: ubuntu20.04 o equivalentes. Las versiones de Python que acepta son limitadas.
- Instalación de CMS
# Install requirements
sudo apt-get install -y \
build-essential \
cgroup-lite \
git \
libcap-dev \
libcups2-dev \
libffi-dev \
libpq-dev \
libyaml-dev \
postgresql-client \
python3-pip \
python3.8 \
python3.8-dev \
sudo \
wait-for-it \
zip
# Optional requirements for specific languages:
# C++ (docs): cppreference-doc-en-html
# Pascal: fp-compiler
# Java: openjdk-8-jdk-headless
# Haskell: haskell-platform
# C#: mono-mcs
# PHP: php7.4-cli
# Python2: python2
# Rust: rustc
# Create cmsuser user with sudo privileges
useradd -ms /bin/bash cmsuser
usermod -aG sudo cmsuser
sudo passwd cmsuser # Set a password for sudo!
# Change user and setup with python
sudo su - cmsuser
git clone --recursive https://github.com/cms-dev/cms.git
cd cms
sudo pip3 install -r requirements.txt
sudo python3 setup.py install
sudo python3 prerequisites.py --yes --cmsuser=cmsuser install
- Configure: move the .conf at ''/usr/local/etc'' and set the password on the database setting. Also, generate a ''secret_key''.
- Create the database
sudo apt-get install postgresql
sudo su - postgres
createuser --username=postgres --pwprompt cmsuser
createdb --username=postgres --owner=cmsuser cmsdb
psql --username=postgres --dbname=cmsdb --command='ALTER SCHEMA public OWNER TO cmsuser'
psql --username=postgres --dbname=cmsdb --command='GRANT SELECT ON pg_largeobject TO cmsuser'
- Inicializar base de datos: ''sudo -u cmsuser cmsInitDB''
- Arrancar los siguientes servicios, manualmente o con servicios systemD:
* cmsAdminWebServer (AWS): para editar concursos y usuarios, panel de administración.
* cmsContestWebServer (CWS): para la interfaz principal del concurso.
* cmsEvaluationService: evalúa la salida dadas las ejecuciones y reglas de corrección.
* cmsLogService: recoge los registros del resto de servicios.
* cmsProxyService: copia los resultados desde CWS hacia RWS. Sin éste, en RWS no aparecerá nada.
* cmsResourceService: muestra todos los servicios y su estado.
* cmsRankingWebServer (RWS): muestra el ránking actual.
* cmsScoringService: calcula la puntuación dada la evaluación.
* cmsWorker (al menos 1): ejecuta los programas enviados por los usuarios.