Commit 37d5b08c authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Merge branch 'release_4.0.3'

parents 7a238b75 bdd4e74b
Loading
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
Journal des modifications
=========================

4.0.3
-----
- Corrections et améliorations de la doc d'install suite aux remarques de l'université de Montpellier (merci)
- [FIX] Correction de l'affichage de la date d'historisation dans Individu lié
- [FIX] Correction de la signature de Membre::setEtablissement(?string) qui faisait planter la création de proprosition (lorsqu'aucun établissement n'était fourni)
- Ajout de l'unité de recherche des acteurs (manuel pour le moment) pour améliorer les pages de couverture
4.0.2
-----
- [FIX] Affichage de la bonne adresse électronique institutionnelle sur la fiche thèse 
+60 −22
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ Reportez-vous au [README consacré à la création de la base de données](datab



## Installation 
## Installation sur un serveur

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, nous documenterons une installation à l'ancienne sur 
@@ -19,7 +19,7 @@ Si vous voulez déployer l'application avec Docker, faites-le à partir du `Dock
proposer votre contribution pour améliorer cette doc d'install !


### Première obtention des sources de l'application
### 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 contribuer en le signalant.
@@ -41,21 +41,32 @@ nécessaires.*

### Configuration du serveur

Sur le serveur, récupérez le dépôt git de l'image Docker de SyGAL puis placez-vous dans le répertoire créé :
#### Packages, etc.

- Récupérez quelque part sur le serveur l'image Docker "Unicaen" puis placez-vous dans le répertoire créé :
```bash
UNICAEN_IMAGE_TMP_DIR=/tmp/docker-unicaen-image
git clone https://git.unicaen.fr/open-source/docker/unicaen-image.git ${UNICAEN_IMAGE_TMP_DIR}
cd ${UNICAEN_IMAGE_TMP_DIR}
```

- Lancez-y le script `Dockerfile-7.x.sh` conçu pour la version 7.4 de PHP. 
```bash
git clone https://git.unicaen.fr:open-source/docker/sygal-image.git /tmp/sygal-image
cd /tmp/sygal-image
PHP_VERSION=7.4
bash Dockerfile-7.x.sh ${PHP_VERSION}
```

Jetez un oeil sur le 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.)
- Ensuite, quelque part sur le serveur, récupérez cette fois l'image Docker `sygal-image` puis placez-vous dans 
le répertoire créé :
```bash
SYGAL_IMAGE_TMP_DIR=/tmp/sygal-image
git clone https://git.unicaen.fr:open-source/docker/sygal-image.git ${SYGAL_IMAGE_TMP_DIR}
cd ${SYGAL_IMAGE_TMP_DIR}
```

Lancez le script `Dockerfile.sh` avec en argument la version requise de PHP :
- Lancez-y le script `Dockerfile.sh` avec en argument la version de PHP choisie précédemment :
```bash
bash Dockerfile.sh 7.4
bash Dockerfile.sh ${PHP_VERSION}
```

Ensuite, vérifiez et ajustez si besoin sur votre serveur les fichiers de configs suivants,
@@ -68,10 +79,12 @@ créés ou modifiés par le script `Dockerfile.sh` :
- ${PHP_CONF_DIR}/cli/conf.d/99-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.4`.
`APACHE_CONF_DIR=/etc/apache2` et `PHP_CONF_DIR=/etc/php/${PHP_VERSION}`.

#### Environnement de fonctionnement

La variable `APPLICATION_ENV` déclarée dans la config Apache `${APACHE_CONF_DIR}/sites-available/app-ssl.conf` permet
de spécifier à l'application PHP dans quel "environnement de fonctionnemant" elle tourne.
de spécifier à l'application PHP dans quel "environnement de fonctionnement" elle tourne.
Notamment, lorsque sa valeur est `development`, cela active l'affichage détaillé des erreurs rencontrées par SyGAL :
```apacheconf
<VirtualHost *:443>
@@ -80,6 +93,20 @@ Notamment, lorsque sa valeur est `development`, cela active l'affichage détaill
# ...
```

#### Logs d'erreur PHP-FPM

- Prenez connaissance du chemin spécifié par le paramètre `error_log` du fichier de config `/etc/php/${PHP_VERSION}/fpm/php-fpm.conf`, 
exemple :
```conf
error_log = /var/log/php7.4-fpm.log
```

- Créez le fichier de log avec le propriétaire qui va bien, exemple :
```bash
FPM_PHP_LOG_FILE=/var/log/php7.4-fpm.log
touch ${FPM_PHP_LOG_FILE} && chown www-data:www-data ${FPM_PHP_LOG_FILE}
```


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

@@ -95,14 +122,14 @@ git fetch && git fetch --tags && git tag
Si la version la plus récente est par exemple la `4.0.0`, utilisez les commandes suivantes pour "installer" cette version 
sur votre serveur :
```bash
git checkout --force 4.0.0 && bash install.sh
git checkout --force 4.0.0
```


### Mode développement vs. production

Pour commencer, placez l'application en mode "développement" afin d'activer l'affichage détaillé des futures erreurs 
rencontrées. Pour cela placez-vous dans le répertoire des sources de l'application puis lancez la commande suivante :
rencontrées. Pour cela, placez-vous dans le répertoire des sources de l'application puis lancez la commande suivante :
```bash
vendor/bin/laminas-development-mode enable
```
@@ -116,7 +143,7 @@ vendor/bin/laminas-development-mode disable
### Configuration du moteur PHP pour SyGAL

Si vous êtes sur un serveur de PROD, corrigez les lignes suivantes du fichier de config PHP 
`/etc/php/7.4/fpm/conf.d/90-app.ini` :
`/etc/php/${PHP_VERSION}/fpm/conf.d/90-app.ini` :
```
    display_errors = Off
    #...
