services:notice_technique_du_siflore

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
services:notice_technique_du_siflore [2016/12/07 15:44]
anais.just@fcbn.fr [Vérifier l'installation]
services:notice_technique_du_siflore [2022/03/07 12:00] (Version actuelle)
Ligne 2: Ligne 2:
  
 ====== Généralités sur l'application ====== ====== Généralités sur l'application ======
 +===== Notice technique d'installation=====
 +[[services:notice_technique_du_siflore|La notice technique d'installation se trouve ici]]
 +
  
 ===== Contexte du projet/Outils ===== ===== Contexte du projet/Outils =====
Ligne 13: Ligne 16:
  
  
-  * le framework php "Symfony2":http://symfony.com/ basé sur le standard de Modèle Vue Controller MVC +  * le framework php [[http://symfony.com/|Symfony2:]] basé sur le standard de Modèle Vue Controller MVC 
  
 >Les « distributions » Symfony2 sont des applications entièrement fonctionnelles qui incluent les bibliothèques du coeur de Symfony2, une sélection de bundles utiles, une arborescence pratique et une configuration par défaut. Une distribution Symfony2 est un squelette d'application qui peut être immédiatement utilisé pour commencer à développer. >Les « distributions » Symfony2 sont des applications entièrement fonctionnelles qui incluent les bibliothèques du coeur de Symfony2, une sélection de bundles utiles, une arborescence pratique et une configuration par défaut. Une distribution Symfony2 est un squelette d'application qui peut être immédiatement utilisé pour commencer à développer.
Ligne 19: Ligne 22:
 > Les bundles ont chacun un rôle précis. Ces bundles sont activables en fonction du besoin et permettent ensemble de déployer une application web complète, en passant par l'authentification, la sécurité, l'administration de données, la construction dynamique de pages, la mise en place de web services, ... > Les bundles ont chacun un rôle précis. Ces bundles sont activables en fonction du besoin et permettent ensemble de déployer une application web complète, en passant par l'authentification, la sécurité, l'administration de données, la construction dynamique de pages, la mise en place de web services, ...
  
-  * la librairie FOSUserBundle  qui permet d'implémenter un système d'authentification dynamique ("SONATA":http://sonata-project.org gérant l'interface de connexion et faisant appel à la librairie FOS pour la gestion des utilisateurs).+  * la librairie FOSUserBundle  qui permet d'implémenter un système d'authentification dynamique ([[http://sonata-project.org|SONATA]] gérant l'interface de connexion et faisant appel à la librairie FOS pour la gestion des utilisateurs).
  
 > Le système d'autorisation donne la possibilité de gérer une liste de permissions (rôles) attribuables aux utilisateurs et/ou aux groupes. Ces permissions définissent l'accès à des fonctionnalités à tous les niveaux de l'application. **Symfony2** propose de hiérarchiser ces permissions ce qui offre une grande flexibilité dans la gestion des droits d'accès > Le système d'autorisation donne la possibilité de gérer une liste de permissions (rôles) attribuables aux utilisateurs et/ou aux groupes. Ces permissions définissent l'accès à des fonctionnalités à tous les niveaux de l'application. **Symfony2** propose de hiérarchiser ces permissions ce qui offre une grande flexibilité dans la gestion des droits d'accès
Ligne 27: Ligne 30:
 > Twig est le moteur de template suggéré par Symfony2. Il permet de séparer la présentation du reste de l'application. Twig est responsable du rendu d'une page HTML. > Twig est le moteur de template suggéré par Symfony2. Il permet de séparer la présentation du reste de l'application. Twig est responsable du rendu d'une page HTML.
  
-  * le framework CSS/JS "Bootstrap":http://getbootstrap.com/ permet, entre autres choses, que le rendu de l'interface s'adapte à différents moniteurs (responsive web design). L'extension **"Less"**:http://bootstrap.lesscss.ru/less.html est utilisée pour compiler le CSS.+  * le framework CSS/JS [[http://getbootstrap.com/|Bootstrap]] permet, entre autres choses, que le rendu de l'interface s'adapte à différents moniteurs (responsive web design). L'extension [[http://bootstrap.lesscss.ru/less.html|Less]] est utilisée pour compiler le CSS.
  
   * l'ORM **Doctrine 2**   * l'ORM **Doctrine 2**
Ligne 35: Ligne 38:
   * La librairie **Python Fabric**   * La librairie **Python Fabric**
  
-"Fabric":http://thomas.rabaix.net/blog/2010/09/using-fabric-to-deploy-symfony-application est une librairie utilisée en ligne de commande pour automatiser les routines de l'administrateur (commandes présentes dans le fabfile).+[[http://thomas.rabaix.net/blog/2010/09/using-fabric-to-deploy-symfony-application|Fabric]] est une librairie utilisée en ligne de commande pour automatiser les routines de l'administrateur (commandes présentes dans le fabfile).
  
   * et toujours **geoext**, **javascript**... l'utilisation de jext à été abandonnée au profit de php.   * et toujours **geoext**, **javascript**... l'utilisation de jext à été abandonnée au profit de php.
  
-Par ailleurs l'appel aux différentes librairies javascript et css se fait à travers des "CDN":http://www.cdnjs.com| (Content Delivery Network). Cela permet de ne pas avoir à installer en dur les librairies, il suffit de copier le lien dans le code de l'application (en revanche certaines fonctionnalités de l'application ne sont pas disponible en mode déconnecté).+Par ailleurs l'appel aux différentes librairies javascript et css se fait à travers des [[http://www.cdnjs.com|CDN:]] (Content Delivery Network). Cela permet de ne pas avoir à installer en dur les librairies, il suffit de copier le lien dans le code de l'application (en revanche certaines fonctionnalités de l'application ne sont pas disponible en mode déconnecté).
  
 D'autres outils ont été utilisées par les développeurs tout au long du projet: D'autres outils ont été utilisées par les développeurs tout au long du projet:
  
-**"Redmine"**: http://www.redmine.org/ application web libre de gestion de projet\\ +[[http://www.redmine.org/|Redmine]] application web libre de gestion de projet\\ 
-**"Git"**:http://git-scm.com/ logiciel de gestion de version décentralisé\\ +[[http://git-scm.com/|Git]] logiciel de gestion de version décentralisé\\ 
-**"Composer"**:https://getcomposer.org/ gestionnaire de dépendances pour php ( gère les librairies serveur)\\ +[[https://getcomposer.org/|Composer]] gestionnaire de dépendances pour php ( gère les librairies serveur)\\ 
-**"CDNJS"**:http://cdnjs.com/ C'est un content delivery network qui gère les librairies javascript. Il est appellé dans un fichier de template à travers des liens url.\\+[[http://cdnjs.com/|CBNJS]] C'est un content delivery network qui gère les librairies javascript. Il est appellé dans un fichier de template à travers des liens url.\\
  
 > Un content delivery network (CDN) est constitué d’ordinateurs reliés en réseau à travers Internet et qui coopèrent afin de mettre à disposition du contenu ou des données (généralement du contenu multimédia volumineux) à des utilisateurs. > Un content delivery network (CDN) est constitué d’ordinateurs reliés en réseau à travers Internet et qui coopèrent afin de mettre à disposition du contenu ou des données (généralement du contenu multimédia volumineux) à des utilisateurs.
Ligne 53: Ligne 56:
 ==== La version (v2) proposée: ==== ==== La version (v2) proposée: ====
  
-Elle utilise les mêmes librairies/outil que la V1. La partie SIFLore (NewSIFLoreBundle) a évolué. La partie SIVeg a été intégrée (NewSIVegBundle).+Elle utilise les mêmes librairies/outils que la V1. La partie SIFLore (NewSIFLoreBundle) a évolué. La partie SIVeg a été intégrée (NewSIVegBundle).
  
 ===== Arborescence du projet sous Symfony ===== ===== Arborescence du projet sous Symfony =====
Ligne 83: Ligne 86:
       *   src\Fcbn\…\Service : regroupes les classes avec un but précis – côté serveur       *   src\Fcbn\…\Service : regroupes les classes avec un but précis – côté serveur
       *   src\Application : Bundles Sonata (Bundles spécifique orienté CMS)       *   src\Application : Bundles Sonata (Bundles spécifique orienté CMS)
-  *   vendor -->librairies utilisées par le projet (ex: fos, sonata, swiftmailer, symphony, doctrine...) ATTENTION : NE JAMAIS MODIFIER VENDOR DIRECTEMENT+  *   vendor -->librairies utilisées par le projet (ex: fos, sonata, swiftmailer, symphony, doctrine...) **ATTENTION : NE JAMAIS MODIFIER VENDOR DIRECTEMENT**
   *   web --> contient les fichiers assets globaux qui concernent tout le projet(css, javascript...) par ex: bootstrap (NB : tous les assets installés de src/ sont copiés dans web/ ils sont rafraichis avec la commande  php app/console assetic:dump)   *   web --> contient les fichiers assets globaux qui concernent tout le projet(css, javascript...) par ex: bootstrap (NB : tous les assets installés de src/ sont copiés dans web/ ils sont rafraichis avec la commande  php app/console assetic:dump)
  
Ligne 155: Ligne 158:
 |maille_display|Affiche le champ quand on est en mode maille (5 ou 10km)|false| |maille_display|Affiche le champ quand on est en mode maille (5 ou 10km)|false|
 |commune_display|Affiche le champ en mode commune|false| |commune_display|Affiche le champ en mode commune|false|
-|label|Libellé à afficher en haut de la colonne|index du champ en remplaçant les @_par des espaces|+|label|Libellé à afficher en haut de la colonne|index du champ en remplaçant les **_** par des espaces|
 |field_name|Partie du SELECT qui sera utilisée pour récupérer le champ en SQL|index du champ| |field_name|Partie du SELECT qui sera utilisée pour récupérer le champ en SQL|index du champ|
-|header_classes|Classes CSS à appliquer au @thde la colonne| | +|header_classes|Classes CSS à appliquer au **th** de la colonne| | 
-|body_classes|Classes CSS à appliquer aux @tdde la colonne| |+|body_classes|Classes CSS à appliquer aux **td** de la colonne| |
 |roles|Rôles requis pour voir ce champ| | |roles|Rôles requis pour voir ce champ| |
 |not_roles|Rôles exclus pour voir ce champ| | |not_roles|Rôles exclus pour voir ce champ| |
Ligne 184: Ligne 187:
 </code> </code>
  
-Le titre de la colonne serait "id flore fcbn" car aucun @labeln'est défini (l'index du champ *id_flore_fcbn* est utilisé et les @_sont remplacés par des espaces).+Le titre de la colonne serait "id flore fcbn" car aucun **label** n'est défini (l'index du champ *id_flore_fcbn* est utilisé et les **_** sont remplacés par des espaces).
  
 <code class="yml"> <code class="yml">
Ligne 203: Ligne 206:
  
 Ici on définit 2 fois la même donnée mais pour différencier 2 comportements. Ici on définit 2 fois la même donnée mais pour différencier 2 comportements.
-Ainsi les utilisateurs non connectés verront le champ @date_premiere_obs_year(juste l'année) et les autres verront @date_premiere_obs(date complète)+Ainsi les utilisateurs non connectés verront le champ **date_premiere_obs_year** (juste l'année) et les autres verront **date_premiere_obs** (date complète)
  
 ===== Requêtes (en base de donnée) ===== ===== Requêtes (en base de donnée) =====
Ligne 209: Ligne 212:
 Les requêtes vers les données SIFlore sont stockées dans le fichier source:/src/Fcbn/NewSIFloreBundle/Services/QueryService.php Les requêtes vers les données SIFlore sont stockées dans le fichier source:/src/Fcbn/NewSIFloreBundle/Services/QueryService.php
  
-Elles utilisent la connexion *siflore* (paramétrée dans [[Wiki#Bases-de-données|config.yml]]) avec des "requêtes préparées":http://www.php.net/manual/fr/pdo.prepared-statements.php.+Elles utilisent la connexion **siflore** (paramétrée dans [[services:notice_technique_du_siflore#bases_de_donnees|config.yml]]) avec des "requêtes préparées":http://www.php.net/manual/fr/pdo.prepared-statements.php.
  
 Le fichier est un "service":http://symfony.com/fr/doc/current/book/service_container.html Symfony contenant une fonction par requête. Le fichier est un "service":http://symfony.com/fr/doc/current/book/service_container.html Symfony contenant une fonction par requête.
Ligne 216: Ligne 219:
  
 L’accès à ces requêtes est sécurisé dans source:/src/Fcbn/NewSIFloreBundle/Controller/QueryController.php L’accès à ces requêtes est sécurisé dans source:/src/Fcbn/NewSIFloreBundle/Controller/QueryController.php
-Par exemple c'est ici qu'on interdit l’accès aux commentaires. Attention, ça ne conditionne pas l'affichage (onglets, boutons, ...) l'affichage est géré dans les [[Wiki#Templates|templates]]. +Par exemple c'est ici qu'on interdit l’accès aux commentaires. Attention, ça ne conditionne pas l'affichage (onglets, boutons, ...) l'affichage est géré dans les [[services:notice_technique_du_siflore#templates_affichage|templates]]. 
-La partie **SELECT** de chaque requête qui concerne une grid (Synthèses & Observations) est construite à partir de la [[wiki#Synthèses-38-Observations|configuration correspondante]]+La partie **SELECT** de chaque requête qui concerne une grid (Synthèses & Observations) est construite à partir de la [[services:notice_technique_du_siflore#syntheses_observations|configuration correspondante]]
  
 ===== Layers ===== ===== Layers =====
Ligne 224: Ligne 227:
  
 Les layers sont stockés dans la base de donnée du portail. Les layers sont stockés dans la base de donnée du portail.
-La table s’appelle @maplayers@.+La table s’appelle **maplayers**.
 On peut y configurer notamment: On peut y configurer notamment:
  
Ligne 235: Ligne 238:
  
 L'appel et le paramétrage des fonds cartographiques est fait dans le fichier source:/src/Fcbn/NewSIFloreBundle/Resources/public/js/sifloremaps.js L'appel et le paramétrage des fonds cartographiques est fait dans le fichier source:/src/Fcbn/NewSIFloreBundle/Resources/public/js/sifloremaps.js
 +
 +Un flux de cartes WMS est généré à partir de [[http://docs.qgis.org/testing/en/docs/user_manual/working_with_ogc/ogc_server_support.html|QGIS mapserveur]] (version 1.3,  aujourd'hui le projet s'appelle qgisserver et est en version 2.0) avec un projet carto QGIS enregistré dans la version 1.8 \\P
 +Le projet se trouve ici /home/fcbn/htdocs/fond_carto/fond_carto_si_flore.qgs avec tous les shapefiles qui l'accompagnent.
  
 ==== Fixtures (Layers d'origine) ==== ==== Fixtures (Layers d'origine) ====
Ligne 337: Ligne 343:
  
   * Pour l'envoi des mails de réinitialisation de mot de passe, Symfony a besoin d'un destinataire.   * Pour l'envoi des mails de réinitialisation de mot de passe, Symfony a besoin d'un destinataire.
-Celui-ci est réglé dans source:app/config/config.yml dans la section @fos_user.from_email@+Celui-ci est réglé dans source:app/config/config.yml dans la section **fos_user.from_email**
   * Par défaut, Symfony utilise le SMTP local, donc il doit y en avoir un d'installé sur la machine ("exemple Postfix":https://www.digitalocean.com/community/articles/how-to-install-and-setup-postfix-on-ubuntu-12-04)   * Par défaut, Symfony utilise le SMTP local, donc il doit y en avoir un d'installé sur la machine ("exemple Postfix":https://www.digitalocean.com/community/articles/how-to-install-and-setup-postfix-on-ubuntu-12-04)
   * Quand un utilisateur demande un nouveau mot de passe, la date est stokée dans la table des utilisateurs ce qui l’empêche de faire une 2eme demande   * Quand un utilisateur demande un nouveau mot de passe, la date est stokée dans la table des utilisateurs ce qui l’empêche de faire une 2eme demande
Ligne 360: Ligne 366:
  
 ==== Récupérer le projet ==== ==== Récupérer le projet ====
- 
- 
-Au préalable la clé ssh doit avoir été envoyée à l'admin. 
- 
-=== Générer une clé SSH === 
- 
- 
-Si aucune clé n'a encore été créée 
- 
-<code>$ ssh-keygen</code> 
- 
-Laisser toutes les valeurs par defaut (Enter à chaque fois). 
-Afficher le contenu de la clé publique: 
- 
-<code> 
-$ cd 
-$ cat .ssh/id_rsa.pub 
-</code> 
- 
-Copier/coller le resultat dans un mail pour l'admin 
- 
-=== Cloner === 
- 
  
 La récupération du projet se fait en clonant le repository avec git La récupération du projet se fait en clonant le repository avec git
  
-<code>git clone fcbn@dev.masao.eu:fcbn.git</code> +<code>https://github.com/fedecbn/sifloreveg.git</code>
- +
-Si le message suivant aparait +
- +
-> Agent admitted failure to sign using the key. +
- +
-Vous devrez ajouter votre clé à l'agent SSH +
- +
-<code>$ ssh-add</code>+
  
 === Racine du projet === === Racine du projet ===
- 
  
 À partir d'ici, lancer toutes les commandes à la racine du projet: À partir d'ici, lancer toutes les commandes à la racine du projet:
Ligne 416: Ligne 390:
  
 ===== Installer les extensions php ===== ===== Installer les extensions php =====
- 
  
 <code>$ sudo apt-get install php5-cli php5-intl php5-gd php5-json php5-pgsql</code> <code>$ sudo apt-get install php5-cli php5-intl php5-gd php5-json php5-pgsql</code>
Ligne 429: Ligne 402:
  
  
-À la [[Wiki#Racine-du-projet|racine du projet]]+À la racine du projet
 <code> <code>
 $ curl -s https://getcomposer.org/installer | php $ curl -s https://getcomposer.org/installer | php
 </code> </code>
  
-Si @curln'est pas présent, l'installer:+Si **curl** n'est pas présent, l'installer:
 <code> <code>
 $ sudo apt-get install curl $ sudo apt-get install curl
Ligne 464: Ligne 437:
 Utiliser l'éditeur de texte nano et recopier dedans le vhost indiqué plus bas Utiliser l'éditeur de texte nano et recopier dedans le vhost indiqué plus bas
 <code>$ sudo nano /etc/apache2/sites-available/fcbn.conf</code> <code>$ sudo nano /etc/apache2/sites-available/fcbn.conf</code>
-Si @nanon'est pas present, l'installer:+Si **nano** n'est pas present, l'installer:
 <code>$ sudo apt-get install nano</code> <code>$ sudo apt-get install nano</code>
 Coller le vhost ci-dessous dans nano Coller le vhost ci-dessous dans nano
 <code class="xml"> <code class="xml">
 <VirtualHost *:80> <VirtualHost *:80>
-    ServerAdmin cestmoil@admin.net+    ServerAdmin cestmoil**admin.net
  
     DocumentRoot "/var/www/fcbn/"     DocumentRoot "/var/www/fcbn/"
Ligne 500: Ligne 473:
 <code>$ echo "ServerName localhost" | sudo tee -a /etc/apache2/apache2.conf</code> <code>$ echo "ServerName localhost" | sudo tee -a /etc/apache2/apache2.conf</code>
  
-===== Activer le module @rewrite=====+===== Activer le module **rewrite** =====
  
  
-@rewritepermet de modifier les chemins de requête HTTP en temps réel+**rewrite** permet de modifier les chemins de requête HTTP en temps réel
 <code>$ sudo a2enmod rewrite</code> <code>$ sudo a2enmod rewrite</code>
  
Ligne 512: Ligne 485:
  
  
-Faire pointer @/var/www/fcbn/sur le repertoire contenant @app.phpet @app_dev.php@+Faire pointer **/var/www/fcbn/** sur le repertoire contenant **app.php** et **app_dev.php**
 <code>$ sudo ln -s ~moi/fcbn/web/ /var/www/fcbn</code> <code>$ sudo ln -s ~moi/fcbn/web/ /var/www/fcbn</code>
-Remplacer @~moi/fcbn/web/par le chemin d'installation de l'application (en y incluant le répertoire @web@)+Remplacer **~moi/fcbn/web/** par le chemin d'installation de l'application (en y incluant le répertoire **web**)
  
 ===== Activer le vhost ===== ===== Activer le vhost =====
Ligne 545: Ligne 518:
  
  
-<code>$ php app/console fos:user:create --super-admin admin cestmoil@admin.net pass</code>+<code>$ php app/console fos:user:create --super-admin admin cestmoil**admin.net pass</code>
  
 ===== Vérifier l'installation ===== ===== Vérifier l'installation =====
  • services/notice_technique_du_siflore.1481121859.txt.gz
  • Dernière modification: 2022/03/07 12:00
  • (modification externe)