Projet

Général

Profil

Actions

Evolution #798

ouvert

procédure #795: Installation maarch

documentation

Ajouté par Patrick ENGWANG NGUEMA il y a 3 mois. Mis à jour il y a 3 mois.

Statut:
Nouveau
Priorité:
Normal
Début:
09 septembre 2025
Echéance:
09 septembre 2025 (En retard de environ 3 mois)
% réalisé:

100%

Temps estimé:

Mis à jour par Patrick ENGWANG NGUEMA il y a 3 mois

Wiki

Guide d'installation Maarch RM sur serveur ubuntu

Vue d'ensemble

Ce guide documente l'installation complète de Maarch RM sur un serveur Ubuntu 24.04 équipé de Plesk, avec résolution des problèmes rencontrés.

Résultat final : Maarch RM accessible sur http://172.23.2.10:8080 avec les identifiants superadmin/superadmin

Environnement technique

  • Système d'exploitation : Ubuntu 24.04 LTS
  • Serveur web : Apache 2.4.58 + Plesk
  • Base de données : PostgreSQL 16.9
  • PHP : Version avec extensions requises
  • Maarch RM : Version depuis le dépôt Git officiel

Prérequis installés

# Extensions PHP requises
apt-get install php-mcrypt php-pdo php-pdo-pgsql php-xsl php-mbstring

# Modules Apache
a2enmod rewrite
a2enmod env

# Outils système
apt-get install p7zip-full default-jre git openssl

# PostgreSQL
apt-get install postgresql

Étapes d'installation de base

1. Création de l'utilisateur système

useradd -m -g www-data maarch

2. Configuration Apache pour l'utilisateur maarch

# Modifier /etc/apache2/envvars
export APACHE_RUN_USER=maarch

3. Récupération des sources

cd /var/www
git clone https://labs.maarch.org/maarch/maarchRM.git laabs

4. Configuration des permissions

chown -R maarch:www-data laabs/
chmod -R 775 laabs/

5. Configuration PostgreSQL

# Connexion en tant que postgres
sudo -u postgres psql

# Création utilisateur et base
CREATE USER maarch WITH ENCRYPTED PASSWORD 'maarch';
ALTER ROLE maarch WITH CREATEDB;
ALTER ROLE maarch WITH SUPERUSER;
CREATE DATABASE "maarchRM" WITH OWNER maarch;

6. Installation du schéma et données

cd /var/www/laabs/data/maarchRM/batch/pgsql
./schema.sh -u=maarch -p=5432 -d="maarchRM" -h=127.0.0.1
./data.sh -u=maarch -p=5432 -d="maarchRM" -h=127.0.0.1

Problèmes rencontrés et solutions

Problème 1 : Conflit avec Plesk sur le port 80

Symptôme : Page par défaut de Plesk s'affiche au lieu de Maarch RM

Cause : Plesk contrôle Apache et intercepte toutes les requêtes sur le port 80

Solution : Configuration sur port alternatif (8080)

# Ajout du port dans /etc/apache2/ports.conf
Listen 8080

# Création du fichier de configuration Apache
nano /etc/apache2/conf-available/maarch.conf

Contenu du fichier :

<VirtualHost *:8080>
    ServerName maarchrm
    DocumentRoot /var/www/laabs/web/

    <Directory /var/www/laabs/web/>
        AllowOverride All
        Require all granted
        Options Indexes FollowSymLinks

        RewriteEngine On
        RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f
        RewriteRule .* - [QSA,L]
        RewriteRule ^(.*)$ /http.php [QSA,L]
    </Directory>

    SetEnv LAABS_INSTANCE_NAME "maarchRM"
    SetEnv LAABS_APP "maarchRM"
    SetEnv LAABS_BUNDLES "audit;auth;batchProcessing;contact;digitalResource;lifeCycle;organization;recordsManagement;filePlan;medona"
    SetEnv LAABS_DEPENDENCIES "repository;xml;html;localisation;datasource;sdo;json;fileSystem;notification;PDF;csv;txt;timestamp;csv;diff"
    SetEnv LAABS_PRESENTATION "maarchRM"
    SetEnv LAABS_CONFIGURATION "../data/maarchRM/conf/configuration.ini"
    SetEnv LAABS_LOG "../data/maarchRM/log.txt"
    SetEnv LAABS_TMP_DIR "../data/maarchRM/tmp"

    LimitRequestBody 0
</VirtualHost>

Activation :

a2enconf maarch
systemctl restart apache2

Problème 2 : Erreur JSON malformé

Symptôme :

PHP Fatal error: Error decoding complex ini directive [Syntax error: malformed JSON]

Cause : Section zippedFolder commentée avec des points-virgules (;) au milieu d'une structure JSON dans configuration.ini

Solution : Suppression de la section commentée

nano /var/www/laabs/data/maarchRM/conf/configuration.ini

Supprimer toutes les lignes commençant par ; dans la section packageConnectors, notamment :

;    'zippedFolder' : {
;        'label' : 'Dossiers compressés',
;        ...

Problème 3 : Bundle 'seda' manquant

Symptôme :

Bundle 'seda' not found in /var/www/laabs/core/Reflection/Bundle.php:55

Cause : Bundle "seda" inclus dans la configuration Apache mais non disponible

Solution : Suppression du bundle "seda" de la liste dans la configuration Apache

Modifier la ligne dans /etc/apache2/conf-available/maarch.conf :

# AVANT
SetEnv LAABS_BUNDLES "audit;auth;batchProcessing;contact;digitalResource;lifeCycle;organization;recordsManagement;filePlan;medona;seda"

# APRÈS
SetEnv LAABS_BUNDLES "audit;auth;batchProcessing;contact;digitalResource;lifeCycle;organization;recordsManagement;filePlan;medona"

Problème 4 : Extension PHP mbstring manquante

Symptôme :

Call to undefined function dependency\html\mb_convert_encoding()

Cause : Extension PHP mbstring non installée

Solution :

apt-get install php-mbstring
systemctl restart apache2

Problème 5 : Authentification échoue silencieusement

Symptôme : Aucun utilisateur ne peut se connecter, pas d'erreur dans les logs Apache

Cause : Utilisateur superadmin sans organisation assignée (champ ownerOrgId vide)

Diagnostic :

# Vérification de l'organisation de l'utilisateur
psql -U maarch -d maarchRM -h localhost -c "SELECT \"ownerOrgId\" FROM auth.account WHERE \"accountId\" = 'superadmin';"

# Vérification des organisations disponibles  
psql -U maarch -d maarchRM -h localhost -c "SELECT * FROM organization.organization;"

Solution : Assignation de l'organisation ACME à l'utilisateur

# L'organisation ACME existait déjà, il fallait juste l'assigner
psql -U maarch -d maarchRM -h localhost -c "UPDATE auth.account SET \"ownerOrgId\" = 'ACME' WHERE \"accountId\" = 'superadmin';"

Vérification :

psql -U maarch -d maarchRM -h localhost -c "SELECT \"accountId\", \"ownerOrgId\" FROM auth.account WHERE \"accountId\" = 'superadmin';"

Configuration finale

Fichiers de configuration clés

confvars.ini :

@var.dsn = "pgsql:host=localhost;dbname=maarchRM;port=5432"
@var.username = maarch
@var.password = maarch

Algorithme de hashage : SHA256 (configuré dans configuration.ini)

Accès final

  • URL : http://172.23.2.10:8080
  • Utilisateur : superadmin
  • Mot de passe : superadmin
  • Organisation : ACME
  • Rôle : ADMIN_GENERAL

Points d'attention pour installations futures

  1. Conflit Plesk : Toujours utiliser un port alternatif (8080, 8081, etc.)
  2. Configuration JSON : Vérifier l'absence de sections commentées malformées dans les fichiers .ini
  3. Bundles : S'assurer que tous les bundles listés dans Apache sont disponibles
  4. Extensions PHP : Installer mbstring en plus des extensions de base
  5. Organisations : Vérifier que les utilisateurs ont une organisation assignée
  6. Hashage des mots de passe : Utiliser SHA256 simple sans salt supplémentaire

Commandes de diagnostic utiles

# Vérifier les ports Apache
netstat -tlnp | grep apache

# Tester la connexion PostgreSQL  
php -r "try { \$pdo = new PDO('pgsql:host=localhost;dbname=maarchRM;port=5432', 'maarch', 'maarch'); echo 'OK\n'; } catch (Exception \$e) { echo \$e->getMessage(); }"

# Vérifier les utilisateurs et organisations
psql -U maarch -d maarchRM -h localhost -c "SELECT a.\"accountId\", a.\"ownerOrgId\", o.\"orgName\" FROM auth.account a LEFT JOIN organization.organization o ON a.\"ownerOrgId\" = o.\"orgId\";"

# Surveiller les logs
tail -f /var/log/apache2/error.log
Actions

Formats disponibles : Atom PDF