@@ -264,6 +291,16 @@ de la création de votre établissement dans la base de données (dans le script



## Script d'install et d'init des dépendances

Lancez le script suivant :

```bash
bash install.sh
```



## 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
@@ -293,15 +330,16 @@ de la création de votre établissement dans la base de données (dans le script



## Import de données
## Import des données

ESUP-Sygal doit pouvoir importer les thèses, acteurs des thèses, etc. depuis le SI Scolarité de votre établissement 
(soit Apogée, soit Physalis). Pour cela ESUP-SyGAL fournit un web service (API REST) que vous devez installer.


### Installation du web service

Vous devez à présent installer le web service d'import de données, 
reportez-vous au projet `sygal-import-ws`sur 
[sur github.com/EsupPortail](https://github.com/EsupPortail/sygal-import-ws) ou sur 
[sur git.unicaen.fr](https://git.unicaen.fr/open-source/sygal-import-ws).
Vous devez à présent installer le web service d'import de données. Reportez-vous au projet `sygal-import-ws` 
sur [sur github.com/EsupPortail](https://github.com/EsupPortail/sygal-import-ws).


### Lancement de l'import seul
+23 −0
Original line number Diff line number Diff line
# Version 4.0.3

## 1. Sur le serveur d'application

- Placez-vous dans le répertoire de l'application puis lancez la commande suivante
  pour installer la nouvelle version :

```bash
git fetch --tags && git checkout --force 4.0.3 && bash ./install.sh
```

- Selon le moteur PHP que vous avez installé, rechargez le service, exemple :
    - php7.4-fpm         : `service php7.4-fpm reload`
    - apache2-mod-php7.4 : `service apache2 reload`

## 2. Dans la base de données

```SQL
alter table acteur add acteur_uniterech_id bigint;

alter table acteur add constraint acteur_unite_rech_id_fk
foreign key (acteur_uniterech_id) references unite_rech on delete set null;
```
 No newline at end of file
+17 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ use Laminas\Permissions\Acl\Resource\ResourceInterface;
 * @var Role     $role                  Role de l'acteur (p.e. directeur de thèse)
 * @var string   $qualite               la qualité de l'acteur (p.e. chargé de recherche, ...)
 * @var string   $etalissement          l'étabilissement d'attachement de l'acteur (p.e. Université de Caen Normandie,
 * @var string   $uniteRecherche        l'unité de recherche d'attachement de l'acteur (p.e. GREYC,
 *      ...)
 */
class Acteur implements HistoriqueAwareInterface, ResourceInterface, IndividuAwareInterface
@@ -71,6 +72,13 @@ class Acteur implements HistoriqueAwareInterface, ResourceInterface, IndividuAwa
     */
    private $etablissement;

    /**
     * Etablissement auquel appartient l'individu.
     *
     * @var UniteRecherche
     */
    private $uniteRecherche;

    /**
     * Retourne la fonction de callback à utiliser pour trier une collection d'entités Acteur selon leur rôle.
     * @see usort()
@@ -302,11 +310,19 @@ class Acteur implements HistoriqueAwareInterface, ResourceInterface, IndividuAwa
     *
     * @return Etablissement|null
     */
    public function getEtablissement()
    public function getEtablissement() : ?Etablissement
    {
        return $this->etablissement;
    }

    /**
     * @return UniteRecherche|null
     */
    public function getUniteRecherche() : ?UniteRecherche
    {
        return $this->uniteRecherche;
    }

    /**
     * @param Role $role
     * @return self
+5 −0
Original line number Diff line number Diff line
@@ -36,6 +36,11 @@
                <join-column name="ACTEUR_ETABLISSEMENT_ID" referenced-column-name="ID"/>
            </join-columns>
        </many-to-one>
        <many-to-one field="uniteRecherche" target-entity="Application\Entity\Db\UniteRecherche">
            <join-columns>
                <join-column name="ACTEUR_UNITERECH_ID" referenced-column-name="ID"/>
            </join-columns>
        </many-to-one>

        <many-to-one field="source" target-entity="Application\Entity\Db\Source">
            <join-columns>
Loading