Herramientas de usuario

Herramientas del sitio


cms

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
cms [2024/02/05 22:58] – creado Carlos Galindocms [2026/05/19 10:49] (actual) – add cgroup2 information Administrador
Línea 3: Línea 3:
 CMS es un sistema para concursos de programación basado en subtareas en lugar de intentos/tiempo como DOMJudge. CMS es un sistema para concursos de programación basado en subtareas en lugar de intentos/tiempo como DOMJudge.
  
-===== Instalación (1.5.dev0) =====+===== Instalación (v1.5.1) =====
  
-  - Sistema: ubuntu20.04 o equivalentes. Las versiones de Python que acepta son limitadas. +  - Sistema: ubuntu24.04 o equivalentes. Las versiones de Python que acepta son //muy// limitadas. 
-  - Instalación de CMS+  - Verificamos que ''cgroup2'' está habilitado, y no la versión 1 también. Podemos probar con el siguiente comando: 
 +<code bash> 
 +$ grep cgroup /proc/mounts 
 +cgroup2 /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot 0 0 
 +</code> 
 +Si no es así, hay que deshabilitarlo, editando ''/etc/default/grub'' como se muestra y ejecutando ''sudo update-grub'': 
 +<code diff> 
 +-GRUB_CMDLINE_LINUX_DEFAULT="systemd.unified_cgroup_hierarchy=0" 
 ++GRUB_CMDLINE_LINUX_DEFAULT="systemd.unified_cgroup_hierarchy=1 cgroup_no_v1=all" 
 +</code> 
 +  - Instalación de CMS (se requiere un usuario con permisos de superusuario, aunque sea para la instalación):
 <code bash> <code bash>
 # Install requirements # Install requirements
Línea 12: Línea 22:
     build-essential \     build-essential \
     cgroup-lite \     cgroup-lite \
-    cppreference-doc-en-html \ 
-    fp-compiler \ 
-    git \ 
-    haskell-platform \ 
     libcap-dev \     libcap-dev \
     libcups2-dev \     libcups2-dev \
Línea 21: Línea 27:
     libpq-dev \     libpq-dev \
     libyaml-dev \     libyaml-dev \
-    mono-mcs \ 
-    openjdk-8-jdk-headless \ 
-    php7.4-cli \ 
     postgresql-client \     postgresql-client \
-    python2 \ +    python3.12 
-    python3-pip +    python3.12-dev 
-    python3.+    python3.12-venv \
-    python3.8-dev \ +
-    rustc \+
     sudo \     sudo \
-    wait-for-it \ 
     zip     zip
 +# Además, si se quieren usar otros lenguajes que no sean CPython 3, deben instalarse compiladores.
  
 # Create cmsuser user with sudo privileges # Create cmsuser user with sudo privileges
Línea 41: Línea 42:
 # Change user and setup with python # Change user and setup with python
 sudo su - cmsuser sudo su - cmsuser
-git clone --recursive https://github.com/cms-dev/cms.git+curl -https://github.com/cms-dev/cms/releases/download/v1.5.1/v1.5.1.tar.gz | tar -xz
 cd cms cd cms
-sudo pip3 install -r requirements.txt 
 sudo python3 setup.py install sudo python3 setup.py install
 sudo python3 prerequisites.py --yes --cmsuser=cmsuser 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
 </code> </code>
-  - Configure: move the .conf.sample files to .conf and set the password on the database setting.+  - Configure: move the .conf at ''/usr/local/etc'' and set the password on the database setting. Also, generate a ''secret_key''.
   - Create the database   - Create the database
 <code bash> <code bash>
Línea 57: Línea 64:
 psql --username=postgres --dbname=cmsdb --command='GRANT SELECT ON pg_largeobject TO cmsuser' psql --username=postgres --dbname=cmsdb --command='GRANT SELECT ON pg_largeobject TO cmsuser'
 </code> </code>
-  - Inicializar base de datos TODO!+  - 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. 
 + 
 +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. 
 + 
 +<code> 
 +# /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 
 +</code>
cms.1707173906.txt.gz · Última modificación: por Carlos Galindo

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki