Commit 15cd0b04 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Déplacement des docs dans le dépôt sygal-doc.

parent ac162eee
Loading
Loading
Loading
Loading
+1 −253
Original line number Diff line number Diff line
# Installation de SyGAL



## Création de la base de données

Reportez-vous au [README consacré à la création de la base de données](doc/database/README.md).



## Installation 

Pour ce qui est de l'installation du serveur d'application, n'ayant pas à Caen les compétences 
en déploiement Docker autres que pour le développement (d'où la présence d'un `Dockerfile` et d'un `docker-compose.yml`
dans les sources), nous documenterons une installation à l'ancienne sur un serveur *entièrement dédié à l'application*.
Si vous voulez déployer l'application avec Docker, faites-le à partir du `Dockerfile` présent et n'hésitez pas à 
proposer des améliorations pour cette doc d'install!

### Première obtention des sources de l'application

*NB: la procédure proposée ici part d'un serveur *Debian Stretch* tout nu et couvre l'installation de tous les packages 
requis.* Si ce n'était pas le cas, merci de le signaler.

En `root` sur votre serveur, pour obtenir les sources de SyGAL, lancez l'une des commandes suivantes en fonction 
du site sur lequel vous lisez la présente page :
```bash
# Si vous êtes sur git.unicaen.fr :
git clone https://git.unicaen.fr/open-source/sygal.git /app

# Si vous êtes sur github.com :
git clone https://github.com/EsupPortail/sygal.git /app
```

*NB: merci de respecter dans un premier temps le choix de `/app` comme répertoire d'installation. 
Libre à vous une fois que tout fonctionne de changer d'emplacement et de modifier en conséquence les configs
nécessaires.*

### Configuration du serveur

Sur le serveur, placez-vous dans le répertoire des sources de SyGAL et jetez un oeil au script `Dockerfile.sh`.
Ce script est en quelque sorte l'équivalent du `Dockerfile` traduit en bash. 
(Vous y verrez que le dépôt git d'une image Docker Unicaen est cloné pour lancer 
son script `Dockerfile.sh` qui est lui aussi l'équivalent du `Dockerfile` de l'image 
traduit en bash.)

Lancez le script `Dockerfile.sh` ainsi :
```bash
cd /app
bash Dockerfile.sh 7.0
```

Ensuite, vérifiez et ajustez si besoin sur votre serveur les fichiers de configs suivants,
créés par le script `Dockerfile.sh` :
- ${APACHE_CONF_DIR}/ports.conf
- ${APACHE_CONF_DIR}/sites-available/app.conf
- ${APACHE_CONF_DIR}/sites-available/app-ssl.conf  
- ${PHP_CONF_DIR}/fpm/pool.d/app.conf
- ${PHP_CONF_DIR}/fpm/conf.d/90-app.ini

NB: Vérifiez dans le script `Dockerfile.sh` que vous venez de lancer mais normalement 
`APACHE_CONF_DIR=/etc/apache2` et `PHP_CONF_DIR=/etc/php/7.0`.

### Installation d'une version précise de l'application

Normalement, vous ne devez installer que les versions officielles, c'est à dire les versions taguées, du genre `1.1.4`
par exemple.

Placez-vous dans le répertoire des sources de l'application puis lancez les commandes suivantes pour obtenir la liste des
versions officielles (taguées) :
```bash
git fetch && git fetch --tags && git tag
```

Si la version la plus récente est par exemple la `1.1.4`, utilisez les commandes suivantes pour "installer" cette version 
sur votre serveur :
```bash
git checkout --force 1.1.4 && bash install.sh
```

### Configuration du moteur PHP pour SyGAL

Si l'on est sur un serveur de PROD, corrigez les lignes suivantes du fichier de config PHP 
`/etc/php/7.0/fpm/conf.d/90-app.ini` :

    ...
    display_errors = Off
    ...
    opcache.enable = 1
    ...

### Fichiers de config de l'application

Placez-vous dans le répertoire de l'application puis descendez dans le répertoire `config/autoload/`.

Supprimez l'extension `.dist` des fichiers `local.php.dist` et `secret.local.php.dist`, ex :
```bash
cp -n local.php.dist        local.php 
cp -n secret.local.php.dist secret.local.php
```

Dans la suite, vous adapterez le contenu de ces fichiers à votre situation.

#### `unicaen-app.global.php`

- Adaptez les URL des pages "Mentions légales" et "Informatique et liberté" pour votre établissement :

```php
    'unicaen-app' => [
        'app_infos' => [
            //...
            'mentionsLegales'        => "http://www.unicaen.fr/acces-direct/mentions-legales/",
            'informatiqueEtLibertes' => "http://www.unicaen.fr/acces-direct/informatique-et-libertes/",
```

#### `local.php`

- Adaptez le `'label'`, `'title'` et `'uri'` du lien mentionnant votre établissement dans le pied de page de 
  l'application :

```php
    'navigation'   => [
        'default' => [
            'home' => [
                'pages' => [
                    'etab' => [
                        'label' => _("Normandie Université"),
                        'title' => _("Page d'accueil du site de Normandie Université"),
                        'uri'   => 'http://www.normandie-univ.fr',
                        'class' => 'logo-etablissement',
                        // NB: Spécifier la classe 'logo-etablissement' sur une page de navigation provoque le "remplacement"
                        //     du label du lien par l'image 'public/logo-etablissement.png' (à créer le cas échéant).
```
*NB: ensuite créez le fichier `public/logo-etablissement.png` correspondant au logo de votre établissement.*

- Adaptez le chemin du répertoire où seront stockés les fichiers uploadés par les utilisateurs de l'application :

```php
    'fichier' => [
        'root_dir_path' => '/app/upload',
    ],
```
*NB: ce répertoire doit être autorisé en écriture à l'utilisateur `www-data` (ou équivalent).*

#### `secret.local.php`

- Dans la config de connexion au WS suivante, `'UCN'` doit être remplacé par le code établissement choisi lors
de la création de votre établissement dans la base de données (dans le script `05-init.sql`) :

```php
    'import-api' => [
        'etablissements' => [
            // code établissement => [config]
            'UCN' => [
                'url'      => 'https://sygal-import-ws:443',
                'proxy'    => false,
                'verify'   => false, // si true et faux certif : cURL error 60: SSL certificate problem: self signed certificate
                'user'     => 'xxx',
                'password' => 'yyy',
```

- Renseignez les infos de connexion à la base de données :

```php
    'doctrine' => [
        'connection' => [
            'orm_default' => [
                'params' => [
                    'host'     => 'host.domain.fr',
                    'dbname'   => 'DBNAME',
                    'port'     => '1523',
                    'user'     => $user = 'sygal',
                    'password' => 'xxxxxxxxxxx',
                    'charset'  => 'AL32UTF8',
                    'CURRENT_SCHEMA' => $user,
```

- La config fournie permet de simuler l'authentification Shibboleth de l'utilisateur 'premierf@univ.fr' 
créé en base de données (dans le script `05-init.sql`) avec le rôle "Administrateur technique".
Cela permet d'accéder aux pages de gestion des droits d'accès.

```php
    'unicaen-auth' => [
        'shibboleth' => [
            'simulate' => [
                'HTTP_EPPN'           => $eppn = 'premierf@univ.fr',
                'HTTP_SUPANNEMPID'    => '00012345',
                'HTTP_DISPLAYNAME'    => $eppn,
                'HTTP_MAIL'           => $eppn,
                'HTTP_GIVENNAME'      => 'François',
                'HTTP_SN'             => 'Premier',
                'HTTP_SUPANNCIVILITE' => 'M.'
```

- Théoriquement, à ce stade l'application SyGAL devrait être accessible.


## Dans l'application SyGAL elle-même

Si vous n'avez rien changé à la config de l'application concernant Shibboleth et si vous cliquez en haut à droite de
la page d'accueil de SyGAL sur "Connexion" puis sur "Fédération d'identité", vous devriez être dans la peau de 
François Premier, administrateur technique de test créé en base de données (dans le script `05-init.sql`).

### Droits d'accès

Dans l'application SyGAL, allez dans menu "Droits d'accès" > "Gestion des profils de rôle".

Appliquez, svp : 
- le profil `ADMIN_TECH` au rôle *Administrateur technique*
- le profil `OBSERV` au rôle *Observateur*
- le profil `DOCTORANT` au rôle *Doctorant UCN*
- le profil `ADMIN` au rôle *Administrateur UCN*
- le profil `BU` au rôle *Bibliothèque universitaire UCN*
- le profil `BDD` au rôle *Bureau des doctorats UCN*

NB: "UCN" n'est qu'un exemple et pour vous ce sera le code établissement choisi lors
de la création de votre établissement dans la base de données (dans le script `05-init.sql`) 

### Import

Allez dans menu "Import" pour contrôler que l'application parvient à contacter votre web service. 
La version de l'API devrait s'afficher, ex: 1.2.4.

Ne tenez pas compte du menu "Lancement" car il n'est pas possible de lancer l'import des données
depuis l'interface graphique.



## En lignes de commande 

Placez-vous dans le répertoire de SyGAL sur le serveur pour lancer l'import puis la synchro des données.

