Kanboard
Sommaire
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);