Commit 77d6cd9b authored by Jean-Baptiste Oellers's avatar Jean-Baptiste Oellers
Browse files

ajout doc

parent aa17dda0
Loading
Loading
Loading
Loading
Loading
+183 −66
Original line number Diff line number Diff line
@@ -2,8 +2,12 @@

Cette documentation présente les étapes à suivre pour installer OSCAR sur une machine de production ou de pré-production.

## Installation du système d'exploitation
Dans cet exemple, le système d'exploitation utilisé est un serveur Debian en version stable 12 Bookworm, architecture x86_64. Toutefois il n'y a pas de contraintes fortes liées à l'utilisation de Debian ou de cette version en particulier, ce qui signifie que bien que non testée, l'installation devrait fonctionner aussi pour une version légèrement plus ancienne ou plus récente, ainsi que pour un autre système Unix, en particulier pour Ubuntu qui est basé sur Debian.
## Configuration minimale

La première partie va se concentrer sur l'essentiel pour obtenir une instance d'OSCAR aux fonctionnalités minimales. La seconde partie proposera un exemple de configuration correspondant à ce qui est actuellement en usage à l'université de Caen et pouvant servir de base à la configuration métier d'un nouvel OSCAR. Enfin, la troisième partie renverra vers des documentations spécifiques en fonction des modules optionnels que l'on souhaite activer (par exemple LDAP, CAS, PCRU, Signature...).

### Installation du système d'exploitation
Dans cet exemple, le système d'exploitation utilisé est un serveur Debian en version stable 12 Bookworm, architecture x86_64. Toutefois il n'y a pas de contraintes fortes liées à l'utilisation de Debian ou de cette version en particulier ce qui signifie que l'installation devrait fonctionner aussi pour une version légèrement plus ancienne ou plus récente ainsi que pour un autre système Unix, en particulier pour Ubuntu qui est basé sur Debian.

```bash
cat /etc/debian_version
@@ -17,27 +21,24 @@ apt update
apt full-upgrade
```

## Récupération du code source d'OSCAR

Les instructions suivantes vont :
 - Créer le répertoire `/var/OscarApp`
 - Installer Git
 - Télécharger le code source projet OSCAR dans `/var/OscarApp/oscar`
### Récupération du code source d'OSCAR

```bash
# Création du répertoire /var/OscarApp qui contiendra l'application
mkdir /var/OscarApp
cd /var/OscarApp
# Installation de Git pour récupérer le code source
apt install git
git clone --depth 1 https://git.unicaen.fr/open-source/oscar.git
```

Par défaut le code récupéré correspond à la branche git `master` qui contient la version stable la plus récente. Pour installer plutôt une version spécifique, il faut récupérer la branche voulue. Par exemple pour la branche/version kusanagi :
Par défaut le code récupéré correspond à la branche git `master` qui contient la version stable la plus récente. Pour installer une version spécifique, il faut récupérer la branche voulue. Par exemple pour la branche/version kusanagi :

```bash
git clone -b kusanagi --single-branch --depth 1 https://git.unicaen.fr/open-source/oscar.git
```

## Installation de php 8.2
### Installation de php 8.2

```bash
apt install php8.2-cli
@@ -49,39 +50,47 @@ Zend Engine v4.2.28, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.28, Copyright (c), by Zend Technologies
```

## Dépendances PHP
### Dépendances PHP