Ce qui suit n'est possible que si le web service d'import de données est installé, si ce n'est pas le cas, 
reportez-vous au projet `sygal-import-ws` [sur github.com/EsupPortail](https://github.com/EsupPortail/sygal-import-ws)
ou [sur git.unicaen.fr](https://git.unicaen.fr/open-source/sygal-import-ws).

### Lancement de l'import des données

Il s'agit de l'interrogation du WS et du remplissage des tables TMP_*.

    php public/index.php import-all --etablissement=UCN --synchronize=0 --breakOnServiceNotFound=0

*NB: `'UCN'` doit être remplacé par le code établissement choisi lors
    de la création de votre établissement dans la base de données (dans le script `05-init.sql`).*

### Lancement de la synchro à partir des données importées 

Il s'agit de la synchronisation des tables définitves de travail de l'application avec les tables TMP_* 
contenant les données déjà importées.

    php public/index.php synchronize-all

Pour plus de détails, vous pouvez vous reporter à la documentation sur les [lignes de commandes](doc/cli.md).

Une fois la synchro effectuée, vous devriez voir des thèses apparaître en cliquant sur le menu "Thèses" de 
l'application.
Cette page est désormais sur [ce dépôt](https://git.unicaen.fr/open-source/sygal-doc).
+3 −2
Original line number Diff line number Diff line
@@ -3,9 +3,10 @@
SYstème de Gestion et d'Accompagement doctoraL


## Installation
## Documentation

Cf. [`INSTALL.md`](INSTALL.md).
Allez à l'adresse suivante et pensez bien à sélectionner la branche correspondant à la version voulue (ex: 1.1.4) : 
https://git.unicaen.fr/open-source/sygal-doc/blob/master/README.md 


## Lancement de l'application *pour le dévelopement*

doc/README.md

deleted100644 → 0
+0 −7
Original line number Diff line number Diff line
# Documentation

- [Initialisation de la base de données](database/README.md)

- [Ligne de commande](cli.md)

- [Notes de versions](release-notes)
 No newline at end of file

doc/cli.md

deleted100644 → 0
+0 −93
Original line number Diff line number Diff line
# Ligne de commande de SyGAL

Pour afficher l'aide de toutes les commandes fournies par l'application, se placer à la racine du projet 
et faire :

    $ php public/index.php


## Import

En fait, on peut désigner par "import" l'enchainement des actions suivantes :
- "importer" les données d'un établissement, càd :
    - interroger le WS d'un établissement (projet "sygal-import-ws") ; 
    - enregistrer les données reçues dans des tables temporaires `TMP_*` ; 
- "synchroniser" les tables définitives à partir des tables temporaires (module "unicaen/import").


### Les services disponibles

Les données importées sont fractionnées en domaines ou "services", qui reflètent en réalité chacun une table dans 
la base de données de l'application.

Voici les codes des services existants :
- structure
- ecole-doctorale
- unite-recherche
- etablissement
- individu
- doctorant
- these
- role
- acteur
- variable
- financement
- titre-acces

Lorsqu'on importe les écoles doctorales, on référence le service dont le code est `ecole-doctorale`.
C'est ce code du service qui devra être spécifié via l'argument `--etablissement` des commandes présentées ici.


### Commandes d'import
 
L'import se fait pour *un seul établissement à la fois*. Les établissements dont on veut importer les données
doivent être déclarés dans la config PHP de l'appli : cf. [local.php.dist](../config/autoload/local.php.dist)

C'est le "code établissement" choisi dans la config qui devra être spécifié via l'argument `--etablissement` 
des commandes présentées ici.

#### `import`

On parle ici de lancer l'import d'un service précis.

Par exemple, pour lancer l'import des variables de l'UCN, mais sans lancer la synchro des tables définitives :
    
    $ php public/index.php import --service=variable --etablissement=UCN --synchronize=0

Pour lancer en plus la synchro après l'interrogation du WS, mettre `--synchronize=1`.

#### `import-all`

Cette commande lance l'import de tous les services.

Par exemple, pour lancer l'import complet des données de l'UCN, sans lancer la synchro des tables définitives :
    
    $ php public/index.php import-all --etablissement=UCN --synchronize=0

Pour que la synchro se fasse après l'interrogation du WS, mettre `--synchronize=1`.


### Commandes de synchro

On parle ici de synchroniser les données des tables définitives de l'application avec celles des tables 
temporaires `TMP_*`. 

Même s'il s'agit de tables, on raisonne tout de même en service. Par exemple, la synchronisation de la table des 
unités de recherches (`UNITE_RECH`) se fait en spécifiant le code de service `unite-recherche`.

Dans ces commandes, il n'est pas possible de spécifier un établissement précis.

#### `synchronize`

Cette commande lance la synchro d'une table définitive `TABLE` à partir de la table temporaire `TMP_TABLE`
correspondante.

Par exemple, pour lancer la synchro des variables :
    
    $ php public/index.php synchronize --service=variable

#### `synchronize-all`

Cette commande lance la synchro de toutes les tables définitives :

    $ php public/index.php synchronize-all
+0 −383

File deleted.

Preview size limit exceeded, changes collapsed.

Loading