Autres versions

Vous êtes ici : Installer et exploiterInstallationExtension Inscription

Installation de l'extension Inscription

Procédure d'installation de l'extension Inscription

Cette page décrit comment intégrer l'extension inscription à une installation K-Sup existante.

L'extension inscription nécessite l'installation d'un serveur Pretix (cf https://pretix.eu). Cette page d'installation retranscrit en grande partie la documentation officielle de l'éditeur (https://git.kosmos.fr/projects/KFO/repos/pretix/browse/doc/admin/installation/manual_smallscale.rst)

Composants Logiciels

Afin de fonctionner, pretix nécessite la présence de certains composants logiciels dans l'infrastructure. Les composants suivants doivent être installés et fonctionnels :
  • Un serveur SMTP pour envoyer des mails
  • Un reverse proxy HTTP : dans la suite de cette documentation, nous utiliserons un serveur Apache.
  • Un serveur de base de données : Il est possible d'utiliser la base de données installée pour K-Sup.
  • Un serveur Redis
    • Afin de vérifier que celui-ci est installé, veuillez vérifier que la commande suivante retourne bien PONG. Si tel n'est pas le cas, il faut alors installer le serveur redis.
      redis-cli ping
  • Une installation nodejs
    • Afin de vérifier l'installation, la commande suivante doit retourner la version de node
      node --version

La suite de cette documentation présentera d'éventuelles configurations à réaliser sur ces composants.

Dimensionnement du serveur

Les composants de Pretix peuvent être installés sur le même serveur que l'application K-Sup.

Le serveur doit alors être dimensionné comme suit :

  • ajout de 4 Go de RAM
  • ajout de 5 Go d'espace disque (pour porter les documents générés et les composants / librairies nécessaires)

Installation et Configuration

Utilisateur Unix

Création d'un nouvel utilisateur non privilégié afin de ne pas exécuter pretix en tant que root:

sudo adduser pretix --disabled-password --home /var/pretix

Dans la suite de ce guide, certaines commandes seront réalisées avec l'utilisateur root ou avec l'utilisateur non privilégié.

Configuration de la base de données

Création du schéma pretix sur la base de données K-Sup. Lorsque vous utilisez MySQL, assurez-vous de définir le jeu de caractères de la base de données sur utf8mb4 :
-- Création de la base de données Pretix dans le serveur SQL
mysql > CREATE DATABASE pretix DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci ;

Vous devrez également vous assurer que la propriété sql_mode de la base de données n'inclut pas ONLY_FULL_GROUP_BY.

mysql > SELECT @@SQL_MODE;


Si vous souhaitez utiliser le même utilisateur que pour K-Sup, il faut donner les droits à l'utilisateur utilisé pour K-Sup sur la base de données pretix :

-- Attribution des droits à l'utilisateur ksup-admin à la base de données Pretix
mysql > GRANT INDEX,DELETE,CREATE,DROP,ALTER,LOCK TABLES,SELECT,INSERT,UPDATE,TRIGGER,ALTER ROUTINE,CREATE ROUTINE,EXECUTE,REFERENCES 
      ON pretix.* TO 'ksup-admin'@'%SOURCE%';
 
-- Rechargement des droits
mysql > FLUSH PRIVILEGES;

Où %SOURCE% est une chaîne de caractères  indiquant la source de la connexion : ex: localhost, %, 192.168.1.132.

Installation des packages

Pour construire et exécuter pretix, il faut installer les paquets suivants :
  • Sur Debian :
    sudo apt-get install git build-essential python-dev python3-venv python3 python3-pip \
                      python3-dev libxml2-dev libxslt1-dev libffi-dev zlib1g-dev libssl-dev \
                      gettext libpq-dev libmariadb-dev libjpeg-dev libopenjp2-7-dev

Configuration

Création du répertoire et du fichier de configuration pour pretix :
sudo mkdir /etc/pretix
sudo touch /etc/pretix/pretix.cfg
sudo chown -R pretix:pretix /etc/pretix/
sudo chmod 0600 /etc/pretix/pretix.cfg
Puis il faut alimenter le fichier pretix.cfg avec les données suivantes (à adapter en fonction de votre environnement) :
[pretix]
instance_name=Inscription
; Tenir compte du Reverse Proxy (plus bas)
url=%REVERSE_PROXY_URL%
currency=EUR
datadir=/var/pretix/data
password_reset=off
csp_additional_header=frame-ancestors %KSUP_URL_MAIN_DOMAIN%;  style-src %KSUP_URL_MAIN_DOMAIN%; font-src %KSUP_URL_MAIN_DOMAIN%; img-src %KSUP_URL_MAIN_DOMAIN%
trust_x_forwarded_for=on
trust_x_forwarded_proto=on

[locale]
default=fr
timezone=Europe/Paris

[languages]
enabled=fr

[database]
backend=mysql
name=pretix
user=ksup-admin
password=%BDD_PASSWORD%
host=%BDD_HOST%

[mail]
from=%MAIL_FROM%
host=%SMTP_HOST%
port=%SMTP_PORT%
admins=%MAIL_CONTACT_DEFAULT%

[redis]
location=redis://127.0.0.1/0
sessions=true

[celery]
backend=redis://127.0.0.1/1
broker=redis://127.0.0.1/2

  • %REVERSE_PROXY_URL% : L'URL publique pour le serveur Pretix (exemple : https://inscription.mon-univ.fr)
  • %KSUP_URL_MAIN_DOMAIN% : Le pattern d'URL des sites K-Sup (exemple : https://*.mon-univ.fr)
  • %BDD_PASSWORD% : mot de passe de l'utilisateur se connectant à la base de données
  • %BDD_HOST% : nom de domaine ou IP de la machine hébergeant le serveur de base de données
  • %MAIL_FROM : adresse e-mail expéditrice des mails envoyés pour les inscriptions (exemple : noreply@mon-univ.fr)
  • %SMTP_HOST% : nom de domaine de la machine hébergeant le serveur SMTP
  • %SMTP_PORT% : port d'écoute du service SMTP. Par défaut 25.
  • %MAIL_CONTACT_DEFAULT% : adresse e-mail par défaut de réception des mails d'inscription

Installation de Pretix

Pretix est installé avec l'utilisation de PyPi. Les étapes suivantes doivent être exécutées en tant qu'utilisateur de pretix. Avant d'installer pretix, nous allons créer un environnement virtuel pour isoler les paquets python de votre installation globale de python :
sudo -su pretix
python3 -m venv /var/pretix/venv
source /var/pretix/venv/bin/activate
(venv) pip3 install -U pip setuptools wheel
(venv) mkdir -p /var/pretix/data/media

Point d'attention Si vous êtes amené à interrompre l'installation, chaque commande prefixée par (venv) sont à effectuer dans l'environnement virtuel pretix. Pour se remettre dans ces conditions, il faut effectuer la commande suivante : source /var/pretix/venv/bin/activate.

Pretix est ensuite installé dans la version spécifique pour K-Sup

(venv) pip install -U --no-cache-dir --extra-index-url https://repository.kosmos.fr/repository/kosmos.releases.py/simple pretix==4.6.0+build.100

Puis il faut installer les dépendances nécessaires

(venv) pip3 install gunicorn mysqlclient

Les fichiers statiques et les données de traduction sont ensuite compilés et la structure de la base de données est créée:

(venv) python -m pretix migrate
(venv) python -m pretix rebuild
(venv) python -m pretix updatestyles

Service Pretix

Nous recommandons de démarrer Pretix à l'aide de systemd pour s'assurer qu'il fonctionne correctement après un redémarrage. Il faut créer 2 fichiers pretix-web.service et pretix-worker.service
sudo touch /etc/systemd/system/pretix-web.service
sudo touch /etc/systemd/system/pretix-worker.service

Puis il faut copier les contenus suivant dans les différents fichiers.
Dans le fichier pretix-web.service :
[Unit]
Description=pretix web service
After=network.target
 
[Service]
User=pretix
Group=pretix
Environment="VIRTUAL_ENV=/var/pretix/venv"
Environment="PATH=/var/pretix/venv/bin:/usr/local/bin:/usr/bin:/bin"
ExecStart=/var/pretix/venv/bin/gunicorn pretix.wsgi \
                      --name pretix --workers 5 \
                      --max-requests 1200  --max-requests-jitter 50 \
                      --log-level=info --bind=127.0.0.1:8345
WorkingDirectory=/var/pretix
Restart=on-failure
 
[Install]
WantedBy=multi-user.target

Dans le fichier pretix-worker.service

[Unit]
Description=pretix background worker
After=network.target
 
[Service]
User=pretix
Group=pretix
Environment="VIRTUAL_ENV=/var/pretix/venv"
Environment="PATH=/var/pretix/venv/bin:/usr/local/bin:/usr/bin:/bin"
ExecStart=/var/pretix/venv/bin/celery -A pretix.celery_app worker -l info
WorkingDirectory=/var/pretix
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
Puis il faut démarrer les deux services
sudo systemctl daemon-reload
sudo systemctl enable pretix-web pretix-worker
sudo systemctl start pretix-web pretix-worker

Cronjob

Il faut ensuite configurer un cronjob pour exécuter la commande de gestion runperiodic.
Il faut ajouter la ligne suivante dans le crontab :
15,45 * * * * export PATH=/var/pretix/venv/bin:$PATH && cd /var/pretix && python -m pretix runperiodic

Configuration du Reverse Proxy avec Apache

Dans le cas d'une configuration de reverse proxy avec Apache, il faut ajouter la configuration adaptée pour servir Pretix.

Attention, certains plugins Apache sont nécessaires, par exemple : mod_proxy_http, mod_header,....

Exemple de configuration Apache : /etc/apache2/sites-available/pretix
 

ServerAdmin %DSI_EMAIL%
ServerName %SERVER_NAME%
ServerAlias %SERVER_ALIAS%
DocumentRoot /var/pretix/data/media/
ProxyPreserveHost On
ProxyPass / http://localhost:8345/
ProxyPassReverse / http://localhost:8345/
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Proto "https"
ProxyPreserveHost On
LogLevel warn
# deport des logs http vers syslog
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" viaCombined
#CustomLog "|/usr/bin/logger -p local0.info -t apache2-access" viacombined
#ErrorLog syslog:local0
ErrorLog "/var/log/apache2/pretix-error.log"
CustomLog "/var/log/apache2/pretix-access.log" viaCombined
<Directory /var/pretix/data/media/>
    AllowOverride All
    Require all granted
</Directory>
<Directory /var/pretix/venv/lib/python3.7/site-packages/pretix/static.dist/>
    AllowOverride All
    Require all granted
</Directory>
Alias /media "/var/pretix/data/media/"
Alias /static "/var/pretix/venv/lib/python3.7/site-packages/pretix/static.dist/"
<Directory /var/pretix/data/media/cachedfiles>
    order deny,allow
    deny from all
</Directory>
<Directory /var/pretix/data/media/invoices>
    order deny,allow
    deny from all
</Directory>

  • %DSI_EMAIL% : email des administrateurs systèmes
  • %SERVER_NAME% : Hostname du serveur pretix
  • %SERVER_ALIAS% : Alias du serveur pretix

Configuration de Pretix

Après avoir démarré le serveur Pretix, il faut se connecter à la console d'administration du serveur pretix via l'url hostname/control où hostname est le host configuré précédemment.
Pour se connecter il faut utiliser les identifiants suivant :

  • login : admin@localhost
  • password : admin
Point d'attention Après cette première connexion, il faut modifier le mot de passe de l'utilisateur d'administration. Pour cela il faut se rendre dans l'écran User Settings / Général puis enregistrer un nouveau mot de passe.

