Herramientas de usuario

Herramientas del sitio


cms

Contest

CMS es un sistema para concursos de programación basado en subtareas en lugar de intentos/tiempo como DOMJudge.

Instalación (v1.5.1)

  1. Sistema: ubuntu24.04 o equivalentes. Las versiones de Python que acepta son muy limitadas.
  2. Verificamos que cgroup2 está habilitado, y no la versión 1 también. Podemos probar con el siguiente comando:
$ grep cgroup /proc/mounts
cgroup2 /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot 0 0

Si no es así, hay que deshabilitarlo, editando /etc/default/grub como se muestra y ejecutando sudo update-grub:

-GRUB_CMDLINE_LINUX_DEFAULT="systemd.unified_cgroup_hierarchy=0"
+GRUB_CMDLINE_LINUX_DEFAULT="systemd.unified_cgroup_hierarchy=1 cgroup_no_v1=all"
  1. Instalación de CMS (se requiere un usuario con permisos de superusuario, aunque sea para la instalación):
# Install requirements
sudo apt-get install -y \
    build-essential \
    cgroup-lite \
    libcap-dev \
    libcups2-dev \
    libffi-dev \
    libpq-dev \
    libyaml-dev \
    postgresql-client \
    python3.12 \
    python3.12-dev \
    python3.12-venv \
    sudo \
    zip
# Además, si se quieren usar otros lenguajes que no sean CPython 3, deben instalarse compiladores.
 
# 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
curl -L https://github.com/cms-dev/cms/releases/download/v1.5.1/v1.5.1.tar.gz | tar -xz
cd cms
sudo python3 setup.py install
sudo python3 prerequisites.py --yes --cmsuser=cmsuser install
# Installing dependencies and cms to a virtual environment.
python3 -m venv ~/.venv
. ~/.venv/bin/activate
pip install -r requirements.txt
pip install .
# required or the program crashes
pip install setuptools==68.1.2
  1. Configure: move the .conf at /usr/local/etc and set the password on the database setting. Also, generate a secret_key.
  2. 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'
  1. Inicializar base de datos: sudo -u cmsuser cmsInitDB
  2. 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.

Nota: como la instalación ha sido realizada en un venv, los comandos cms* solo están disponibles dentro de este, por lo que se debe activar al iniciar la sesión. Por tanto, para los servicios systemD se recomienda la siguiente plantilla.

# /home/cmsuser/.config/systemd/user/cmsSUBPROGRAM.service
[Unit]
Description=CMS SUBPROGRAM description

[Service]
ExecStart=/bin/bash -c 'source /home/cmsuser/.venv/bin/activate && cmsSUBPROGRAM [PARAMS]'

[Install]
WantedBy=default.target
cms.txt · Última modificación: por Administrador

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki