Skip to content

Installation sur Debian 12

Prérequis

Serveur web

apt install apache2 libapache2-mod-wsgi-py3
systemctl enable apache2

Bases de données

apt install postgresql
systemctl enable postgresql
cat /etc/postgresql/15/main/pg_hba.conf
local all postgres peer
local empruntsdb empruntsuser md5

Création d'un utilisateur:

su - postgres
createuser --pwprompt empruntsuser 
createdb --owner=empruntsuser empruntsdb
exit

Accès à la socket Postgres:

adduser www-data postgres

Application web

Pour l'installation, vous pouvez soit récupérer la dernière version disponible ou utiliser directement le dépôt git.

Utilisation d'une version

La liste des versions se trouve ici: https://gitlab.insa-rouen.fr/dsi/dev/emprunts/-/releases

La dernière version git

cd /opt
git clone https://gitlab.insa-rouen.fr/dsi/dev/emprunts.git

Configuration

Toute la configuration doit être dans le fichier conf/local_settings.py (nouveau fichier). Cette configuration va remplacer la configuration se trouvant dans conf/settings.py. Voici un exemple de contenu:

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql_psycopg2",
        "NAME": "empruntsdb",
        "USER": "empruntsuser",
        "PASSWORD": "PASS",
        "HOST": "/var/run/postgresql",
    }
}
DEBUG = False
SECURE_SSL_REDIRECT = True
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
SECURE_HSTS_PRELOAD = True
ALLOWED_HOSTS = ["emprunts.example.com"]
SECRET_KEY = "django-insecure--9w@7o0@qn^o$fby#equd3&()qfzyean3ew75(+lytfr0(+n*7"

ADMINS = [
    ("Admin", "admin@example.com"),
]
EMAIL_HOST = "smtp.example.com"
EMAIL_PORT = 25
SERVER_EMAIL = "noreply@example.com"
EMAIL_SUBJECT_PREFIX = "[EMPRUNTS] "

CAS_SERVER_URL = "https://cas.example.com/cas/"

LDAP_SERVER = "ldap://ldap.example.com"
LDAP_USER = "cn=manager,dc=example,dc=com"
LDAP_PASSWD = "admin"
# PosixGroups
LDAP_GROUPS = "ou=SambaGroups,dc=example,dc=com"
LDAP_GROUP_ATTR = "cn"
LDAP_USERS = "ou=people,dc=example,dc=com"
LDAP_USER_ATTR = "uid"
# base pour trouver les groupes dans le ldap
LDAP_GROUPS_BASE = ",ou=groupes,dc=example,dc=com"

Python

apt install python3-pip python3-poetry
cd /opt/emprunts
poetry config virtualenvs.in-project true
./oto.sh prod_up_2

Configuration des tâches automatiques (crontab)

0 7 * * 1-5 /opt/emprunts/.venv/bin/python /opt/emprunts/manage.py verifier_reservations > /dev/null
30 7 * * 1-5 /opt/emprunts/.venv/bin/python /opt/emprunts/manage.py sync_users > /dev/null

Import des utilisateurs

On peut maintenant importer les utilisateurs autorisés depuis le LDAP:

/opt/emprunts/.venv/bin/python /opt/emprunts/manage.py sync_users

Activation d'un compte administrateur

cd /opt/emprunts
./oto.sh prod_sh
> user = User.objects.get(username="votre_login")
> user.is_staff = True
> user.is_superuser = True
> user.save()

Configuration Apache

Référence: https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/modwsgi/

Exemple de configuration Apache (/etc/apache2/sites-available/emprunts.conf):

ServerSignature off
ServerTokens prod
ServerAdmin admin@example.com

<VirtualHost emprunts.example.com:80>
    Redirect permanent / https://emprunts.example.com/
</VirtualHost>

<VirtualHost emprunts.example.com:443>
    ServerName emprunts.example.com
    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
    SSLHonorCipherOrder off
    SSLSessionTickets off
    SSLOptions +StrictRequire
    SSLCertificateFile /etc/apache2/ssl/emprunts.crt
    SSLCertificateKeyFile /etc/apache2/ssl/emprunts.key
    SSLCertificateChainFile /etc/apache2/ssl/emprunts.ac

    DocumentRoot /var/www/html/
    Alias /favicon.ico /opt/emprunts/static/images/favicon.ico

    Alias /static/ /opt/emprunts/static/

    <Directory /opt/emprunts/static>
        Require all granted
    </Directory>

    WSGIDaemonProcess emprunts python-home=/opt/emprunts/.venv python-path=/opt/emprunts
    WSGIProcessGroup emprunts
    WSGIScriptAlias / /opt/emprunts/conf/wsgi.py process-group=emprunts

    <Directory /opt/emprunts/conf>
        <Files wsgi.py>
            Require all granted
            </Files>
    </Directory>
</VirtualHost>
a2dissite 000-default
a2ensite emprunts
a2enmod ssl
systemctl restart apache2