Mise en conformité avec la licence AGPLv3

Point d'attention Cette étape de configuration est obligatoire. Elle permet de mettre en conformité l'installation de l'application avec la licence de l'éditeur.


Après s'être connecté sur Pretix, il faut cliquer sur le lien informant de la mise en conformité de la licence (si le lien n'est pas visible, il faut alors basculer en Mode Admin).
Il faut ensuite, pour chaque section indiquer les informations suivantes :

  • Usage of pretix
    • Sélectionner l'option suivante : I only use pretix to organize events which are executed by my own company or its affiliated companies, or to sell products sold by my own company.
  • Changes to pretix
    • Sélectionner l'option suivante : This installation of pretix includes changes or extensions made to the source code.
  • Licence choice
    • Sélectionner l'option suivante : I want to use pretix under the terms of the AGPLv3 license without restriction on the scope of usage and therefore without making use of additional permission.
  • Plugins installés
    • Sélectionner l'option suivante : This installation of pretix has installed plugins which are available freely under a non-copyleft license (Apache License, MIT License, BSD License, ...).
  • Public information
    • Footer : Mettre la valeur suivante : Kosmos Education
    • Link for powered by name : Mettre la valeur suivante : https://www.kosmos-education.com
    • Source code instructions :
      pretix (AGPLv3 with additional terms): https://github.com/pretix/pretix
      Kosmos Education https://git.kosmos.fr/projects/KFO/repos/pretix
Après avoir effectué ces configurations, il faut enregistrer l'écran via le bouton Save and check.

Configuration de l'organisateur

Afin de pouvoir utilisé Pretix, il faut désormais créer un organisateur afin de gérer les évènements (un organisateur pour un établissement) ainsi que le token d'API qui sera utilisé par K-Sup.
Pour cela il faut passer en Mode Admin (dans le bandeau haut) puis effectuer les actions suivantes :
  • Création de l'organisateur utilisé par l'établissement :
    • Aller dans l'écran Organisateurs > Créer un nouvel organisateur
    • Nom : Le nom de l'université (Exemple : Universite Kosmos)
    • Forme courte : events
    • Sauvegarder
  • Génération du token d'API
    • Aller dans l'écran Equipes > Administrateurs
    • Dans la partie Token API, saisir le nom du token ksup et cliquer sur ajouter.
    • Noter la clé du token généré dans le message de confirmation.

Vérification de la configuration

Il est possible de vérifier la configuration de l'API en testant l'appel via un terminal.
La commande suivante doit retourner le nom de l'organisateur associé au token :
curl '%pretix-hostname%/api/v1/organizers/' -H 'Authorization: Token %pretix-api-token%'
  • %pretix-hostname% est le host du serveur pretix
  • %pretix-api-token% est le token d'API généré précédemment

Configuration de K-Sup

Après avoir configuré Pretix, il faut ajouter la configuration à l'environnement K-Sup.
Il faut créer un fichier env_inscription.properties dans le répertoire de configuration de K-Sup.
sudo -u tomcat touch /web/ksup/storage/conf/env_inscription.properties


Puis il faut ajouter le contenu suivant :
api.pretix.server.base-url=%pretix-hostname%
api.pretix.token=%pretix-api-token%
api.pretix.organizer=events

  • %pretix-hostname% est le host du serveur pretix
  • %pretix-api-token% est le token d'API généré précédemment
  Après avoir effectué cette configuration, il faut redémarrer le serveur K-Sup.

Vérification de la configuration

Un fois l'environnement K-Sup démarré, il est possible de vérifier la configuration :

  • En vérifiant l'absence d'erreur dans les logs de démarrage du serveur K-Sup (fichier xxx-webapp.log)
  • En essayant de créer un évènement depuis l'interface K-Sup (cf Création et paramétrage d'un évènement .
 


Mis à jour le 8 septembre 2023