Mon CV

Installation de la webapp Pollen (sondage en ligne)

27 janvier 2014

Vous connaissez forcément Doodle.com, le service web qui vous permet d’organiser facilement vos réunions et RDV à l’aide de petits sondages. Et peut-être vous êtes comme moi : vous trouvez ce service très pertinent mais vous avez toujours une hésitation à mettre en ligne des données sur les serveurs de tiers. Evidemment, tant qu’il s’agit d’organiser l’anniversaire de tata Josette ou de choisir le ingrédients du prochain barbecue, ça ne pose de problème mais quand il s’agit d’organiser des RDV professionnels, selon votre activité, cela peut ne pas être tout à fait anodin.

Du coup, j’ai cherché une alternative libre que je puisse héberger facilement. Idéalement, j’étais en quête d’une application web qui puisse s’appuyer sur l’annuaire LDAP pour l’authentification des utilisateurs. Contrairement à ce que je pensais, il n’y a pas pléthore.

En premier, je suis tombé sur RdvZ que j’ai utilisé quelques temps, une application web développée sous le framework Symfony. Je l’ai testé quelques temps, l’interface est agréable, assez ergonomique, mais il persiste malheureusement quelques bugs javascript que je n’ai pas réussi à stabiliser.

J’ai ensuite utilisé  STUdS (OpenSondage), qui fonctionne correctement, mais dont l’ergonomie et l’esthétique ont un petit goût de 20ème siècle. Les nostalgiques apprécieront … les autres non !

Ma recherche a été relancée récemment par un billet récent publié sur NetPublic par Jean-Luc Raymond, billet qui recense d’autres alternatives libres (notamment Nuages, Papillon et Dude).

J’ai découvert ici Pollen, un autre projet émanent de l’Université d’Avignon.

Pollen

Installer Pollen, application de sondages

Pollen est une application web développée en Java. Pour l’installer vous avez le choix entre deux options :

  • Mode autonome (embarqué) : dans ce mode Pollen se présente comme une application autonome qui peut être lancée simplement sans besoin de conteneur web.
  • Mode serveur : dans ce mode on déploie Pollen dans un conteneur web (tomcat, jetty,…) avec une configuration adaptée pour un serveur.

Si vous utilisez Tomcat, j’imagine que le déploiement de Pollen ne vous posera pas de problème. Je vais donc ici vous proposer quelques informations pour une installation en mode embarqué, c’est à dire une installation autonome qui n’a pas besoin de conteneur web.

Pour démarrer, vous devez disposer d’une installation Apache fonctionnelle, d’un sous-domaine que nous allons dédier à cette application et d’un utilisateur qui sera utilisé spécifiquement pour lancer Pollen (ici pollen, dans le groupe users).

Pour commencer, rendez-vous dans le dossier dans lequel vous souhaitez installer Pollen (ici pour tout ce tutoriel, ce sera /home/pollen et je réaliserai mon installation dans /home/pollen/webapp). Récupérez ensuite la dernière version de Pollen :

