Evolution #798
ouvertprocédure #795: Installation maarch
documentation
100%
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¶
- Conflit Plesk : Toujours utiliser un port alternatif (8080, 8081, etc.)
- Configuration JSON : Vérifier l'absence de sections commentées malformées dans les fichiers .ini
- Bundles : S'assurer que tous les bundles listés dans Apache sont disponibles
- Extensions PHP : Installer mbstring en plus des extensions de base
- Organisations : Vérifier que les utilisateurs ont une organisation assignée
- 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