Installation d’une nouvelle application Voozanoo 4

Edit me

Introduction

Cet article vise à décrire une procédure standard d’installation d’une application Voozanoo 4 sur l’infra d’EpiConcept. Cette procédure contient le branchement à EpiCraft et la préparation des branchements aux autres services (module statistiques, MailMerge, etc.).

Pour la répartition des tâches :

  • L’étape 1 peut être réalisée par un chef de projet.
  • Les étapes suivantes nécessitent un développeur.

Votre application existe déjà ? Si vous souhaitez simplement ajouter un projet à une application déjà existante, merci de suivre cette procédure : Installation d’un nouveau projet sur une application Voozanoo 4 existante

Pré-requis

  • Le noyau dispose d’un outil permettant l’initialisation d’un projet Voo4 (partie Base de données uniquement). Il existe deux versions de l’outil, init.bat (Windows) et init.sh (Linux). Cet outil est présent dans {voo4_path}/src/tools/.
  • Avoir accès à l’interpréteur php depuis le Terminal (Linux) / l’invite de commande (Windows)
    • Pour Linux c’est normalement déjà fait si Php est installé (présent dans /usr/bin et par conséquent reconnu lors de l’appel à php)
    • Pour Windows vous devez modifier la variable d’environnement Path afin d’ajouter le chemin vers le répertoire contenant php.exe
  • Avoir la librairie Zend Framework dans votre include_path
    • Ex : dans le php.ini -> include_path = “.;C:\wamp\www\libs\ZendFramework\1.12.20"
  • Pour Linux : avoir les droits d’exécution sur le Shell init.sh
  • Avoir une base de donnée vide créée pour l’application
  • Avoir les modules PHP suivants :
    • pdo mysql
    • xml
    • mbstring

Si vous ne disposez pas de la librairie Zend Framework Pour Linux tournant sur un serveur apache :

 mkdir -p /var/www/libs/ZendFramework/1.12.20
 curl -L https://github.com/zendframework/zf1/releases/download/release-1.12.20/ZendFramework-1.12.20.tar.gz | tar -xzf - --strip-components=2 -C /var/www/libs/ZendFramework/1.12.20/ZendFramework-1.12.20/library/Zend

Etape 1 : Créer le projet EpiCraft (sans publier)

Etape 1.1 : Créer le projet dans EpiCraft

Dans EpiCraft :

  1. Créer le groupe qui contiendra le projet (exemple : Main > Team 1 > SSP > COSET)
  2. Créer un utilisateur dédié dans ce nouveau groupe.
  3. Se connecter avec ce nouvel utilisateur.
  4. Créer le projet EpiCraft avec cet utilisateur.

De cette manière, le projet EpiCraft sera bien placé et ne sera visible que des personnes qui ont le droit de le voir.

Attention : Ne pas publier les actions pour l’instant.

Récupérer l’id_project dans l’adresse EpiCraft pour une étape ultérieure :

https://epicraft.voozanoo.net/client/#/edit-gui/grfcpdkcjm1517393488908?_k=erdazq

Etape 1.2 : Créer un environnement de publication

Sur le nouveau projet EpiCraft :

  1. Aller sur la page de publication ; aucun environnement n’apparait
  2. Cliquer sur la roue crantée en haut à droite
  3. Cliquer sur le bouton de création d’environnement (le plus vert)
  4. Remplir sur la colonne de droite comme ci-dessous

Image of publication config

Bien entendu :

  • {mon-appli} doit être remplacé par le nom de l’application.
  • {sys_username} et {sys_password} doivent être remplacés par les valeurs de votre choix mais suffisamment sécurisés bien entendu.

Etape 2 : Initialiser un repository à partir du squelette Voo4

Etape 2.1 : Créer un repository sur github

Exemple de nom de repository : mon-appli (préférer les minuscules et le tiret (-) comme séparateur)

Mettre ce repository en privé en y associant l’équipe qui travaillera dessus en read/write.

Ajouter osea-git en contributeur (read) sur le repo créé.

Cette utilisateur sert aux outils de déploiement sur l’infra d’EpiConcept

Etape 2.2 : Récupérer le squelette Voo4

git clone --depth=1 https://github.com/Epiconcept-Paris/Voo4Skeleton mon-appli
cd mon-appli
rm -rf ./.git/ ./README.md ./.gitignore

Etape 2.3 : Ajouter le fichier application.ini

Ajouter un fichier application.ini dans le dossier mon-appli/configs/.

Vous trouverez au bas de cette page un exemple de fichier application.ini contenant déjà les directives importante pour une application appelée mon-appli.

Ne pas oublier de l’adapter (nom de l’application, clef de salage, nom d’hôte de la base de donnée, identifiant et mot de passe de la base de donnée, nom de la base de donnée préalablement créé etc.).

Etape 2.4 : Commiter le résultat vers le repository nouvellement créé

git init
git add .
git commit -m "first commit"
git remote add origin https://github.com/Epiconcept-Paris/mon-appli.git
git push -u origin master

Création du premier tag (en préparation d’une installation sur prefnt2/profnt2)

git tag 1.01.01
git push --tags

Etape 3 : Initialiser la base de données en local

Etape 3.1 : Utiliser les outils init.bat ou init.sh

Les scripts ont été conçus pour être relativement intuitifs, pour lancer l’initialisation d’un Projet Voo4 :

  • Ouvrez un terminal / un(e) invite de commande et placez vous dans le répertoire {voo4_path}/src/tools du noyau Voozanoo4
  • Lancez le script correspondant à votre OS (init.bat ou init.sh)
  • Suivez les indications à l’écran qui permettront de collecter :
    • Le chemin absolu vers le répertoire des ressources de votre application (nécessaire pour la génération du fichier Xml des Acl/Rôles)
    • Les paramètres de connexion à la base de données
    • Les paramètres du projet à ajouter
    • Les paramètres de l’utilisateur “Administrateur” à créer pour le projet

Etape 3.2 : Préparer le branchement à EpiCraft

La table sys_editor de la base Voo4 contient entre autres :

  • Une colonne id_sys_project qui contient l’identifiant du projet Voozanoo 4.
  • Une colonne id_editor qui contient l’identifiant du projet EpiCraft.
  • Une colonne last_action_id qui contient l’identifiant de la dernière action jouée.
  • Une colonne last_action_date qui contient la date de la dernière action jouée.

Il est donc nécessaire d’ajouter un enregistrement dans cette table en cas de branchement à EpiCraft :

INSERT INTO sys_editor (id_sys_project, id_editor, last_action_id, last_action_date)
VALUES ({ID_PROJ_VOO4}, {ID_DANS_EPICRAFT}, '', '2000-01-01 00:00:00');

Dans cette requete :

  • Remplacer {ID_PROJ_VOO4} par l’id_sys_project trouvé dans la table sys_project.
  • Remplacer {ID_DANS_EPICRAFT} par l’identifiant qui apparait dans l’URL d’EpiCraft lorsqu’on est sur une page du projet (retenu lors de l’étape 1.1).

Exemple : grfcpdkcjm1517393488908 trouvé ici :

https://epicraft.voozanoo.net/client/#/edit-gui/grfcpdkcjm1517393488908?_k=erdazq

Etape 3.3 : Création du sysUser

Pour permettre à EpiCraft de publier ses actions vers le projet, il faut créer un utilisateur système. C’est l’utilisateur qui a été utilisé lors de la création de l’environnement de publication dans EpiCraft à l’étape 1.2.

Avant toute chose, il faut vérifier que le fichier {app_path}/resource/cron/voo4_cli.php est bien configuré pour votre environnement de développement. N’hésitez pas à ajouter un “case” pour gérer vos variables d’environnement.

Exemple :