cd /home/pollen
wget http://www.chorem.org/attachments/download/149/pollen-1.5.5-bin.zip
unzip pollen-1.5.5-bin.zip
rm pollen-1.5.5-bin.zip
mv pollen webapp
chmod +x /home/pollen/webapp/*.sh
chown -R pollen:users /home/pollen/webapp

Il vous est ensuite possible de lancer Pollen avec une simple commande :

./pollen.sh

Une fois Pollen démarré, vous pouvez vérifier que Pollen tourne correctement à l’adresse http://localhost:8888 depuis le poste où vous installez Pollen. Une fois que vous avez vérifié que votre installation est fonctionnelle, arrêtez Pollen avec un simple Ctrl+C dans votre terminal.

Personnaliser la configuration (pollen.properties)

Pour affiner votre installation, tout se passe dans le fichier pollen.properties situé à la racine de votre installation.

Attardez-vous sur les variables suivantes :

  • siteUrl= Adresse publique de votre instance de pollen (utilisé pour générer les liens d’accès au sondage dans les emails envoyés). Pour moi ce sera http://pollen.monserveur.com/home.
  • email_host= Serveur smtp utilisé pour envoyer les emails
  • email_port= Port du serveur smtp
  • email_from= Adresse de l’expéditeur des emails

Vous pouvez personnaliser également la base données utilisée par Pollen, en vous rapportant à cette documentation.

Créer une entrée /etc/init.d pour le lancement

Pour lancer Pollen nous allons créer une entrée dans /etc/init.d et configurer le démarrage au boot.

Créez le fichier /etc/init.d/pollen avec le contenu suivant :

#!/bin/sh

### BEGIN INIT INFO
# Provides:          pollen
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts pollen webapp
# Description:       starts pollen webapp using start-stop-daemon
### END INIT INFO

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin"
LOGFILE="/var/log/pollen.log"
EPLITE_DIR="/home/pollen"
EPLITE_BIN="/webapp/pollen.sh"
USER="pollen"
GROUP="users"
DESC="Pollen"
NAME="pollen"

set -e

. /lib/lsb/init-functions

start() {
  echo "Starting $DESC... "

	start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $EPLITE_DIR/$EPLITE_BIN -- $LOGFILE || true
  echo "done"
}

 #We need this function to ensure the whole process tree will be killed 
killtree() {
    local _pid=$1
    local _sig=${2-TERM}
    for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
        killtree ${_child} ${_sig}
    done
    kill -${_sig} ${_pid}
}

stop() {
  echo "Stopping $DESC... "
   while test -d /proc/$(cat /var/run/$NAME.pid); do
    killtree $(cat /var/run/$NAME.pid) 15
    sleep 0.5
  done
  rm /var/run/$NAME.pid
  echo "done"
}

status() {
  status_of_proc -p /var/run/$NAME.pid "" "pollen" && exit 0 || exit $?
}

case "$1" in
  start)
	  start
	  ;;
  stop)
    stop
	  ;;
  restart)
	  stop
	  start
	  ;;
  status)
	  status
	  ;;
  *)
	  echo "Usage: $NAME {start|stop|restart|status}" >&2
	  exit 1
	  ;;
esac

exit 0

Rendez ce fichier exécutable puis ajoutez le au boot :

chmod +x /etc/init.d/pollen
update-rc.d pollen defaults 20

Vous pouvez désormais lancer Pollen avec la commande :

/etc/init.d/pollen start

… l’arrêter avec la commande :

/etc/init.d/pollen stop

… ou connaître son état avec :

/etc/init.d/pollen status

Configurer le proxy sur un hôte virtuel Apache

Pour faire fonctionner Pollen sur un port web standard (80), vous pouvez utiliser votre firewall pour rediriger le trafic du port 8888 au port 80. Evidemment cela n’est valable que si vous n’avez pas d’autre service web qui tourne sur votre serveur.

Si c’est le cas, je vous propose de créer un hôte virtuel Apache dédié à Pollen, qui utilisera le proxy pour rediriger le trafic. Créez votre fichier /etc/apache2/sites-available/pollen.monserveur.com.conf avec le contenu suivant :

<VirtualHost *:80>
ServerName pollen.monserveur.com
ServerSignature Off
CustomLog /var/log/apache2/pollen.monserveur.com_access.log combined
ErrorLog /var/log/apache2/pollen.monserveur.com_error.log
ProxyVia On
ProxyRequests Off
ProxyPass / http://localhost:8888/
ProxyPassReverse / http://localhost:8888/
ProxyPreserveHost on
<Proxy *>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Proxy>
</VirtualHost>

puis activez cet hôte virtuel et relancez Apache :

a2ensite pollen.monserveur.com.conf
/etc/init.d/apache2 reload
/etc/init.d/apache2 restart

Comme d’habitude, si vous avez des précisions ou commentaires, n’hésitez pas !

Posted in Unix et LinuxTags: