Mantis

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Bugtracker
Licence Open source (GPLv2)
Technologie PHP / MySQL
Site mantisbt.org
Voir aussi Indefero · Redmine · Jira

MantisBT (souvent abrégé Mantis) est un bugtracker libre écrit en PHP, plus simple à déployer que Redmine ou Jira pour un usage centré sur le suivi d'anomalies plutôt que sur la gestion complète de projet.

Installation

Récupérer une archive sur la [http://www.mantisbt.org/download.php page de téléchargement officielle], puis installer les paquets nécessaires côté serveur (exemple RHEL/CentOS) :

yum install -y php php-devel php-mysql mysql-server httpd
chkconfig mysqld on
chkconfig httpd on
/usr/bin/mysqladmin -u root password 'MOT_DE_PASSE'

Sur RHEL6 et antérieur, désactiver le pare-feu legacy iptables au profit d'une configuration explicite adaptée à Mantis (ou le laisser actif et ouvrir uniquement le port HTTP/HTTPS) :

chkconfig iptables off
service iptables stop

Si SELinux bloque le fonctionnement de l'application et qu'un diagnostic via audit2allow n'est pas concluant, le désactiver en dernier recours dans /etc/selinux/config (SELINUX=disabled) puis redémarrer la machine — à réserver aux cas où une politique dédiée n'est pas envisageable, cf. SELinux.

Copier les fichiers téléchargés dans la racine web puis donner la propriété à l'utilisateur du serveur web :

chown -R apache:apache /var/www/html/mantis

Pendant l'installation via le navigateur, un répertoire doit être temporairement inscriptible ; le remettre en lecture seule dès l'installation terminée plutôt que de le laisser en 777 :

chmod 777 -R /mantis      # le temps de l'installation seulement
# ... installation via l'interface web ...
chmod 755 -R /mantis
rm -rf /mantis/admin       # supprimer le répertoire d'administration après installation

Configuration

Base de données

mysql -u root -p
CREATE DATABASE mantisbt;
exit

Langue

Passer l'interface en français dans config_defaults_inc.php :

$g_default_language = 'french';

Fuseau horaire PHP

sed -i "s/date.timezone =.*/date.timezone = 'Europe\/Brussels'/" /etc/php.ini

Virtual host Apache

echo 'Include /etc/httpd/conf/mantis.conf' >> /etc/httpd/conf/httpd.conf
mkdir /etc/httpd/conf/includes
# /etc/httpd/conf/includes/mantis.conf
<Directory "/var/www/html/">
    Options All
    AllowOverride None
    # Apache 2.2 : Order/Allow/Deny — sous Apache 2.4, remplacer par "Require all granted"
    Order deny,allow
    Allow from all
</Directory>

<VirtualHost IP_SERVEUR>
    DocumentRoot /var/www/html
</VirtualHost>

Migration depuis une instance existante

mysqldump -u root -p --databases mantisbt > /root/mantisbt_$(date +%Y%m%d).sql

Puis restaurer ce dump sur la nouvelle instance avant de copier les fichiers uploadés (pièces jointes) du répertoire de données Mantis.

Authentification via Active Directory / LDAP

Installer les paquets nécessaires :

yum install -y httpd mysql-server php php-mysql openldap-clients php-ldap

Puis, dans config_inc.php :

// --- Authentification LDAP ---
$g_login_method           = LDAP;
$g_ldap_protocol_version  = 3;
$g_ldap_server            = 'ldap://ANNUAIRE.DOMAINE.TLD';
$g_ldap_port              = 389;
$g_ldap_bind_dn           = 'CN=Nom_Commun,OU=Unite_Organisationnelle,DC=domaine,DC=tld';
// C'est ce champ qui fait la correspondance entre Mantis et l'Active Directory :
$g_ldap_uid_field         = 'sAMAccountName';
$g_ldap_bind_passwd       = 'MOT_DE_PASSE_COMPTE_TECHNIQUE';
$g_ldap_root_dn           = 'OU=Unite_Organisationnelle,DC=domaine,DC=tld';
$g_ldap_organization      = '(objectClass=*)';
$g_ldap_realname_field    = 'cn';
// Récupère l'email du compte LDAP (si OFF, un compte local est nécessaire pour se connecter)
$g_use_ldap_email         = ON;
$g_use_ldap_realname      = ON;
// Retire l'obligation de préciser l'OU de base
$g_ldap_follow_referrals  = OFF;

// --- Inscription ---
$g_allow_signup           = OFF;
$g_lost_password_feature  = OFF;

Pour valider la syntaxe d'un DN/OU avant de le mettre en configuration, tester au préalable avec un script PHP LDAP minimal ou un outil comme ldapsearch.

Personnalisation

Les libellés et droits par groupe se modifient dans custom_strings_inc.php et config_inc.php — préférer un fichier config_inc.php propre plutôt que de modifier les fichiers du cœur applicatif, pour rester compatible avec les futures mises à jour.

Installation depuis les sources (Git)

git clone https://github.com/mantisbt/mantisbt.git
cd mantisbt
git submodule update --init

Voir aussi

  • Indefero — alternative combinant hébergement de dépôt et suivi de tickets
  • Redmine — suivi de projet plus riche (temps, sous-projets, wiki)
  • Jira — équivalent commercial
  • SELinux — contexte à adapter plutôt que désactiver en production