case 'PC-KGR':
        putenv( "VOO4_APPBOOTSTRAPPER=C:\\wamp\\www\\libs\\VOOZANOO4\\" . $sVersionVoo4 . "\\src\\tools\\Voo4_AppBootstrapper.php" );
        putenv( "PATH_VOO4_CORE=C:\\wamp\\www\\libs\\VOOZANOO4\\%s\\src" );
        putenv( "PATH_VOO4_EXTLIB=C:\\wamp\\www\\libs\\VOOZANOO4\\%s\\libs" );
        putenv( "PATH_FARM=/var/www/workdata" );
        putenv( "PATH_ZF=C:\\wamp\\www\\libs\\ZendFramework" );
        putenv( "APPLICATION_ENV=dev_kgr" );
        break;

Pour connaitre votre “case”, il faut exécuter la commande :

php -r "echo( php_uname( 'n' ) );"

Une fois ces vérifications faites, vous pouvez exécuter la commande suivante pour créer le sysUser

php voo4_cli.php mtd=createSysUser username={sys_username} password={sys_password} email={sys_email}

Attention : {sys_mail} a de l’importance car c’est cette adresse qui sera utilisée lors de la création d’un nouveau projet.

Créer le dossier [nom-appli]/resources/sql/etapes/ et effectuer un dump.

mysqldump -u root -p [nom-base] > [nom-appli]/resources/sql/etapes/install.sql

Etape 4 : Installation sur le serveur

Etape 4.1 : Création et envoi du paquet Debian

Depuis rebond2 :

ssh -A epiconcept_build@debian-build2 

Sur debian-build2 :

cd ~/bin && ./mkpack.voo4appligit {NOM_DU_REPO_GIT} {TAG_GIT_(ex : 1.01.01)} && ./debenvoi 

Si l’erreur suivante apparait, ERROR: File /var/epiconcept_build/tmp/GITIMPORT//configs/application.ini does not exists., il peut y avoir 2 explications :

  • le numéro de release/tag n’existe pas sur GitHub, il faut créer la release ou corriger le numéro dans la commande mkpack
  • la release ne contient pas une application complète. Il faut refaire une release avec une application complète.

Après correction de l’erreur, le dossier GITIMPORT posera problème car il n’est pas supprimé automatiquement. Il faut le supprimer manuellement avant de relancer la commande.

rmdir /var/epiconcept_build/tmp/GITIMPORT


Etape 4.3 : Installation, création des liens symboliques et des vhosts

Sur prefnt2 / pro :

sudo ecdep up epi-{NOM_DU_REPO_GIT}-1.01

Plus d’information sur la commande vhost ici

Etape 4.4 : Activation la communication avec ce nouveau vhost

Ceci est nécessaire pour la communication avec EpiCraft, ModuleStats, MailMerge, etc.

Sur le serveur de EpiCraft (c’est-à-dire profnt2) :

sudo etchosts_up action 

Etape 4.5 : Création et alimentation de la base de données

Sur prebdda1.ssh / probdd1.ssh :

/usr/local/bin/mysql_new_user.sh {BDD_NAME} 

Cette commande vous renverra le mot de passe générer pour l’utilisateur de la base de données, utile pour l’étape 4.6.

Ensuite, alimenter cette base avec le dump précédemment créé en local.

Il est fortement recommandé d’utiliser le script load pour charger les dumps

load [base] [chemin vers fichier]

Exemple : load astrinf ~/Work/backup.sql

Etape 4.6 : Copie des identifiants de l’utilisateur de la base de données dans les fichiers de confs

Sur prefnt2, copier les identifiants de l’utilisateur de la base de données dans les fichiers suivants :

  • /space/www/configuration/voozanoo4/configuration/mon-appli_1.01.ini (ce fichier vient du repository Git et est pareillement réécrit avec les informations présentes dans le fichier ci-dessous)
  • /space/www/configuration/voozanoo4/configuration/mon-appli.ini (ce fichier reste sur le serveur et contient les accès à la base de données)

Etape 5 : Tester l’installation

Tester l’application pour valider que l’installation a bien été faites :

  • Se connecter avec un compte utilisateur.
  • Lancer le plan de test depuis la page de paramétrage.
  • Faire une publication depuis EpiCraft.