Hébergement Dolibarr sous CentOS

Logo DolibarrCet article décrit l’installation et la maintenance de Dolibarr sur un serveur dédié tournant sous CentOS 7. Dolibarr est un ERP/CRM (Enterprise Resource Planing & Customer Relationship Management) libre qui permet aux entreprises, aux associations ou aux micro-entrepreneurs, de gérer une activité professionnelle ou associative : contacts, factures, commandes, stocks, agenda, etc.

La procédure d’installation présentée ici comporte quelques améliorations par rapport à la documentation officielle, notamment en termes de sécurité.

Dolibarr Microlinux

Prérequis

Configuration de l’hôte virtuel

La configuration de l’hôte virtuel respecte la nomenclature choisie par les développeurs de Dolibarr, notamment htdocs pour la racine du serveur. Voici à quoi cela ressemble sur ma machine de test.

# /etc/httpd/conf.d/20-gestion.slackbox.fr.conf

# http://gestion.slackbox.fr -> https://gestion.slackbox.fr
<VirtualHost *:80>
  ServerName gestion.slackbox.fr
  Redirect / https://gestion.slackbox.fr
</VirtualHost>

# https://gestion.slackbox.fr
<VirtualHost _default_:443>
  Header always set Strict-Transport-Security \
    "max-age=63072000; includeSubDomains"
  ServerAdmin info@microlinux.fr
  DocumentRoot "/var/www/slackbox-dolibarr/htdocs"
  ServerName gestion.slackbox.fr:443
  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/chemin/vers/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/chemin/vers/privkey.pem
  SSLCertificateChainFile /etc/letsencrypt/chemin/vers/fullchain.pem
  BrowserMatch "MSIE [2-5]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
  ErrorLog logs/gestion.slackbox.fr-error_log
  CustomLog logs/gestion.slackbox.fr-access_log common
</VirtualHost>

Configuration de SELinux

Étant donné que nous installons Dolibarr en-dessous de /var/www, tous les fichiers nouvellement créés seront correctement étiquetés httpd_sys_content_t. Rien à signaler de ce côté-là.

Dolibarr doit pouvoir envoyer des mails via Postfix, ce qu’il faut explicitement autoriser.

# setsebool -P httpd_can_sendmail on

Apache possède les droits d’écriture sur le répertoire documents ainsi que sur le fichier htdocs/conf/conf.php. Ces droits d’écriture seront définis par le biais des permissions Unix classiques, mais il faut également le spécifier du côté de SELinux.

# setsebool -P httpd_unified on

Notons au passage que la documentation officielle attribue à la louche les droits d’écriture d’Apache et ne fait aucune mention de l’autorisation d’envoi de mails.

Téléchargement

Créer un répertoire de téléchargement approprié pour ranger Dolibarr.

# mkdir -p /root/webapps/dolibarr

Avant de démarrer Links, vérifier la version du navigateur.

# links -version
ELinks 0.12pre6

Il s’agit d’une ancienne version, fournie par le paquet elinks. Nous allons la remplacer par une version plus récente, qui supporte les connexions SSL.

# yum remove elinks
# yum install links

Cette fois-ci, nous disposons bien de la bonne version.

# links -version
Links 2.13

Lancer Links depuis le répertoire de téléchargement.

# cd /root/webapps/dolibarr
# links https://www.dolibarr.fr

Suivre les liens Téléchargements > Espace téléchargement Sourceforge > Files > Dolibarr ERP-CRM > 5.0.6 > dolibarr-5.0.6.tgz > direct link > Enregistrer > OK.

Installation

Créer la base de données.

# mysql -u root -p
Enter password: ********
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.52-MariaDB MariaDB Server

MariaDB [(none)]> create database `slackbox-dolibarr`;
Query OK, 1 row affected (0.02 sec)

MariaDB [(none)]> grant all on `slackbox-dolibarr`.* 
    -> to slackboxuser@localhost 
    -> identified by '********';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit;
Bye

Décompresser l’archive téléchargée à la racine des hôtes virtuels.

# cd /var/www/
# tar xzf /root/webapps/dolibarr/dolibarr-5.0.6.tgz

Renommer en fonction de l’hébergement.

# mv dolibarr-5.0.6 slackbox-dolibarr

La documentation officielle préconise l’attribution de l’ensemble des fichiers à l’utilisateur et au groupe système auquel appartient le processus httpd, ce qui est quelque peu aberrant en termes de sécurité. Nous allons donc attribuer ces fichiers à l’utilisateur “commun mortel” microlinux et au groupe correspondant, en limitant les droits d’écriture d’Apache aux fichiers et aux répertoires pour lesquels cela est strictement nécessaire.

# chown -R microlinux:microlinux slackbox-dolibarr/
# find slackbox-dolibarr/ -type d -exec chmod 0755 {} \;
# find slackbox-dolibarr/ -type f -exec chmod 0644 {} \;

Créer un fichier de configuration vide.

# cd slackbox-dolibarr/
# touch htdocs/conf/conf.php

Définir les permissions de ce fichier.

# chown microlinux:apache htdocs/conf/conf.php
# chmod 0660 htdocs/conf/conf.php

Créer le répertoire qui servira aux documents générés ou stockés par Dolibarr. Pour des raisons de sécurité évidentes, il se situe à l’extérieur de l’arborescence du site.

# mkdir documents

Définir les permissions de ce répertoire.

# chown -R microlinux:apache documents
# chmod 0770 documents/

