Skip to content
Snippets Groups Projects
Commit 77d6cd9b authored by Jean-Baptiste Oellers's avatar Jean-Baptiste Oellers
Browse files

ajout doc

parent aa17dda0
No related branches found
No related tags found
1 merge request!34Draft: Creation doc install
Pipeline #38064 passed
...@@ -2,8 +2,12 @@ ...@@ -2,8 +2,12 @@
Cette documentation présente les étapes à suivre pour installer OSCAR sur une machine de production ou de pré-production. 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 ## Configuration minimale
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.
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 ```bash
cat /etc/debian_version cat /etc/debian_version
...@@ -17,27 +21,24 @@ apt update ...@@ -17,27 +21,24 @@ apt update
apt full-upgrade apt full-upgrade
``` ```
## Récupération du code source d'OSCAR ### 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`
```bash ```bash
# Création du répertoire /var/OscarApp qui contiendra l'application
mkdir /var/OscarApp mkdir /var/OscarApp
cd /var/OscarApp cd /var/OscarApp
# Installation de Git pour récupérer le code source
apt install git apt install git
git clone --depth 1 https://git.unicaen.fr/open-source/oscar.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 ```bash
git clone -b kusanagi --single-branch --depth 1 https://git.unicaen.fr/open-source/oscar.git 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 ```bash
apt install php8.2-cli apt install php8.2-cli
...@@ -49,39 +50,47 @@ Zend Engine v4.2.28, Copyright (c) Zend Technologies ...@@ -49,39 +50,47 @@ Zend Engine v4.2.28, Copyright (c) Zend Technologies
with Zend OPcache v8.2.28, Copyright (c), by 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/). *Oscar* utilise des librairies PHP tiers (vendor). Les librairies tiers sont gérées via [Composer](https://getcomposer.org/download/).
```bash ```bash
cd /var/OscarApp/oscar
apt install composer apt install composer
# Installation des modules php utilisés par les librairies # 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 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 # Installation des librairies dans le répertoire oscar/vendor
cd /var/OscarApp/oscar
COMPOSER_HOME=~/.composer COMPOSER_ALLOW_SUPERUSER=1 composer install --prefer-dist 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 ```bash
php bin/oscar.php 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 ```bash
# Copie du fichier de configuration locale par défaut à partir du modèle # Copie du fichier de configuration locale par défaut à partir du modèle
cp config/autoload/local.php.dist config/autoload/local.php 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 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 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 ```bash
# Installation de postgresql # Installation de postgresql
...@@ -95,7 +104,11 @@ postgres=# SELECT VERSION(); ...@@ -95,7 +104,11 @@ postgres=# SELECT VERSION();
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 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é) # 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 USER oscar WITH PASSWORD 'azerty';
CREATE DATABASE oscar OWNER oscar; CREATE DATABASE oscar OWNER oscar;
...@@ -104,7 +117,7 @@ GRANT ALL PRIVILEGES ON DATABASE oscar to oscar; ...@@ -104,7 +117,7 @@ GRANT ALL PRIVILEGES ON DATABASE oscar to oscar;
exit 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 ```bash
psql -h localhost -U oscar -d oscar psql -h localhost -U oscar -d oscar
...@@ -117,7 +130,7 @@ oscar=> ...@@ -117,7 +130,7 @@ oscar=>
\q \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 ```php
// Accès BDDa // Accès BDDa
...@@ -148,13 +161,22 @@ On peut alors mettre à jour la configuration de connexion à la base de donnée ...@@ -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 ```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 ```bash
# Installation d'apache2 et libapache2-mod-php8.2 : # Installation d'apache2 et libapache2-mod-php8.2 :
...@@ -164,7 +186,7 @@ apachectl -V ...@@ -164,7 +186,7 @@ apachectl -V
Server version: Apache/2.4.62 (Debian) 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). 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 ...@@ -173,16 +195,16 @@ touch config/autoload/oscar-editable.yml
chown www-data:www-data 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 ```bash
touch logs/oscar.log 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 ```bash
# Pour d'abord visualiser les commandes SQL qui seront réalisées : # 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 ...@@ -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 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 ```bash
# Installation de gearman
apt install gearman-job-server apt install gearman-job-server
# Installation du module php de gearman
apt install php8.2-gearman apt install php8.2-gearman
``` ```
...@@ -208,14 +242,10 @@ apt install php8.2-gearman ...@@ -208,14 +242,10 @@ apt install php8.2-gearman
# on copie le gabarit de configuration du service # on copie le gabarit de configuration du service
cp install/oscarworker.dist.service config/oscarworker.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 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 # On va dans le dossier des service
cd /etc/systemd/system cd /etc/systemd/system
# On ajoute la configuration du service dans SYSTEMD avec un lien symbolique # On ajoute la configuration du service dans SYSTEMD avec un lien symbolique
...@@ -226,54 +256,141 @@ systemctl enable oscarworker.service ...@@ -226,54 +256,141 @@ systemctl enable oscarworker.service
service oscarworker start service oscarworker start
``` ```
## LDAP ### Configuration du LDAP
Configuration du LDAP :
```bash ```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 vi config/autoload/unicaen-app.local.php
``` ```
## Configuration du serveur web ### Configuration du serveur web
```bash ```bash
# Activation du modrewrite d'apache pour la réécriture des URLs
a2enmod rewrite a2enmod rewrite
# Redémarrage du service apache2
systemctl restart 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 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 a2dissite 000-default
# Configuration du site oscar
vi /etc/apache2/sites-available/oscar.conf 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 a2ensite oscar
# Rechargement de la configuration d'apache
systemctl reload apache2 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 > À partir de cette étape, la page d'acceuil d'OSCAR devrait s'afficher sans erreur
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName ### Création d'un compte local d'administrateur
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this ```bash
# value is not decisive as it is used as a last resort host regardless. # Cette commande permet créer localement en base de données un compte utilisateur. Renseignez le nom, email, login et mot de passe.
# However, you must set it for any further virtual host explicitly. php bin/oscar.php auth:add
#ServerName www.example.com # Cette commande permet de donner un rôle à un utilisateur. Ajoutez le rôle Administrateur à votre utilisateur.
php bin/oscar.php auth:promote
ServerAdmin admin@unicaen.fr ```
DocumentRoot /var/OscarApp/oscar/public
Il faut à présent exécuter un script en base de données qui va donner tous les droits au rôle Administrateur :
<Directory /var/OscarApp/oscar/public>
DirectoryIndex index.php ```sql
AllowOverride All insert into role_privilege
Order allow,deny select id, (select ur.id from user_role ur where ur.role_id = 'Administrateur') from privilege;
Allow from all ```
Require all granted
</Directory> > À 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`
LogLevel debug
ErrorLog ${APACHE_LOG_DIR}/oscar-error.log ### Rendre le répertoire data accessible en lecture/écriture au serveur web
CustomLog ${APACHE_LOG_DIR}/oscar-access.log combined
```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...)
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment