Commit 077c99bf authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

- Maj doc en cours

 - Erreur de configuration ORM
parent 8b7b0389
Loading
Loading
Loading
Loading
Loading
+144 −21
Original line number Diff line number Diff line
# Mise à Jour 2.13.x "RIPLEY"
# Mise à Jour 2.13.2 "RIPLEY"

> Attention, version BETA sur la branche **"ripley-laminas-php8"**

## Avant Mise à jour

Interruption du service. 

```
service apache2 stop
```

Backup de la base. Mise à jour du système. Interruption des taches CRON. 

### Installation de PHP 8.2

Installation du paquet `php8.2`
@@ -11,6 +20,38 @@ Installation du paquet `php8.2`
apt install php8.2
```

> Si **PHP8.2** n'est pas disponible sur votre système, vérifier que la *Source list* **packages.sury.org/php** est présente dans vos *sources.list*, dans le cas contraire : 
> ```bash
> echo "deb https://packages.sury.org/php/ bullseye main" > /etc/apt/sources.list.d/php.list 
> ```
> Puis mettre à jour : 
> ```bash
> apt update 
> ```


Installation des extensions nécessaires : 

```bash
apt install \
  php-pear \
  php8.2-bcmath \
  php8.2-bz2 \
  php8.2-cli \
  php8.2-curl \
  php8.2-dev \
  php8.2-dom \
  php8.2-gd \
  php8.2-gearman \
  php8.2-intl \
  php8.2-ldap \
  php8.2-mbstring \
  php8.2-pgsql \
  php8.2-ssh2 \
  php8.2-xml \
  php8.2-zip
```

Configuration de `php8` comme PHP par défaut.

```bash
@@ -21,62 +62,144 @@ update-alternatives --set phpize /usr/bin/phpize8.2
update-alternatives --set php-config /usr/bin/php-config8.2 
```

Installation des extensions necessaires : 
> **Important** : La mise à jour de PHP implique un changement du fichier ``php.ini`` maintenant localisé ici : **/etc/php/8.2/apache2/php.ini**. Si vous avez ajusté la configuration, pensez à le modifier

### Apache2 / PHP8

```bash
apt install php8.2-intl
apt install php8.2-ldap
apt install php8.2-gd
apt install php8.2-curl
apt install php8.2-pgsql
a2dismod php7.4
a2enmod php8.2
```

### Mise à jour de composer (version 2.2.x)

La version de composer est **très importante**.

```bash
wget https://getcomposer.org/download/latest-2.2.x/composer.phar
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer
````

## Mise à jour technique

Mise à jour des sources :
### Mise à jour des sources

```bash
git fetch
git checkout ripley
```

Mise à jour du schéma de donnée :
Vous devriez voir la branche **ripley-laminas-php8** : 

```
Depuis https://git.unicaen.fr/open-source/oscar
   fb9f3601..4fe9f83d  ripley-suborganization -> origin/ripley-suborganization
   d5e5838e..b216c145  master                 -> origin/master
   4ecdf421..a739dc85  ripley                 -> origin/ripley
 * [nouvelle branche]  ripley-laminas-php8    -> origin/ripley-laminas-php8
   826e821d..a4996af6  spartan                -> origin/spartan
```

Basculer sur la branche **ripley-laminas-php8** : 

```bash
php vendor/bin/doctrine-module orm:schema-tool:update --force
git checkout ripley-laminas-php8
```

Module SSH2 (php) si vous utilisez PCRU
### Installation des librairies tiers 

>Un système de jeton de sécurité (*token*) est en place sur **Github**. Pensez à générer un jeton de sécurité depuis Github : https://github.com/settings/tokens puis de configurer ce jeton pour **Composer** :
> ```bash
> composer config --global --auth github-oauth.github.com JETON
> ```

Installation des librairies

```bash
sudo apt install php7.4-ssh2
composer install
```

### Mise à jour du schéma de donnée

#### Configuration BDD

La configuration de la base de données ``./config/autoload/local.php`` : 

```php
// Vers la fin du fichier 
    'doctrine' => array(
        'connection' => array(
            'orm_default' => array(
                // >>> ICI
                'driverClass' => '\Doctrine\DBAL\Driver\PDO\PgSQL\Driver',
                // ... 
                'params' => array(
                    'host' => "dbb.address.ok",
                    // etc...
                    // et Ajout de la clef DRIVER
                    'driver' => 'pdo_pgsql'
                ),
            ),
        ),
    ),

```

## Configuration des documents
Un petit *check*
```bash
php bin/oscar.php check:config
```

Se rendre dans la partie Administration > Configuration et maintenance
Puis MAJ de la BDD si tout est OK

```bash
php vendor/bin/doctrine-module orm:schema-tool:update --force
```

### Etape 1 : Qualifier les documents sans type

Allez dans la partie "Type de document", migrer les documents non-typé si besoin
### Utilisateur du CRON

IMAGE
Le nouveau système de log propose une rotation des logs par fichier à la journée. Donc quand Oscar produit des logs, il va créer un fichier de log pour la journée. Si le fichier est créé par une tache CRON, l'accès au fichier de log sera limité, et le serveur apache ne pourra pas écrire dedans.

> Cela permettra ensuite des déplacer ces documents
Donc, planifez vos taches CRON avec **www-data** (ou l'utilisateur que vous utilisez pour les droits apache)

```bash
crontab -u www-data -e
```

### Configuration des documents

Se rendre dans la partie Administration > Configuration et maintenance

#### Etape 1 : Qualifier les documents sans type

Allez dans la partie "Type de document", migrer les documents non typé si besoin

> Cela permettra ensuite des deplacer ces documents

Ensuite choisir un type de document par défaut en éditant un des types, et cocher l'option "type par défaut".
Les documents nouvellement déposés via des procédures automatisées seront automatiquement qualifié avec de type si ça n'est pas précisé.

### Etape 2 : Créer les onglets
#### Etape 2 : Créer les onglets

Dans la partie  **Type d'onglet documents** (bouton "Configurer" à droite),
créer les différents onglets de documents prévus. Pensez à sélectionner l'onglet par défaut pour les envois de document des demandes d'activité et choisir les rôles concernés par les différents onglets.

## Etape 3 : Migration des documents
#### Etape 3 : Migration des documents

Par défaut, les documents ne sont rangés dans aucun onglet, et ne seront pas visibles. Il faut donc migrer les anciens documents dans les onglets. Pour cela la procédure **"Migration des documents hors-onglets"** va permettre de déplacer les documents qui ne sont rangés dans aucun onglet dans un des onglets créé.

Dans **Administration > Nomenclatures > Type d'onglet documents**, vous pouvez sélectionner un type de document



## Les choses à vérifier

- Accès à l'application : Authentification


## Organisations Parents

Oscar **Ripley** propose une gestion des structures arborescente. Un champ ``parent`` a été ajouté au modèle et permet de gérer cette filiation entre les structures.

Ce champ a été ajouté au **connecteur organization** et doit contenir le **CODE** de la structure parente (facultatif).
 No newline at end of file
+9 −3
Original line number Diff line number Diff line
@@ -262,7 +262,7 @@ class OscarCheckConfigCommand extends OscarCommandAbstract
            if (count($errors) > 0) {
                $io->warning("Obsolète");
                foreach ($errors as $error) {
                    $io->error(" - " . $error . " - " . print_r($error));
                    $io->error(" - " . print_r($error));
                }
                $io->error("EXECUTER : php vendor/bin/doctrine-module orm:schema-tool:update --force");
                return self::FAILURE;
@@ -270,7 +270,8 @@ class OscarCheckConfigCommand extends OscarCommandAbstract
                $io->writeln("<green>OK</green>");
            }
        } catch (\Exception $e) {
            $io->writeln("ERROR " . $e->getMessage());
            $io->writeln("ERROR DB : " . $e->getMessage());
            return self::FAILURE;
        }

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -294,6 +295,7 @@ class OscarCheckConfigCommand extends OscarCommandAbstract
            $this->checkPath($io, $pathDocuments, "Documents temporaires PCRU");
        } catch (OscarException $e) {
            $io->error(sprintf("Configuration manquante : %s", $e->getMessage()));
            return self::FAILURE;
        }

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -338,6 +340,7 @@ class OscarCheckConfigCommand extends OscarCommandAbstract
            $io->writeln("");
        } catch (OscarException $e) {
            $io->error(sprintf("Configuration manquante : %s", $e->getMessage()));
            return self::FAILURE;
        }

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -378,6 +381,7 @@ class OscarCheckConfigCommand extends OscarCommandAbstract
            }
        } catch (OscarException $e) {
            $io->error(sprintf(" ! INDEXEUR : Configuration du système de recherche incomplet : %s", $e->getMessage()));
            return self::FAILURE;
        }

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -407,7 +411,7 @@ class OscarCheckConfigCommand extends OscarCommandAbstract
        $oscarWorkerFile = __DIR__ . '/../../../../../config/oscarworker.service';
        if (!file_exists($oscarWorkerFile)) {
            $io->error("Le fichier OscarWorker est absent (config/oscarworker.service)");
            die();
            return self::FAILURE;
        }

        $io->write(sprintf("* Envoi d'un job 'HELLO' à Gearman sur '%s' : ", $oscarConfig->getGearmanHost()));
@@ -424,6 +428,7 @@ class OscarCheckConfigCommand extends OscarCommandAbstract
                    "LE WORKER NE RÉAGIT PAS, Vérifiez qu'il est bien lancé, si vous avez réalisé une mise à jour, pensez à relancer le service.\n Gearman a répondu : " . $client->error(
                    )
                );
                return self::FAILURE;
            } else {
                $io->writeln("OscarWorker a répondu : '<green>$response</green>'");
            }
@@ -432,6 +437,7 @@ class OscarCheckConfigCommand extends OscarCommandAbstract
                "GEARMAN FAIL, Impossible de se connecter au serveur Gearman '" . $oscarConfig->getGearmanHost(
                ) . "' : \n Erreur : " . $client->error()
            );
            return self::FAILURE;
        }
        return self::SUCCESS;
    }
+1 −1
Original line number Diff line number Diff line
@@ -105,7 +105,7 @@ class ValidationPeriod
     * @var string
     * @ORM\Column(type="string", nullable=false)
     */
    private int $object_id;
    private string $object_id;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Validation niveau activité