Pointer le navigateur sur l’URL de l’application et suivre les instructions de l’installateur. Je ne fournis pas ici d’instructions détaillées, je relève juste sommairement les étapes de l’installation.

  1. Sélectionner la langue (French).
  2. Vérifier si tous les prérequis techniques sont remplis.
  3. Vérifier les chemins d’accès vers le site et les documents.
  4. Cocher Forcer les connexions sécurisées (HTTPS).
  5. Saisir l’identifiant et le mot de passe de l’utilisateur MySQL.
  6. Définir un identifiant et un mot de passe pour l’utilisateur Dolibarr.

Une fois l’installation terminée, on peut la verrouiller comme ceci.

# cd /var/www/slackbox-dolibarr/documents/
# touch install.lock
# chmod 0440 install.lock

À ce stade, Apache n’a plus besoin d’écrire dans le fichier htdocs/conf/conf.php.

# cd /var/www/slackbox-dolibarr/htdocs/conf/
# chown microlinux:microlinux conf.php
# chmod 0644 conf.php

Accéder à l’interface d’administration et procéder à la configuration de base. Saisir au minimum le nom de la société et le pays où elle est implantée, et activer les modules dont on a besoin. Voici comment se présente notre application.

Dolibarr Accueil

Mise à jour

Dans l’exemple qui suit, nous effectuons la mise à jour d’une installation existante de Dolibarr 3.9.1 vers la versions 5.0.6. Cette mise à jour peut s’effectuer directement, c’est-à-dire sans passer par toutes les versions intermédiaires 3.9.2, 3.9.3, 4.0.0, etc.

Supprimer le fichier documents/install.lock.

# cd /var/www/slackbox-dolibarr/documents/
# rm install.lock

Décompresser la nouvelle archive de Dolibarr à la racine des hôtes virtuels.

# cd /var/www/
# tar xzf /root/webapps/dolibarr/dolibarr-5.0.6.tgz

Recopier les nouveaux fichiers dans le répertoire /var/www/dolibarr-5.0.6 vers le répertoire contenant l’ancienne version de Dolibarr. Ceci a pour effet de remplacer les anciens fichiers par les nouveaux, tout en conservant les fichiers qui sont spécifiques à l’installation, comme le fichier conf.php, le contenu du répertoire documents ou encore les modules complémentaires installés. Au cas où la commande cp comporte un alias vers cp -i, il faudra provisoirement le désactiver.

# alias cp
alias cp='cp -i'
# unalias cp
# cp -Rf dolibarr-5.0.6/* slackbox-dolibarr/
# alias cp='cp -i'

À partir de là, on pourra supprimer l’arborescence initiale.

# rm -rf dolibarr-5.0.6/

Redéfinir les droits d’accès.

# chown -R microlinux:microlinux slackbox-dolibarr/
# find slackbox-dolibarr/ -type d -exec chmod 0755 {} \;
# find slackbox-dolibarr/ -type f -exec chmod 0644 {} \;
# cd slackbox-dolibarr/
# chown -R microlinux:apache documents/
# find documents/ -type d -exec chmod 0770 {} \;
# find documents/ -type f -exec chmod 0660 {} \;

Pointer le navigateur sur la page d’installation, dans le sous-répertoire install.

  • https://chemin_vers_dolibarr/install/

Choisir Mise à jour dans le menu proposé, en respectant les versions intermédiaires, et lancer les étapes de migration successives. L’interface de mise à jour affichera un avertissement relatif à l’échec de la suppression d’une série de fichiers. Il suffira de les supprimer manuellement.

# cd /var/www/slackbox-dolibarr/htdocs
# rm -f compta/facture/class/api_invoice.class.php
# rm -f commande/class/api_commande.class.php
# rm -f product/class/api_product.class.php
# rm -f societe/class/api_contact.class.php
# rm -f societe/class/api_thirdparty.class.php

Une fois la mise à jour terminée, verrouiller le répertoire d’installation.

# cd /var/www/slackbox-dolibarr/documents
# touch install.lock
# chmod 0440 install.lock

Installer le module Multi-société

Créer un répertoire custom qui contiendra les modules tiers.

# mkdir htdocs/custom

Éditer le fichier htdocs/conf/conf.php et définir le chemin vers les modules.
Il suffira éventuellement de décommenter les deux lignes correspondantes.

$dolibarr_main_url_root='http://myserver';
$dolibarr_main_document_root='/path/of/dolibarr/htdocs';
$dolibarr_main_url_root_alt='http://myserver/custom';
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom';
...

Décompresser le module.

# unzip module_multicompany_3.4.0.zip

Déplacer l’arborescence résultante vers l’endroit approprié.

# mv multicompany/ chemin_vers_dolibarr/htdocs/custom/

Régler les droits d’accès.

# chown -R microlinux:microlinux chemin_vers_dolibarr/htdocs/custom/

Élargir la colonne des libellés

Lorsqu’on affiche la liste des Produits ou des Services, la colonne Libellé n’est pas assez large pour afficher certains produits dont la dénomination est plus longue. Pour remédier à cela, on peut aller dans htdocs/product et éditer le fichier list.php, en remplaçant la valeur maximale 40 par une valeur supérieure, comme ceci par exemple.

// Label
if (! empty($arrayfields['p.label']['checked']))
{
print '<td>'.dol_trunc($objp->label,60).'</td>';
}

 

Ce contenu a été publié dans CentOS, Documentation Microlinux, avec comme mot(s)-clé(s) , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *