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

Creation doc install

parent 136dfce1
Loading
Loading
Loading
Loading
Loading
+279 −0
Original line number Diff line number Diff line
# Installation en production/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
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.

```bash
cat /etc/debian_version
12.10
```

Mise à jour du système

```bash
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`

```bash
mkdir /var/OscarApp
cd /var/OscarApp
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 :

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

## Installation de php 8.2

```bash
apt install php8.2-cli
php -v

PHP 8.2.28 (cli) (built: Mar 13 2025 18:21:38) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.28, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.28, Copyright (c), by Zend Technologies
```

## 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
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 :

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

## Check config

```bash
# Copie du fichier de configuration locale par défaut à partir du modèle
cp config/autoload/local.php.dist config/autoload/local.php
apt install php8.2-pgsql
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

```bash
# Installation de postgresql
apt install postgresql
# Passage à l'utilisateur postgres
su postgres
# Connexion à la base de données
psql
# Affichage de la version installée (ici PostgreSQL 15.12)
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

# 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;
GRANT ALL PRIVILEGES ON DATABASE oscar to oscar;
\q
exit
```

Il devrait maintenant être possible de se connecter à la base de données oscar :

```bash
psql -h localhost -U oscar -d oscar
Password for user oscar: 
psql (15.12 (Debian 15.12-0+deb12u2))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

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).

```php
    // Accès BDDa
    'doctrine' => array(
        'connection' => array(
            'orm_default' => array(
                //////////////////////////////////////////////////////// DRIVERS
                // Postgresql
                'driverClass' => '\Doctrine\DBAL\Driver\PDO\PgSQL\Driver',

                ////////////////////////////////////////////////////////////////

                'doctrine_type_mappings' => array(
                    'enum' => 'string'
                ),

                ////////////////////////////////////////////////////// CONNEXION
                // Exemple
                'params' => array(
                    'host'     => 'localhost',
                    'port'     => '5432',
                    'user'     => 'oscar',
                    'password' => 'azerty',
                    'dbname'   => 'oscar',
                    'charset'  => 'utf8'
                ),
            ),
        ),
    ),
```
## Installation des modules php manquants

```bash
apt install bz2
```

## Installation du serveur web Apache2

```bash
# Installation d'apache2 et libapache2-mod-php8.2 :
apt install php8.2
# Pour voir la version d'Apache installée :
apachectl -V
Server version: Apache/2.4.62 (Debian)
```

## 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).

```bash
touch config/autoload/oscar-editable.yml
chown www-data:www-data config/autoload/oscar-editable.yml
```

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

De même, le fichier de logs doit être accessible en écriture pour le serveur web.

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

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

```bash
# Pour d'abord visualiser les commandes SQL qui seront réalisées :
php vendor/bin/doctrine-module orm:schema-tool:update --dump-sql --complete
# Puis pour créer la structure vide du schéma de la BDD :
php vendor/bin/doctrine-module orm:schema-tool:update --force --complete
```

## Configuration des emails

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.

## OscarWorker (gearman) : Moteur de tâche 

[Installation de oscarworker](./configuration/config-gearman.md)

```bash
apt install gearman-job-server
apt install php8.2-gearman
```

```bash
# on copie le gabarit de configuration du service
cp install/oscarworker.dist.service config/oscarworker.service

# On édite le 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
cd /etc/systemd/system
# On ajoute la configuration du service dans SYSTEMD avec un lien symbolique
ln -s /var/OscarApp/oscar/config/oscarworker.service oscarworker.service
# On active le service
systemctl enable oscarworker.service
# On lance le service
service oscarworker start
```

## LDAP

Configuration du LDAP :

```bash
cp config/autoload/unicaen-app.local.php config/autoload/unicaen-app.local.php
vi config/autoload/unicaen-app.local.php
```

## Configuration du serveur web

```bash
a2enmod rewrite
systemctl restart apache2

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/oscar.conf
a2dissite 000-default
vi /etc/apache2/sites-available/oscar.conf
a2ensite oscar
systemctl reload apache2
```

```
<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
```

## Chargement des données
+25 −0
Original line number Diff line number Diff line
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),
	 (2,NULL,'Utilisateur',true,NULL,4,NULL,false,true,true),
	 (3,NULL,'Responsable RH',false,NULL,6,NULL,false,true,true),
	 (4,NULL,'Ingénieur',false,NULL,1,NULL,false,true,true),
	 (5,NULL,'Doctorant',false,NULL,3,NULL,false,true,true),
	 (6,NULL,'Post-doc',false,NULL,3,NULL,false,true,true),
	 (7,NULL,'Responsable',false,NULL,3,NULL,false,true,true),
	 (8,NULL,'Responsable juridique',false,NULL,6,NULL,false,true,true),
	 (9,NULL,'Chercheur',false,NULL,3,NULL,false,true,true),
	 (10,NULL,'Co-responsable',false,NULL,3,NULL,false,true,true),
	 (11,NULL,'Gestionnaire',false,NULL,2,NULL,false,true,true),
	 (12,NULL,'Chargé de mission Europe',false,NULL,3,'',true,true,true),
	 (13,NULL,'Responsable scientifique',false,NULL,3,'',true,true,true),
	 (14,NULL,'Directeur de composante',false,NULL,2,'Contient les directeurs de composantes, directeurs de composantes adjoint, les administrateurs provisoires ',true,true,true),
	 (15,NULL,'Chargé de valorisation',false,NULL,7,'',true,true,true),
	 (16,NULL,'Superviseur',false,NULL,4,'',false,true,true),
	 (17,NULL,'Vice président recherche',false,NULL,4,'Ce rôle permet aux vice président recherche d''avoir une visibilité sur tous les contrats de recherche.',false,true,true),
	 (18,NULL,'Responsable administratif et gestionnaire de composante',false,NULL,2,'Les responsables administratifs et gestionnaires de composantes ',true,true,true),
	 (19,NULL,'Responsable financier',false,NULL,6,'',true,true,true),
	 (20,NULL,'Pilotage',false,NULL,4,NULL,false,true,true),
	 (21,NULL,'Gestionnaire de laboratoire',false,NULL,2,'',true,true,true),
	 (22,NULL,'Directeur',false,NULL,2,'Contient la liste des directeurs  et assimilés (directeurs adjoints, directeurs temporaire, etc.)',true,true,true),
	 (23,NULL,'Responsable administratif',false,NULL,2,'',true,true,true),
	 (24,NULL,'Gestion financière',false,NULL,3,'',true,true,true);