Kanboard

De Wiki de Jordan LE NUFF
Sauter à la navigation Sauter à la recherche

Présentation

Cette page a pour objet de décrire l'outil Kanboard.

Description

Kanboard est un logiciel libre de gestion de projet qui utilise la méthode Kanban.

Plus d'informations sur le site officiel : https://kanboard.org/.

Installation

Prérequis

Système d'exploitation

Selon la documentation officielle sur les prérequis, les systèmes d'exploitation supportés sont les suivants :

  • Alpine Linux >= 3.8
  • Linux Ubuntu >= 16.04
  • Linux Centos 7.x
  • Linux Redhat 7.x
  • Linux Debian 9
  • FreeBSD 10.x
  • Microsoft Windows 2016
  • Microsoft Windows 2012 R2

Le serveur sur lequel sera installé Kanboard étant en CentOS 7, ce prérequis est respecté.

Base de données

Selon la documentation officielle sur les prérequis, les bases de données supportées sont les suivantes :

  • Sqlite >= 3.7
  • Mysql >= 5.6
  • MariaDB >= 10
  • Postgresql >= 9.3

La base de données du serveur vmexploit02 étant MySQL 5.7.26, ce prérequis est respecté.

Serveur web

Selon la documentation officielle sur les prérequis, les serveurs web supportés sont les suivants :

  • Apache HTTP Server
  • Nginx
  • Microsoft IIS
  • Caddy Server

Le serveur web utilisé sur le serveur sur lequel sera installé Kanboard étant Apache 2.4.39, ce prérequis est respecté.

Les modules mod_rewrite et mod_version devront être activés.

Le module mod_security devra être désactivé.

PHP

Selon la documentation officielle sur les prérequis, la version minimum de PHP à utiliser est la 5.6.0.

Les versions de PHP sur le serveur sur lequel sera installé Kanboard étant 5.6.40 et 7.3.4, ce prérequis est respecté.

Les extensions suivantes seront à activer :

  • pdo_mysql
  • gd
  • mbstring
  • openssl
  • json
  • hash
  • ctype
  • session
  • filter
  • xml
  • SimpleXML
  • dom

Les extensions suivantes sont optionnelles, mais recommandées :

  • zip
  • ldap
  • curl

La documentation recommande également d'activer la gestion de cache avec OpCode.

Téléchargement

Pour télécharger Kanboard, lancer la commande suivante :

wget -O ~/downloads/kanboard-1.2.11.tar.gz https://codeload.github.com/kanboard/kanboard/tar.gz/v1.2.11

Déploiement des sources

Créer le dossier principal dédié à l'application :

mkdir /data/www/kanboard

Décompresser le fichier dans le répertoire web cible :

tar -xzf ~/downloads/kanboard-1.2.11.tar.gz -C /data/www/kanboard

Créer le lien symbolique pointant vers la version en cours :

ln -s /data/www/kanboard/kanboard-1.2.11 /data/www/kanboard/current

Changer le propriétaire du dossier :

chown -R www:www /data/www/kanboard

Configuration PHP

Sur le serveur web, créer le fichier /local/php/php-7.3.4/etc/php-fpm.d/kanboard.conf et y ajouter le contenu suivant :

[kanboard]
user = php-fpm
group = php-fpm

; Socket Unix dédié à Kanboard
listen = /local/php/sockets/php7_$pool.sock

; Donner à Apache (www) les droits d'accès au socket
listen.owner = www
listen.group = www

; Définition du chemin d'accès des logs
access.log = /data/logs/$pool/$pool_php7.access.log
slowlog = /data/logs/$pool/$pool_php7.log.slow
php_admin_value[error_log] = /data/logs/$pool/$pool_php7.log
php_admin_flag[log_errors] = on
; https://www.php.net/manual/fr/errorfunc.constants.php
php_admin_value[error_reporting] = E_NOTICE

; Tuning du pool php-fpm
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /status
ping.path = /ping

Changer temporairement de umask

umask 0002

Créer le dossier de loggs :

mkdir /data/logs/kanboard

Créer les fichiers de logs :

touch /data/logs/kanboard/kanboard_php7.access.log
touch /data/logs/kanboard/kanboard_php7.log
touch /data/logs/kanboard/kanboard_php7.log.slow

Changer de propriétaire le dossier de logs :

chown -R php-fpm:www /data/logs/kanboard

Recharger la configuration PHP avec la commande :

systemctl restart php7-fpm

Configuration Apache

Editer le fichier /local/www/httpd-2.4.39/conf/sites/01_vmexploit02.conf et y ajouter la section suivante :

# Configuration Kanboard
Alias /kb /data/www/kanboard/current
<Directory "/data/www/kanboard/current">
	Options FollowSymLinks
	DirectoryIndex index.php
	AllowOverride All
	Require all granted
	<FilesMatch \.php$>
		SetHandler "proxy:unix:/local/php/sockets/php7_kanboard.sock|fcgi://localhost/"
	</FilesMatch>
</Directory>
# Fin de configuration Kanboard

Relancer Apache pour prise en compte :

httpd -k graceful

Configuration MySQL

Se connecter à l'instance de base de données :

mysql -uroot -p

Créer une base de données dédiée à Kanboard :

CREATE DATABASE kanboard_db;

Créer un utilisateur de base de données dédié à Kanboard :

CREATE USER 'kanboard_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxxxxxxxxxx';

Lui donner les droits d'accès à la base de données :

GRANT ALL PRIVILEGES ON kanboard_db.* TO 'kanboard_user'@'localhost' WITH GRANT OPTION;

Paramétrage

Copier le fichier config.default.php en config.php :

cp config.default.php config.php

Il faut ensuite éditer le fichier config.php et adapter les paramètres en fonction des besoins (voir la documentation officielle).

Définir le type d'historisation à file :

define('LOG_DRIVER', 'file');

Définir le fichier de log :

define('LOG_FILE', '../logs/debug.log');

Créer le dossier de logs :

mkdir /data/www/kanboard/logs
chown php-fpm:www /data/www/kanboard/logs

Définir les différents paramètres de connexion à la base de données :

define('DB_DRIVER', 'mysql');
define('DB_USERNAME', 'kanboard_user');
define('DB_PASSWORD', 'xxxxxxxxxxxxx');
define('DB_HOSTNAME', 'localhost;unix_socket=/local/mysql/current/mysql.sock');
define('DB_NAME', 'kanboard_db');

Définir les différents paramètres de connexion au LDAP :

define('LDAP_AUTH', true);
define('LDAP_SERVER', 'xxxxxxxxxxxx');
define('LDAP_BIND_TYPE', 'proxy');
define('LDAP_USERNAME', 'xxxxxxxxxxxx');
define('LDAP_PASSWORD', 'xxxxxxxxxxxx');
define('LDAP_USER_BASE_DN', 'xxxxxxxxxxxx');
define('LDAP_USER_FILTER', '(&(objectClass=user)(sAMAccountName=%s))');
define('LDAP_USER_ATTRIBUTE_USERNAME', 'samaccountname');
define('LDAP_USER_ATTRIBUTE_FULLNAME', 'displayname');
define('LDAP_USER_ATTRIBUTE_PHOTO', 'thumbnailPhoto ');
define('LDAP_GROUP_ADMIN_DN', 'xxxxxxxxxxxx');

NB : Il faut adapter les valeurs xxxxxxxxxxxx en fonction du besoin.

Activer les URLs conviviales :

define('ENABLE_URL_REWRITE', true);

Configuration