From 18d6b635698a28cb1d53803a50766753704d222c Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Tue, 24 Aug 2021 16:18:00 +0200 Subject: [PATCH] scripts pour paquet Debian --- README.md | 22 ++++++++++++++++++++++ tools/debian/README.md | 5 +++++ tools/debian/control | 7 +++++++ tools/debian/postinst | 38 ++++++++++++++++++++++++++++++++++++++ tools/debian/preinst | 16 ++++++++++++++++ tools/install_debian11.sh | 5 +++++ tools/utils.sh | 3 ++- 7 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 tools/debian/README.md create mode 100644 tools/debian/control create mode 100644 tools/debian/postinst create mode 100644 tools/debian/preinst diff --git a/README.md b/README.md index cf3b50ee..1a27dc7b 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ (c) Emmanuel Viennet 1999 - 2021 (voir LICENCE.txt) +VERSION EXPERIMENTALE - NE PAS DEPLOYER - TESTS EN COURS Installation: voir instructions à jour sur @@ -267,3 +268,24 @@ base de données (tous les départements, et les utilisateurs) avant de commence +# Paquet debian 11 + +Ce que le script d'installation du paquet ne fait pas: + + - démarrer redis `systemctl start redis` (mettre dans la doc) + + - démarrer le firewall (proposer script à part) + + ufw default deny incoming + ufw default allow outgoing + ufw allow ssh + ufw allow https + yes | ufw enable + + - générer les certificats auto-signés (proposer script à part) + + - démarrer nginx: `systemctl restart nginx` (mettre dans la doc) + + - mise à jour hebdomadaire (à faire) + + - migrations flask (à faire) \ No newline at end of file diff --git a/tools/debian/README.md b/tools/debian/README.md new file mode 100644 index 00000000..2b8c3ff1 --- /dev/null +++ b/tools/debian/README.md @@ -0,0 +1,5 @@ +# Fichiers pour la fabrication du paquet Debian. + +Ce contenu sera copié dans `/DEBIAN`. + + diff --git a/tools/debian/control b/tools/debian/control new file mode 100644 index 00000000..ea2fa681 --- /dev/null +++ b/tools/debian/control @@ -0,0 +1,7 @@ +Package: scodoc9 +Version: 9.0.0 +Architecture: amd64 +Maintainer: Emmanuel Viennet +Description: ScoDoc 9 + Un logiciel pour le suivi de la scolarité universitaire. +Depends: adduser, curl, gcc, graphviz, libpq-dev, postfix, libcrack2-dev, python3-dev, python3-venv, python3-pip, python3-wheel, nginx, postgresql, redis, ufw diff --git a/tools/debian/postinst b/tools/debian/postinst new file mode 100644 index 00000000..6a4d369d --- /dev/null +++ b/tools/debian/postinst @@ -0,0 +1,38 @@ +#!/bin/bash + +# Post-installation de scodoc +# ici, le répertoire /opt/scodoc vient d'être installé + +# On peut donc charger la config: +cd /opt/scodoc +source /opt/scodoc/tools/config.sh +source /opt/scodoc/tools/utils.sh + +# -- Création au besoin de notre utilisateur +adduser --system "${SCODOC_USER}" + +# -- Répertoires /opt/scodoc donné à scodoc +change_scodoc_file_ownership +# --- Création au bseoin de /opt/scodoc-data +set_scodoc_var_dir + +# ------------ LOCALES (pour compat bad ScoDoc 7) +locname="en_US.UTF-8" +outname=$(echo ${locname//-/} | tr '[A-Z]' '[a-z]') +if [ "$(locale -a | grep -E -i ^${outname}$ | wc -l)" -lt 1 ] +then + echo adding $locname + echo "$locname ${locname##*.}" >> /etc/locale.gen + /usr/sbin/locale-gen --keep-existing +fi + +SCODOC_RELEASE=$(grep SCOVERSION sco_version.py | awk '{ print substr($3, 2, length($3)-2) }') +SVERSION=$(curl --silent http://scodoc.iutv.univ-paris13.fr/scodoc-installmgr/version?mode=install\&release="$SCODOC_RELEASE") +echo "$SVERSION" > "${SCODOC_VERSION_DIR}/scodoc.sn" + +# --- POSTGRESQL +# --- Ensure postgres user "scodoc" ($POSTGRES_USER) exists +init_postgres_user + +# --- SYSTEMD: on a installé un fichier de service +systemctl daemon-reload diff --git a/tools/debian/preinst b/tools/debian/preinst new file mode 100644 index 00000000..2f2f75ec --- /dev/null +++ b/tools/debian/preinst @@ -0,0 +1,16 @@ +#!/bin/bash + +# Pre-installation de scodoc + +# ------------ Safety checks +if [ "${debian_version}" != "11" ] +then + echo "Version du systeme Linux Debian incompatible" + exit 1 +fi + +if [ "$(arch)" != "x86_64" ] +then + echo "Version du systeme Linux Debian incompatible (pas X86 64 bits)" + exit 1 +fi \ No newline at end of file diff --git a/tools/install_debian11.sh b/tools/install_debian11.sh index f384c9b3..0cb70847 100755 --- a/tools/install_debian11.sh +++ b/tools/install_debian11.sh @@ -10,6 +10,11 @@ set -euo pipefail + +echo "ne plus utiliser ce script" +exit 0 + + # Le répertoire de ce script: SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" diff --git a/tools/utils.sh b/tools/utils.sh index 87db8d44..b481de21 100644 --- a/tools/utils.sh +++ b/tools/utils.sh @@ -60,6 +60,7 @@ init_postgres_user() { # run as root } # --- Ensure Unix user "scodoc" exists +# note: le paquet debian utilise directement adduser --system check_create_scodoc_user() { if ! id -u "${SCODOC_USER}" &> /dev/null then @@ -80,7 +81,7 @@ change_scodoc_file_ownership() { set_scodoc_var_dir() { echo "Checking $SCODOC_VAR_DIR..." [ -d "$SCODOC_VAR_DIR" ] || mkdir "$SCODOC_VAR_DIR" || die "can't create $SCODOC_VAR_DIR directory" - for d in archives photos tmp log config config/version config/depts config/logos + for d in archives photos tmp log config certs config/version config/depts config/logos do [ -d "$SCODOC_VAR_DIR/$d" ] || mkdir "$SCODOC_VAR_DIR/$d" || die "can't create $SCODOC_VAR_DIR/$d subdirectory" done