Retour : Page Principale > sommaire méthodologie
http://www.tela-botanica.org/appli-test:
https://api-test.tela-botanica.org
Important : toujours exécuter les commandes des gestionnaires de versions avec l'utilisateur du compte système associé et non en root.
https://api.tela-botanica.org
Important : toujours exécuter les commandes des gestionnaires de versions avec l'utilisateur du compte système associé et non en root.
Certaines applications sont écrites en langage compilé, et le résultat de la compilation n'est pas versionné. C'est le cas de CeL, DeL et CoeL, écrits en Java / GWT.
Pour mettre en ligne ces applis, il faut :
C'est aussi le cas pour les fichiers de configuration .ini et .json.
Il faut régler le serveur Web pour éviter l'accès en HTTP à ces fichiers et dossiers.
# Repourne une erreur 404 lors de l'accès aux dossiers .svn (éviter de savoir que le dossier existe)
RedirectMatch 404 /\\.svn(/|$)
RedirectMatch 404 /\\.git(/|$)
RedirectMatch 404 \\.ini$
RedirectMatch 404 \\config.json$
location ~ "\.ini$" {
location ~ "config\.json$" {
Méthode de mise en ligne des applications (prod/test)
Que faire quand on a ajouté une fonctionnalité / résolu un bug dans un logiciel, et qu'on veut mettre à jour en ligne ?0. Généralités
À de rares exceptions près, tous les logiciels (interfaces, scripts, services) sont en ligne en deux exemplaires.- une version de test pour l'intégration continue
- une version de prod
1. Les versions de test
https://beta.tela-botanica.org/appli:http://www.tela-botanica.org/appli-test:
https://api-test.tela-botanica.org
Emplacements
services et scripts
- installés sur Agathis dans /home/apitest/www/(services|scripts)
- utilisent le serveur MySQL de test (port 3308)
- URL commençant par https://api-test.tela-botanica.org
interfaces
- installées sur Aphyllanthe dans /home/beta/www
- URL commençant par https://beta.tela-botanica.org
interfaces (ancienne installation <= 2017)
- installées sur Sequoia dans /home/telabotap/www/eflore-test
- URL commençant par http://www.tela-botanica.org/eflore-test/ ou http://www.tela-botanica.org/appli-test:
Déploiement
Les applications de test sont en intégration continue; elles sont toujours branchées sur le master (avec Git) ou le trunk (avec SVN).Important : toujours exécuter les commandes des gestionnaires de versions avec l'utilisateur du compte système associé et non en root.
Avec Git
première installation
- cloner le dépôt :
- copier les fichier de configuration par défaut / remplir les fichiers de configuration nouvellement créés
- installer les dépendances si besoin (lire chapitre 4 ci-dessous)
mise à jour
- vérifier que tout est propre et qu'on est bien sur la branche master :
- git status
- si c'est pas propre essayer de comprendre pourquoi :
- git diff lefichier/qui/a/change.php
- nettoyer :
- git checkout .
- mettre à jour :
- git pull
Avec SVN
première installation
- checkouter le dépôt, sur le trunk :
- copier les fichier de configuration par défaut / remplir les fichiers de configuration nouvellement créés
- installer les dépendances si besoin (lire chapitre 4 ci-dessous)
mise à jour
- vérifier que tout est propre :
- svn status
- vérifier qu'on est bien sur le trunk :
- svn info
- si c'est pas propre essayer de comprendre pourquoi :
- svn diff lefichier/qui/a/change.php
- nettoyer :
- svn revert .
- mettre à jour :
- svn update
2. Les versions de prod
https://www.tela-botanica.org/appli:https://api.tela-botanica.org
Emplacements
services et scripts
- installés sur Agathis dans /home/apitela/www/(services|scripts)
- utilisent le serveur MySQL de prod (port 3306)
- URL commençant par https://api.tela-botanica.org
interfaces
- installées sur Sequoia dans /home/telabotap/www/eflore
- URL commençant par http://www.tela-botanica.org
interfaces (nouvelle installation >= 2017)
- installées sur Sycomore dans /home/telaorg/www
- URL commençant par https://www.tela-botanica.org
services et scripts
- installée sur Agathis (services et scripts)
- branchée sur le tag de release (avec Git) ou la branche de prod (avec SVN)
- accessible par une URL commençant par https://api.tela-botanica.org (services) ou https://www.tela-botanica.org (interfaces)
interfaces
Déploiement
Les applications de prod sont figées sur une release stable (sauf correction de bug urgente - hotfix); elles sont toujours branchées sur le dernier tag de release (avec Git) ou la dernière branche (avec SVN).Important : toujours exécuter les commandes des gestionnaires de versions avec l'utilisateur du compte système associé et non en root.
Avec Git
première installation
- cloner le dépôt :
- basculer sur le tag de release le plus récent :
- git checkout v1.2.3-mon-super-tag
- copier les fichier de configuration par défaut / remplir les fichiers de configuration nouvellement créés
- installer les dépendances si besoin (lire chapitre 4 ci-dessous)
mise à jour
- vérifier que tout est propre :
- git status
- récupérer les infos à jour :
- git fetch origin
- basculer sur le tag de release le plus récent :
- git checkout v1.2.4-mon-tag-encore-mieux
Avec SVN
première installation
- checkouter le dépôt, sur la branche la plus récente :
- copier les fichier de configuration par défaut / remplir les fichiers de configuration nouvellement créés
- installer les dépendances si besoin (lire chapitre 4 ci-dessous)
mise à jour
- vérifier que tout est propre :
- svn status
- basculer sur la branche la plus récente :
3. Code compilé non versionné (CeL, DeL, CoeL)
Bennes-y tout là-bas d'dans !Certaines applications sont écrites en langage compilé, et le résultat de la compilation n'est pas versionné. C'est le cas de CeL, DeL et CoeL, écrits en Java / GWT.
Pour mettre en ligne ces applis, il faut :
- les compiler en local
- les tester bien sûr
- envoyer le code sur le serveur en SFTP (avec Filezilla par exemple) - en général le dossier war des applications GWT correspond au dossier appli sur le serveur.
4. Dépendances
Certaines applications ont des dépendances gérées avec un système de paquets comme Composer, Bower ou npm. Le fichier README de ces applis est censé indiquer comment faire pour les installer, mais en gros c'est simple :- si un fichier composer.json est présent, faire un composer install
- si un fichier package.json est présent, faire un npm install
- si un fichier bower.json est présent, faire un bower install
5. Sécurité
Accès aux fichiers / dossiers sensibles
La création d'une copie locale d'un dépôt Git ou SVN sur le serveur ajoute un dossier .get ou .svn à la racine de la copie, qui contiennent des informations sensibles.C'est aussi le cas pour les fichiers de configuration .ini et .json.
Il faut régler le serveur Web pour éviter l'accès en HTTP à ces fichiers et dossiers.
Apache
Ajouter dans un fichier .htaccess la ligne suivante# Repourne une erreur 404 lors de l'accès aux dossiers .svn (éviter de savoir que le dossier existe)
RedirectMatch 404 /\\.svn(/|$)
RedirectMatch 404 /\\.git(/|$)
RedirectMatch 404 \\.ini$
RedirectMatch 404 \\config.json$
Nginx
location ~ "\.(svn|git|ht|hg|bzr|cvs)" {- return 404;
location ~ "\.ini$" {
- return 404;
location ~ "config\.json$" {
- return 404;