Installation de Kollect

La documentation ci-dessous se base sur un serveur sous Debian Stretch. La procédure reste cependant sensiblement identique pour les autres versions de Debian et ses dérivées.

Pour tester la compatibilité avec un autre OS ou une autre version de Debian, il est tout à fait possible de tester l'installation et le fonctionnement de l'application sur une machine virtuelle (VirtualBox, LXC, VMware...).

Notes

Prenez-soin d'adapter les instructions selon votre configuration existante (mails, locales, versions de paquets déjà installés...), ainsi que les variables (nom de la base de données, de l'utilisateur, les mot de passe...). De plus, la procédure détaille une installation orienté développement, pour un déploiement en production, assurez-vous de mettre en place les moyens nécessaires pour sécuriser votre instance (certificat SSL, firewall, limitation des connexion sur le port de la base de données...).

Les paquets

Le coeur de l'application tourne autour d'un serveur Apache2, de PHP et de PostgreSQL.

apt-get install apache2 php7.0 php7.0-fpm libapache2-mod-php7.0 php7.0-gd php7.0-mbstring net-tools git ssmtp
apt-get install postgresql-9.6 phppgadmin

Si vous n'installez pas phppgadmin, installez manuellement les librairies php-pgsql et php7.0-pgsql Et vérifier que l'extension est bien activée dans le php.ini

Activer les modules PHP

a2enmod proxy_fcgi setenvif 
a2enconf php7.0-fpm 
systemctl reload apache2

La base de données

Créer la base de données et l'utilisateur.

runuser postgres -c 'createuser USER'
runuser postgres -c 'createdb KDB'
runuser postgres -c 'psql'
    alter user "USER" with encrypted password 'PASSWORD';
    grant all privileges on database "KDB" to "USER";

Pour quitter psql, faire : \q

Editer les ports d'écoute de postgreSQL

nano /etc/postgresql/9.6/main/postgresql.conf

Décommenter la ligne et ajouter la wildcard :

listen_addresses = '*' # what IP address(es) to listen on;

Pour enregistrer et quitter faire :

ctrl O puis Entrée puis ctrl x.

Autoriser accès externes (Pgadmin, etc ...)

cd /etc/postgresql/9.6/main/
nano pg_hba.conf

Ajouter à la fin du fichier la ligne suivante :

host all all 0.0.0.0/0 md5

Pour enregistrer et quitter faire :

ctrl O puis Entrée puis ctrl x.

Autoriser l'accès à PhppgAdmin

cd /etc/apache2/conf-available/
nano phppgadmin.conf

Commenter Require local (devient #Require local) Ajouter allow from all

Et relancer les services

systemctl restart postgresql
systemctl restart apache2

La connexion est maintenant possible avec l'utilisateur USER et le mot de passe PASSWORD.

Vérifier le bon fonctionnement de postgres sur le localhost

La commande netstat -nlp permet de vérifier que PostgreSQL écoute bien sur le ou les ports mentionnés plus haut. Dans le cas d'une ouverture à toutes les IP (listen_addresses = '*'), netstat -nlp doit renvoyer :

tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 14658/postgres

Tester la connexion

psql -h localhost -p 5432 -U USER KDB

Un prompt psql avec le nom de base de donnée doit apparaître. Pour quitter psql, faire \q.

Cloner le projet

Récupérer le projet depuis le dépôt public de Github et assigner les droits. Prenez soin de remplacer user par votre utilisateur système.

cd /var/www/html/
git clone https://github.com/dsi-cen/kollect.git kollect
chown -R user:www-data /var/www/html/kollect # attribuer le propriétaire (user) et le groupe (www-data)
cd /var/www/html/kollect/ && find . -type d -exec chmod 770 {} \;
cd /var/www/html/kollect/ && find . -type f -exec chmod 660 {} \;

Les emails

La commande ls -la /usr/sbin/sendmail doit renvoyer /usr/sbin/sendmail -> ssmtp.

Configurer ssmtp en ouvrant la conf : nano /etc/ssmtp/ssmtp.conf

Adapter les variables selon les paramètres de votre serveur SMTP.

root=adresse@mail.fr
hostname=nomdelamachine
mailhub=adresseSMTP:port
FromLineOverride=YES
AuthUser=adresse@mail.fr
AuthPass=motdepasse
UseTLS=YES

Attention, pour que l'envoie des emails soit effectif, votre serveur doit être identifié par un nom de domaine est correctement identifié dans le DNS (A ou MX-record).

Configuration de Kollect

Ouvrir le navigateur sur http://ip_serveur/kollect et suivre les instructions. La configuration du site est détaillée ici.