*Oscar* utilise des librairies PHP tiers (vendor). Les librairies tiers sont gérées via [Composer](https://getcomposer.org/download/).

```bash
cd /var/OscarApp/oscar
apt install composer

# Installation des modules php utilisés par les librairies
apt install php8.2-bcmath php8.2-curl php8.2-gd php8.2-ldap php8.2-xml php8.2-zip

# Installation des librairies dans le répertoire oscar/vendor
cd /var/OscarApp/oscar
COMPOSER_HOME=~/.composer COMPOSER_ALLOW_SUPERUSER=1 composer install --prefer-dist
```

À cette étape, il devrait être possible de lancer la commande OSCAR qui liste les commandes disponibles :
> À cette étape, il devrait être possible de lancer la commande OSCAR qui liste les commandes disponibles.

```bash
php bin/oscar.php
```

## Check config
### La commande check config

La commande `php bin/oscar.php check:config` permet de vérifier si une installation d'OSCAR est correctement configurée. Au fur et à mesure de ce guide d'installation nous pourrons régulièrement lancer cette commande pour vérifier où nous en sommes. C'est uniquement à la fin de ce guide que cette commande ne retournera plus de message d'erreur.

```bash
# Copie du fichier de configuration locale par défaut à partir du modèle
cp config/autoload/local.php.dist config/autoload/local.php
# Installation du module php client postgreSQL pour permettre à OSCAR de se connecter à la base de données
apt install php8.2-pgsql
```

> La commande check:config nous indique que la base de données n'est pas disponible, c'est la prochaine étape.

```bash
php bin/oscar.php check:config
```

La commande check:config nous indique que la base de données n'est pas disponible, c'est la prochaine étape.
### Installation de la base de données

## Installation de la base de données
Si vous souhaitez installer le serveur de base de données postgreSQL sur la même machine qu'OSCAR :

```bash
# Installation de postgresql
@@ -95,7 +104,11 @@ postgres=# SELECT VERSION();
                                                       version                                                       
---------------------------------------------------------------------------------------------------------------------
 PostgreSQL 15.12 (Debian 15.12-0+deb12u2) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
```

Dans tous les cas, même si vous utilisez un serveur postgreSQL déjà existant, il faut créer un utilisateur pour OSCAR ainsi qu'une base de données sur laquelle cet utilisateur aura le droit de créer des tables, de lire, d'écrire et de supprimer des données.

```bash
# Création d'un utilisateur pour la connexion d'oscar (remplacer azerty par le mot de passe souhaité)
CREATE USER oscar WITH PASSWORD 'azerty';
CREATE DATABASE oscar OWNER oscar;
@@ -104,7 +117,7 @@ GRANT ALL PRIVILEGES ON DATABASE oscar to oscar;
exit
```

Il devrait maintenant être possible de se connecter à la base de données oscar :
> Il devrait maintenant être possible de se connecter à la base de données oscar avec l'utilisateur oscar.

```bash
psql -h localhost -U oscar -d oscar
@@ -117,7 +130,7 @@ oscar=>
\q
```

On peut alors mettre à jour la configuration de connexion à la base de données dans le fichier `config/autoload/local.php` (user, password, dbname etc).
Enfin, on peut alors mettre à jour la configuration de connexion à la base de données dans le fichier `config/autoload/local.php` (user, password, dbname etc).

```php
    // Accès BDDa
@@ -148,13 +161,22 @@ On peut alors mettre à jour la configuration de connexion à la base de donnée
        ),
    ),
```
## Installation des modules php manquants

### Installation des modules php manquants

```bash
apt install bz2
php bin/oscar.php check:config
```

## Installation du serveur web Apache2
La commande check:config nous indique que le module php bz2 est manquant, il faut l'installer.

```bash
apt install php8.2-bz2
```

### Installation du serveur web Apache2

Il ne reste plus qu'à installer un serveur web avec interpréteur PHP pour servir l'application. Dans cet exemple le serveur est Apache2.

```bash
# Installation d'apache2 et libapache2-mod-php8.2 :
@@ -164,7 +186,7 @@ apachectl -V
Server version: Apache/2.4.62 (Debian)
```

## Création du fichier config/autoload/oscar-editable.yml
### Création du fichier config/autoload/oscar-editable.yml

Ce fichier contiendra des paramètres de configuration qui peuvent être modifiés directement depuis l'interface web d'administration d'oscar. Il doit donc être accessible en modification pour l'utilisateur du serveur web (ici www-data).

@@ -173,16 +195,16 @@ touch config/autoload/oscar-editable.yml
chown www-data:www-data config/autoload/oscar-editable.yml
```

## Création du fichier logs/oscar.log
### Création du fichier logs/oscar.log

De même, le fichier de logs doit être accessible en écriture pour le serveur web.
De même, le fichier de logs et le répertoire des logs doivent être accessibles en écriture pour le serveur web.

```bash
touch logs/oscar.log
chown www-data:www-data logs/oscar.log
chown -R www-data:www-data logs
```

## Création du schéma de la base de données
### Création du schéma de la base de données

```bash
# Pour d'abord visualiser les commandes SQL qui seront réalisées :
@@ -191,16 +213,28 @@ php vendor/bin/doctrine-module orm:schema-tool:update --dump-sql --complete
php vendor/bin/doctrine-module orm:schema-tool:update --force --complete
```

## Configuration des emails
### Ajout des privilèges

Cette commande permet d'insérer dans la base de données les différents privilèges qui conditionnent l'accès aux différentes fonctionnalités de l'application.

```bash
php bin/oscar.php check:privileges
# Il faut lancer une deuxième fois la commande pour être sûr que tous les privilèges ont bien été insérés
php bin/oscar.php check:privileges
```

Dans le fichier `config/autoload/local.php`, il faut décommenter une configuration de `mailer`, et configurer les différentes variables suivant le besoin. La variable `urlAbsolute` doit indiquer le nom de domaine sur lequel l'instance sera joignable, car elle est utilisée pour générer les liens vers OSCAR qui seront intégrés aux différents emails.
### Configuration des emails

## OscarWorker (gearman) : Moteur de tâche 
Dans le fichier `config/autoload/local.php`, il faut décommenter une configuration de `mailer` et configurer les différentes variables suivant le besoin. La variable `urlAbsolute` doit indiquer le nom de domaine sur lequel l'instance sera joignable, car elle est utilisée pour générer les liens vers OSCAR qui seront intégrés aux différents emails.

[Installation de oscarworker](./configuration/config-gearman.md)
### OscarWorker (gearman) : Moteur de tâche 

Pour plus de détails, voir la documentation : [Installation de oscarworker](./configuration/config-gearman.md)

```bash
# Installation de gearman
apt install gearman-job-server
# Installation du module php de gearman
apt install php8.2-gearman
```

@@ -208,14 +242,10 @@ apt install php8.2-gearman
# on copie le gabarit de configuration du service
cp install/oscarworker.dist.service config/oscarworker.service

# On édite le service
# On édite le service pour mettre le chemin complet vers bin/oscar-worker.php
# ExecStart = /usr/bin/php /var/OscarApp/oscar/bin/oscar-worker.php
vi config/oscarworker.service

# ------------------------------------------------------------>>>
# >>> Mettre le chemin complet vers bin/oscar-worker.php
ExecStart = /usr/bin/php /var/OscarApp/oscar/bin/oscar-worker.php
# ------------------------------------------------------------<<<

# On va dans le dossier des service
cd /etc/systemd/system
# On ajoute la configuration du service dans SYSTEMD avec un lien symbolique
@@ -226,54 +256,141 @@ systemctl enable oscarworker.service
service oscarworker start
```

## LDAP

Configuration du LDAP :
### Configuration du LDAP

```bash
cp config/autoload/unicaen-app.local.php config/autoload/unicaen-app.local.php
# Copier le fichier d'exemple de configuration
cp config/autoload/unicaen-app.local.php.dist config/autoload/unicaen-app.local.php
# Dans ce fichier, configurer le LDAP et remplacer les configurations d'emails par les bonnes valeur.
vi config/autoload/unicaen-app.local.php
```

## Configuration du serveur web
### Configuration du serveur web

```bash
# Activation du modrewrite d'apache pour la réécriture des URLs
a2enmod rewrite
# Redémarrage du service apache2
systemctl restart apache2

# Copie de la configuration par défaut pour créer une configuration oscar
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/oscar.conf
# Désactivation de la configuration apache par défaut
a2dissite 000-default
# Configuration du site oscar
vi /etc/apache2/sites-available/oscar.conf
# Par exemple :
#<VirtualHost *:80>
#        ServerAdmin admin@unicaen.fr
#        DocumentRoot /var/OscarApp/oscar/public
#
#        <Directory /var/OscarApp/oscar/public>
#                DirectoryIndex index.php
#                AllowOverride All
#                Order allow,deny
#                Allow from all
#                Require all granted
#        </Directory>
#
#        LogLevel debug
#        ErrorLog ${APACHE_LOG_DIR}/oscar-error.log
#        CustomLog ${APACHE_LOG_DIR}/oscar-access.log combined

# Activation du site d'oscar
a2ensite oscar
# Rechargement de la configuration d'apache
systemctl reload apache2
```

### Création d'un role application d'Administrateur

```sql
INSERT INTO user_role (id,parent_id,role_id,is_default,ldap_filter,spot,description,principal,accessible_exterieur,displayed) VALUES
	 (1,NULL,'Administrateur',false,NULL,4,NULL,false,true,true);
```
<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin admin@unicaen.fr
        DocumentRoot /var/OscarApp/oscar/public

        <Directory /var/OscarApp/oscar/public>
                DirectoryIndex index.php
                AllowOverride All
                Order allow,deny
                Allow from all
                Require all granted
        </Directory>

        LogLevel debug
        ErrorLog ${APACHE_LOG_DIR}/oscar-error.log
        CustomLog ${APACHE_LOG_DIR}/oscar-access.log combined

> À partir de cette étape, la page d'acceuil d'OSCAR devrait s'afficher sans erreur

### Création d'un compte local d'administrateur

```bash
# Cette commande permet créer localement en base de données un compte utilisateur. Renseignez le nom, email, login et mot de passe.
php bin/oscar.php auth:add
# Cette commande permet de donner un rôle à un utilisateur. Ajoutez le rôle Administrateur à votre utilisateur.
php bin/oscar.php auth:promote
```

Il faut à présent exécuter un script en base de données qui va donner tous les droits au rôle Administrateur :

```sql
insert into role_privilege
select id, (select ur.id from user_role ur where ur.role_id = 'Administrateur') from privilege;
```

> À cette étape, il devrait être possible de se connecter avec un compte administrateur ayant tous les droits dans OSCAR. On peut alors accéder au menu Administration > Configuration et maintenance > Maintenance > Vérification de la configuration qui affiche des informations concernant la configuration similaires à celles de la commande `php bin/oscar.php check:config`


### Rendre le répertoire data accessible en lecture/écriture au serveur web

```bash
chown -R www-data:www-data data
```

Mais aussi le template de mail :

```bash
chown -R www-data:www-data module/Oscar/view/mail.phtml
```

### Installation d'Elasticsearch en version 7

Suivons la documentation officielle d'Elastic :
https://www.elastic.co/docs/deploy-manage/deploy/self-managed/install-elasticsearch-with-debian-package

```bash
apt install gpg wget apt-transport-https
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-7.x.list
apt update
apt install elasticsearch
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service
```

Si besoin, réduire la mémoire utilisée dans `/etc/elasticsearch/jvm.options` (`-Xms1g -Xmx1g`)

On peut à présent vérifier qu'Elastic répond bien : `curl localhost:9200`

> À partir de cette étape, toutes les vérifications doivent être OK (commande `php bin/oscar.php check:config` et sur l'interface d'administration).


## Configuration spécifique

La première partie de cette documentation a permis de réaliser l'installation minimale de la partie technique d'OSCAR. Il reste à présent à réaliser la configuration métier (création de types d'utilisateurs, attribution des rôles etc). Pour vous faciliter la mise en place, cette partie propose à titre d'exemple la configuration actuellement en usage à l'université de Caen. À vous ensuite d'adapter selon vos besoins en ajoutant/modifiant/retirant certaines valeurs.

### Ajout des devises et des taux de TVA

```sql
INSERT INTO currency (id,status,datecreated,"label",symbol,rate) VALUES
	 (1,1,NOW(),'Euro','€',1.0),
     (2,1,NOW(),'Dollars','$',1.096),
     (3,1,NOW(),'Livre','£',0.7133),
	 (4,1,NOW(),'Yens','¥',132.651);

INSERT INTO tva (id,"label",rate,active,status) VALUES
	 (1,'Exonéré',0.0,true,1),
	 (2,'Taux réduit (5,5%)',5.5,true,1),
	 (3,'Taux normal (19,6%)',19.6,true,1),
	 (4,'Taux DOM-TOM',8.5,true,1),
	 (5,'Taux réduit 7%',7.0,true,1),
	 (6,'Taux normal 20%',20.0,true,1),
	 (7,'Taux réduit 10%',10.0,true,1);
```

## Chargement des données
### Configuration UNICAEN

Le script `install-prod-2025-05-07.sql` permet de créer :
 - 31 rôles (Responsable scientifique, Chercheur...)
 - les privilèges associés aux différents rôles (par exemple, le Chargé de valorisation a le droit de créer un Activité etc)
 - 161 types d'activité (par exemple ANR, Financement International hors UE...)
+820 −22

File changed.

Preview size limit exceeded, changes collapsed.