services:date.chapril.org
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| services:date.chapril.org [2026/04/11 17:40] – supprimée - modification externe (Date inconnue) 127.0.0.1 | services:date.chapril.org [2026/04/11 17:40] (Version actuelle) – ↷ Page déplacée de admin:services:date.chapril.org à services:date.chapril.org pitchum | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Service date.chapril.org ====== | ||
| + | ===== Installation ===== | ||
| + | |||
| + | ==== Pré-installation ==== | ||
| + | |||
| + | === Pré-requis === | ||
| + | |||
| + | Configuration utilisé pour ce tutoriel : | ||
| + | * Debian 9 Stretch ; | ||
| + | * Apache 2 ; | ||
| + | * PHP 7.3 avec les extensions '' | ||
| + | * MySQL ; | ||
| + | * Git. | ||
| + | |||
| + | Pour éviter de taper les commandes : | ||
| + | <code bash> | ||
| + | apt-get install apache2 php7.3 php7.3-intl php7.3-mysql php7.3-mbstring libapache2-mod-php7.3 mysql-server git | ||
| + | </ | ||
| + | |||
| + | === Base de données | ||
| + | |||
| + | Le service '' | ||
| + | |||
| + | Cependant la base de donnée doit être créée au préalable, après avoir renseigné les paramètres de la base de données. | ||
| + | Créez la. | ||
| + | |||
| + | == MySQL == | ||
| + | |||
| + | Se connecter avec l' | ||
| + | <code bash> | ||
| + | mysql -u root -p | ||
| + | </ | ||
| + | |||
| + | Créer une base de données : | ||
| + | <code sql> | ||
| + | CREATE DATABASE IF NOT EXISTS date_chapril_org_db DEFAULT CHARACTER SET utf8 ; | ||
| + | </ | ||
| + | |||
| + | Créer un utilisateur : | ||
| + | <code sql> | ||
| + | CREATE USER ' | ||
| + | GRANT ALL PRIVILEGES ON date_chapril_org_db.* TO ' | ||
| + | </ | ||
| + | |||
| + | ==== Préparation ==== | ||
| + | |||
| + | Initialiser des variables : | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Exemple : | ||
| + | <code bash> | ||
| + | DATE_CHAPRIL_HOME="/ | ||
| + | DATE_CHAPRIL_USER=" | ||
| + | </ | ||
| + | |||
| + | Créer l’utilisateur et le répertoire correspondant : | ||
| + | <code bash> | ||
| + | adduser --home=$DATE_CHAPRIL_HOME $DATE_CHAPRIL_USER | ||
| + | |||
| + | chown -R $DATE_CHAPRIL_USER: | ||
| + | chmod -R g+rx $DATE_CHAPRIL_HOME | ||
| + | chmod g+w $DATE_CHAPRIL_HOME | ||
| + | </ | ||
| + | |||
| + | Téléchargez la dernière version stable de Framadate : | ||
| + | <code bash> | ||
| + | cd ${DATE_CHAPRIL_HOME}/ | ||
| + | git clone https:// | ||
| + | git checkout 1.1.7 (selon la version à jour) | ||
| + | </ | ||
| + | |||
| + | Remettre le groupe '' | ||
| + | <code bash> | ||
| + | cd ${DATE_CHAPRIL_HOME}/ | ||
| + | chgrp -R www-data . | ||
| + | </ | ||
| + | |||
| + | S' | ||
| + | <code bash> | ||
| + | chmod g+w $DATE_CHAPRIL_HOME/ | ||
| + | </ | ||
| + | |||
| + | Installer les dépendances PHP : | ||
| + | <code bash> | ||
| + | apt-get install composer | ||
| + | </ | ||
| + | |||
| + | Puis : | ||
| + | <code bash> | ||
| + | apt-get install php7.3-xml | ||
| + | composer install | ||
| + | </ | ||
| + | |||
| + | Modifier le fichier ''/ | ||
| + | |||
| + | Ajouter un fichier '' | ||
| + | |||
| + | <code apache> | ||
| + | < | ||
| + | |||
| + | ServerName date.chapril.org | ||
| + | |||
| + | ServerAdmin webmaster@april.org | ||
| + | DocumentRoot / | ||
| + | php_admin_value open_basedir "/ | ||
| + | |||
| + | |||
| + | < | ||
| + | AllowOverride All | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | # Pour contrôler l’accès au répertoire admin | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | Order allow,deny | ||
| + | Allow from all | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | deny from all | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | ErrorLog ${APACHE_LOG_DIR}/ | ||
| + | CustomLog ${APACHE_LOG_DIR}/ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | L’activer : | ||
| + | <code bash> | ||
| + | a2ensite date.chapril.org.conf | ||
| + | </ | ||
| + | |||
| + | ==== Accès à la page administrateur ==== | ||
| + | |||
| + | L' | ||
| + | Pour en restreindre l’accès, il faut ajouter au fichier de configuration Apache ''/ | ||
| + | |||
| + | <code bash> | ||
| + | htpasswd -c / | ||
| + | </ | ||
| + | |||
| + | L’utilitaire // | ||
| + | |||
| + | <code bash> | ||
| + | apt-get install apache2-utils | ||
| + | </ | ||
| + | |||
| + | Pour protéger les fichiers '' | ||
| + | |||
| + | ==== Réécriture d’URL ==== | ||
| + | |||
| + | Activer le mode de ré-écriture des URL dans Apache : | ||
| + | |||
| + | <code bash> | ||
| + | a2enmod rewrite | ||
| + | </ | ||
| + | |||
| + | Il faut ajouter une ligne '' | ||
| + | <code bash> | ||
| + | cp $DATE_CHAPRIL_HOME/ | ||
| + | </ | ||
| + | |||
| + | puis : | ||
| + | <code bash> | ||
| + | systemctl reload apache2 | ||
| + | </ | ||
| + | |||
| + | ==== Installation ==== | ||
| + | |||
| + | Pour installer l' | ||
| + | * Nom de l' | ||
| + | * Adresse courriel de l' | ||
| + | * Courriel de réponse : '' | ||
| + | * Langue par défaut : Français ; | ||
| + | * URL propres : case cochée ; | ||
| + | * Chaîne de connexion : '' | ||
| + | * Utilisateur : '' | ||
| + | * Mot de passe : '' | ||
| + | * Préfixe : '' | ||
| + | * Table de migration : '' | ||
| + | |||
| + | Une fois le formulaire rempli et envoyé, un script va générer le fichier '' | ||
| + | |||
| + | La page de migration s' | ||
| + | * D' | ||
| + | * De mettre à jour la base de données lors des mises à jour de l’application. | ||
| + | |||
| + | <note important> | ||
| + | Attention, le chargement de la page de migration peux prendre du temps étant donné qu' | ||
| + | </ | ||
| + | |||
| + | ==== Configuration SMTP ==== | ||
| + | |||
| + | Voir [[admin: | ||
| + | |||
| + | ==== Journal de l' | ||
| + | |||
| + | Un fichier '' | ||
| + | par le serveur Web. | ||
| + | Quelque chose comme cela devrait convenir: | ||
| + | <code bash> | ||
| + | touch admin/ | ||
| + | chmod u=rw, | ||
| + | chgrp www-data admin/ | ||
| + | </ | ||
| + | | ||
| + | ===== Tables de la base de données ===== | ||
| + | |||
| + | Voici la structure des tables de l' | ||
| + | Le nom des tables est donné sans préfixe. | ||
| + | |||
| + | La base se compose de quatre tables : | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ===== Gestion de version ===== | ||
| + | |||
| + | Actuellement, | ||
| + | Les modifications sont faites dans des branches nommées '' | ||
| + | |||
| + | <note important> | ||
| + | Actuellement, | ||
| + | Comme les sources modifiés doivent être accessible par les utilisateurs, | ||
| + | </ | ||
| + | |||
| + | ===== Mise à jour ===== | ||
| + | |||
| + | Étapes de la mise à jour : | ||
| + | * Mettre à jour le code : | ||
| + | * Sans Git : | ||
| + | * Télécharger la dernière version stable //zipée// à partir de [[https:// | ||
| + | * Dézipper, | ||
| + | * Remplacer l' | ||
| + | * Avec Git : | ||
| + | * Créer une nouvelle branche '' | ||
| + | <code bash> | ||
| + | cd $DATE_CHAPRIL_HOME | ||
| + | sudo -u www-data git checkout -b chapril-x.y.z | ||
| + | </ | ||
| + | * fusionner (//merge//) la branche voulue dans la branche '' | ||
| + | <code bash> | ||
| + | sudo -u www-data git fetch --tags officiel | ||
| + | sudo -u www-data git merge <tag> | ||
| + | </ | ||
| + | * Supprimer l' | ||
| + | * Mettre à jour les dépendances : | ||
| + | <code bash> | ||
| + | cd $DATE_CHAPRIL_HOME | ||
| + | composer install | ||
| + | </ | ||
| + | |||
| + | Enfin, aller sur [[https:// | ||
| + | |||
| + | Ensuite : | ||
| + | * Valider les modification et les envoyer dans la forge : | ||
| + | <code bash> | ||
| + | git add # les fichiers corrigés manuellement le cas échéant | ||
| + | git commit -m "Merge tag ' | ||
| + | git push --set-upstream origin chapril-x.y.z | ||
| + | </ | ||
| + | * Modifier la branche par défaut du dépôt. | ||
| + | |||
| + | ===== Modification de code ===== | ||
| + | |||
| + | Afin de rendre Framadate compatible avec les CGU du Chapril, quelques parties de codes ont été modifiées. | ||
| + | |||
| + | ==== Remplacement de la signature Framasoft par la signature April ==== | ||
| + | |||
| + | Dans le fichier ''/ | ||
| + | < | ||
| + | " | ||
| + | </ | ||
| + | |||
| + | Dans le fichier ''/ | ||
| + | < | ||
| + | " | ||
| + | </ | ||
| + | |||
| + | Présent à partir de la branche '' | ||
| + | |||
| + | ==== Correction d'un message incorrect sur la date de suppression ==== | ||
| + | |||
| + | Dans le fichier ''/ | ||
| + | < | ||
| + | " | ||
| + | "You can set a closer archiving date for it.": "Vous pouvez décider d'une date d' | ||
| + | "Your poll will automatically be archived": | ||
| + | "after the last date of your poll.": | ||
| + | </ | ||
| + | |||
| + | Dans le fichier ''/ | ||
| + | < | ||
| + | " | ||
| + | "You can set a closer archiving date for it.": "You can set a closer expiry date for the poll.", | ||
| + | "Your poll will automatically be archived": | ||
| + | "after the last date of your poll.": | ||
| + | </ | ||
| + | |||
| + | Présent à partir de la branche '' | ||
| + | |||
| + | ==== Contrôle des dates à la mise à jour ==== | ||
| + | |||
| + | Dans le fichier ''/ | ||
| + | <code php> | ||
| + | function updatePoll($poll) { | ||
| + | global $config; | ||
| + | |||
| + | $end_date = strtotime($poll-> | ||
| + | |||
| + | if ($end_date < strtotime($poll-> | ||
| + | | ||
| + | } elseif ($end_date > $this-> | ||
| + | | ||
| + | } | ||
| + | |||
| + | return $this-> | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Présent à partir de la branche '' | ||
| + | |||
| + | ==== Restriction des langues ==== | ||
| + | |||
| + | Dans le fichier ''/ | ||
| + | |||
| + | Pour obtenir : | ||
| + | <code php> | ||
| + | // List of supported languages, fake constant as arrays can be used as constants only in PHP > | ||
| + | $ALLOWED_LANGUAGES = [ | ||
| + | ' | ||
| + | ' | ||
| + | // ' | ||
| + | // ' | ||
| + | // ' | ||
| + | // ' | ||
| + | // ' | ||
| + | // ' | ||
| + | ]; | ||
| + | </ | ||
| + | |||
| + | |||
| + | Présent à partir de la branche '' | ||
| + | |||
| + | ==== Ajout d'une purge automatique ==== | ||
| + | |||
| + | Dans la branche '' | ||
| + | <code php> | ||
| + | <?php | ||
| + | /** | ||
| + | * Copyright 2018 Christian P. MOMON cmomon@april.org | ||
| + | * | ||
| + | * This software is governed by the CeCILL-B license. If a copy of this license | ||
| + | * is not distributed with this file, you can obtain one at | ||
| + | * http:// | ||
| + | * | ||
| + | */ | ||
| + | |||
| + | use Framadate\Services\InputService; | ||
| + | use Framadate\Services\LogService; | ||
| + | use Framadate\Services\PurgeService; | ||
| + | use Framadate\Services\SecurityService; | ||
| + | |||
| + | // ///////////////////////////////////////////////// | ||
| + | // ////////// include_once __DIR__ . '/ | ||
| + | use Framadate\FramaDB; | ||
| + | use Framadate\Repositories\RepositoryFactory; | ||
| + | |||
| + | define(' | ||
| + | |||
| + | // Autoloading of dependencies with Composer | ||
| + | require_once ROOT_DIR . '/ | ||
| + | require_once ROOT_DIR . '/ | ||
| + | |||
| + | if (ini_get(' | ||
| + | date_default_timezone_set(' | ||
| + | } | ||
| + | |||
| + | require_once ROOT_DIR . '/ | ||
| + | |||
| + | define(' | ||
| + | if (is_file(CONF_FILENAME)) { | ||
| + | @include_once CONF_FILENAME; | ||
| + | |||
| + | // Connection to database | ||
| + | $connect = new FramaDB(DB_CONNECTION_STRING, | ||
| + | RepositoryFactory:: | ||
| + | $err = 0; | ||
| + | } else { | ||
| + | define(' | ||
| + | define(' | ||
| + | define(' | ||
| + | define(' | ||
| + | } | ||
| + | |||
| + | require_once ROOT_DIR . '/ | ||
| + | |||
| + | // ///////////////////////////////////////////////// | ||
| + | |||
| + | /* Services */ | ||
| + | / | ||
| + | $logService = new LogService(); | ||
| + | $purgeService = new PurgeService($connect, | ||
| + | $securityService = new SecurityService(); | ||
| + | $inputService = new InputService(); | ||
| + | |||
| + | /* Action */ | ||
| + | /* ------ */ | ||
| + | $logService-> | ||
| + | |||
| + | $ended = false; | ||
| + | $iterationCount = 0; | ||
| + | $totalCount = 0; | ||
| + | while (!$ended) | ||
| + | { | ||
| + | $count = $purgeService-> | ||
| + | $logService-> | ||
| + | if ($count == 0) | ||
| + | { | ||
| + | $ended = true; | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | $iterationCount += 1; | ||
| + | $totalCount += $count; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | $logService-> | ||
| + | $logService-> | ||
| + | |||
| + | /* PAGE */ | ||
| + | /* ---- */ | ||
| + | echo date(" | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | Mettre de bons droits : | ||
| + | <code bash> | ||
| + | chown datechaprilorg app/ | ||
| + | chmod ug+rw app/ | ||
| + | </ | ||
| + | |||
| + | Créer un fichier '' | ||
| + | < | ||
| + | 45 23 * * * root / | ||
| + | 41 11 * * * root / | ||
| + | </ | ||
| + | |||
| + | Créer un fichier '' | ||
| + | < | ||
| + | 1 0 1 * * root / | ||
| + | </ | ||
| + | |||
| + | ===== Monitoring ===== | ||
| + | |||
| + | Mettre dans le répertoire ''/ | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | function usage() { | ||
| + | echo "Usage : $0" | ||
| + | } | ||
| + | |||
| + | # | ||
| + | if [ " | ||
| + | usage | ||
| + | else | ||
| + | lastVersion=$(curl -s https:// | ||
| + | currentVersion=$(cd / | ||
| + | |||
| + | #echo $currentVersion | ||
| + | #echo $lastVersion | ||
| + | if [ $currentVersion = $lastVersion ]; then | ||
| + | echo " | ||
| + | result=0 | ||
| + | else | ||
| + | echo " | ||
| + | result=1 | ||
| + | fi | ||
| + | fi | ||
| + | exit $result | ||
| + | </ | ||
| + | |||
| + | Le fichier est // | ||
