Installation de Wisemapping

Classé dans : Cultiver son jardin | 11
image_pdfimage_print

Wisemapping est le logiciel d’édition collaborative de cartes mentales que nous proposons sur Framindmap.

Voici un tutoriel pour vous aider à l’installer sur votre serveur.

N’hésitez pas à poser des questions dans les commentaires. Si vous êtes parvenu à l’installer, donnez-nous le lien vers votre instance et dites-nous dans quelle mesure ce tutoriel vous aura été utile 🙂

Prérequis

Java Development Kit 7

Pour faire fonctionner Wisemapping, il est nécessaire d’installer Java Development Kit 7. La version libre openjdk-7 présente dans les dépôts de votre distribution GNU/Linux suffit normalement (sur Debian : apt-get install openjdk-7-jdk).

Premier pas – Semer en pot

Ensuite, vous n’avez qu’à télécharger le fichier .zip sur le site officiel, extraire le contenu dans un dossier, ouvrir ce dossier dans un terminal et exécuter la commande ./start.sh (également possible sur Windows en tapant java -Xmx256m -Dorg.apache.jasper.compiler.disablejsr199=true -jar start.jar).

Lorsque vous voyez apparaître la ligne INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080, le serveur web et Wisemapping sont opérationnels.

Pour utiliser Wisemapping, ouvrez votre navigateur web à l’adresse http://localhost:8080/wisemapping.
Vous pouvez dès à présent enregistrer un compte (ou utiliser le compte « test@wisemapping.org » / mot de passe « test ») et créer des cartes mentales.

Cependant, il s’agit là d’une « installation » minimale du logiciel pour un usage personnel et local.

Par défaut, Wisemapping est pré-configuré pour tourner avec une base de données HSQLDB et avec un serveur web Jetty qui occupe le port 8080.

Dans le cadre d’une utilisation en ligne multi-utilisateurs, il est nécessaire d’avoir un serveur dédié et de procéder à quelques changements de configuration.

Base de données

Sur la page d’accueil du logiciel, il y a un message d’avertissement indiquant qu’il est préférable d’utiliser MySQL au lieu de HSQLDB. Il est aussi possible d’utiliser une base de données PostgreSQL pour améliorer les performances mais les développeurs de Wisemapping testent peu cette configuration.

Reverse proxy et nom de domaine

Pour proposer le service avec un nom de domaine et une URL plus propre il y a plusieurs possibilités :

  • utiliser un proxy inverse via un serveur web comme Apache ou nginx,
  • ou bien via un serveur de cache comme Varnish qui en plus d’être léger permet d’accélérer le chargement des pages.

Installation

1 – Préparer la terre

Tout d’abord, connectez-vous en tant que root sur votre serveur et créez un compte utilisateur wisemapping ainsi que le dossier /var/www/wisemapping dans lequel seront copiés les fichiers avec les droits d’accès correspondants.

useradd wisemapping
groupadd wisemapping
mkdir /var/www/wisemapping
chown wisemapping:wisemapping -R /var/www/wisemapping

2 – Semer

Connectez-vous avec l’utilisateur wisemapping : su wisemapping -s /bin/bash

Téléchargez le fichier .zip et copiez son contenu dans le dossier /var/www/wisemapping

cd /var/www/wisemapping
wget https://bitbucket.org/wisemapping/wisemapping-open-source/downloads/wisemapping-v3.0.3.zip
unzip wisemapping-v3.0.3.zip 
mv wisemapping-v3.0.3/* . && rmdir wisemapping-v3.0.3 && rm wisemapping-v3.0.3.zip

3 – Arroser

MySQL

Il faut maintenant créer la base de données et configurer Wisemapping.

Installez tout d’abord le paquet mysql-server (notez le mot de passe root) et démarrez MySQL : service mysql start

Dans le dossier config/database/mysql de wisemapping se trouvent les fichiers .sql permettant de créer la base de données, créer ou mettre à jour la structure des tables et éventuellement les remplir avec des données en exemple.

Modifiez le fichier create-database.sql pour changer le mot de passe (ligne 10) PASSWORD('ici_le_mot_de_passe') et si vous le souhaitez vous pouvez aussi changer l’utilisateur (lignes 9 et 10)'ici_l_utilisateur'@'localhost'.

On crée la base de données en ligne de commande :

cd /var/www/framindmap.org/config/database/mysql
mysql -uroot -pmot_de_passe_root_mysql < create-database.sql

Puis la structure des tables :

mysql -uroot -pmot_de_passe_root_mysql < create-schemas.sql

(idem avec apopulate-schemas.sql si vous souhaitez ajouter les données en exemple)

Wisemapping

Maintenant que la base de données est prête, il faut configurer Wisemapping pour qu'il puisse s'en servir.

Éditez le fichier webapps/wisemapping/WEB-INF/app.properties, décommentez (ie enlever les #) les lignes concernant MySQL et commentez celles concernant HSQL.

Remplacez les valeurs de database.username= et database.password= par l'utilisateur et le mot de passe choisis précédemment dans le fichier create-database.sql

Email

Toujours dans le fichier app.properties, modifier la partie Plain SMTP Server Configuration avec les paramètres SMTP d'une adresse à vous qui fonctionne.

Cette étape est indispensable pour que les utilisateurs inscrits puissent recevoir les e-mails de confirmation, les notifications lorsqu'une carte est partagée ou un nouveau mot de passe lorsqu'ils l'ont oublié.

Processus silencieux

Lorsque qu'on lance le script start.sh, le serveur tourne tant qu'on ne quitte pas le terminal. Pour éviter de devoir conserver un terminal ouvert en permanence, on exécute la commande suivie d'un &.

Lorsque la machine plante et doit redémarrer, il peut être utile de relancer Wisemapping au démarrage. Pour cela, créez un fichier /etc/init.d/wisemapping contenant cette ligne :

cd /var/www/wisemapping && java -Xmx256m -Dorg.apache.jasper.compiler.disablejsr199=true -jar start.jar

4 - Pailler

À ce stade, si tout s'est bien passé, lorsque vous exécutez le script start.sh, Wisemapping est pleinement fonctionnel. Vous n'avez qu'à vous rendre sur l'URL http://ip_de_votre_serveur:8080/wisemapping pour pouvoir l'utiliser.

Nous allons maintenant configurer Wisemapping pour le rendre accessible depuis un nom de domaine avec Varnish.

Varnish

En tant que root, installez le paquet varnish : apt-get install varnish

Éditez le fichier /etc/varnish/default.vcl pour y mettre ceci (en remplaçant « votre-nom-de-domaine ») :

backend default {
    .host = "127.0.0.1";
    .port = "9042";
}

backend wisemapping {
    .host = "127.0.0.1";
    .port = "8080";
}

sub vcl_recv {
    if (req.restarts == 0) {
        if (req.http.x-forwarded-for) {
            set req.http.X-Forwarded-For =
            req.http.X-Forwarded-For + ", " + client.ip;
        } else {
            set req.http.X-Forwarded-For = client.ip;
        }
    }

    if (! req.http.Host) {
        error 404 "Need a host header";
    }
    set req.http.Host = regsub(req.http.Host, ":\d+$", "");
    if (req.http.host == "votre-nom-de-domaine") {
        set req.backend = wisemapping;
    }
}

sub vcl_pipe {
    #we need to copy the upgrade header
    if (req.http.upgrade) {
        set bereq.http.upgrade = req.http.upgrade;
    }
    #closing the connection is necessary for some applications – I haven’t had any issues with websockets keeping the line below uncommented
    #set bereq.http.Connection = "close";
    return (pipe);
}

sub vcl_error {
   if (obj.status == 750) {
        set obj.http.Location = obj.response;
        set obj.status = 302;
        return(deliver);
    }
}

Dans le fichier /etc/default/varnish, afin que varnish écoute le port 80 et puisse rediriger les requêtes vers Wisemapping, remplacez la ligne DAEMON_OPTS par :

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,1G"

Enfin, relancez varnish : service restart varnish

Wisemapping à la racine

Pour pouvoir accéder à Wisemapping directement depuis la racine du site, il faut remplacer dans le fichier contexts/wisemapping.xml la ligne :

<Set name="contextPath">/wisemapping</Set>

par

<Set name="contextPath">/</Set>

5 - Tailler et désherber

La personnalisation de votre instance de Wisemapping passe par l'édition à la main des fichiers webapps/wisemapping/jsp/*.jsp

Ils contiennent le code html des pages d'accueil, de création de compte et de gestions des cartes ainsi que le contenu des fenêtres modales de l'éditeur de cartes pour partager, exporter ou paramétrer son compte.

Par défaut, il y a bien plus de formats proposés à l'export que ce que nous avons mis pour Framindmap : certains sont des formats fermés dont nous ne souhaitons pas encourager l'utilisation (Microsoft Excel, MindManager), d'autres sont défectueux (OpenDocument, images PNG/JPG, PDF).

Certains éléments de l'interface et les e-mails de notification ne sont pas traduits (ou mal). Pour les corriger, il faut modifier les fichiers messages_fr.properties (l'interface) et mail/*.vm (les mails) qui se trouvent dans l'archive webapps/wisemapping/lib/wise-webapp-3.1-SNAPSHOT.jar.

En ce qui concerne les mails, certains éléments ne peuvent être corrigé qu'en recompilant le logiciel (fichier wise-webapp/src/main/java/com/wisemapping/mail/NotificationService.java dans les sources). Il y avait également un bug sur la version 3.0.3 empêchant l'utilisation de Wisemapping avec Firefox 30. Le bug était corrigé sur la version de développement.

Nous avons donc du recompiler le logiciel pour y apporter ces petites corrections en attendant qu'une nouvelle version officielle sorte.
Voici donc la procédure. Elle semble effrayante mais c'est en réalité assez simple :

  • installer maven apt-get install maven
  • importer les sources dans un dossier de travail git clone https://bitbucket.org/wisemapping/wisemapping-open-source.git
  • corriger les fichiers problématiques
  • compiler mvn package
  • à la fin de cette opération, un fichier wisemapping.war (simple archive .zip) est créé dans /wise-webapp/target/, il contient l'équivalent de ce qui se trouve dans votre dossier /var/www/wisemapping/webapps/wisemapping

Si vous souhaitez éviter d'en passer par là, vous pouvez utiliser notre fichier wise-webapp-3.1-SNAPSHOT.jar (compatible avec la version 3.0.3) qu'il suffit de copier dans le dossier webapps/wisemapping/lib/ en remplacement.

11 Réponses

  1. Hi,

    Great documentation. ! Regarding the issue with Firefox, we are almost ready to release the new version. I will let you know once it’s complete. I will be very glad if you want help us to improve the documentation of WiseMapping!.

    Look forward to hearing from you soon,
    Paulo

  2. Bonjour,,

    Très bonne documentation ! Très pratique et superbe outil.

    Juste un bémol qui peut s’avérer critique c’est la lourdeur de ces techno sur le client quand la carte est importante en nœuds … Y-a-t-il un moyen d’optimiser du côté serveur pour que la cpu du client monte pas à 100% pendant plusieurs secondes à l’ouverture d’une carte et lors de dépliement et repliement de nœuds ?

    Merci encore !

  3. Bon, j’ai rien compris, mais je suppose que c’est fait pour.
    Je continuerai donc à utiliser MapMind (je ne sais pas si c’est bien ou pas) et vous laisse « entre vous ».
    Mais pour des gens qui veulent promouvoir des logiciels libres, vous devriez commencer par retourner à l’école de la pédagogie élémentaire. Après nous avoir fait bien peur sur les dangers des « logiciels américains », vous n’êtes pas capables d’offrir une réponse alternative SIMPLE. Alors, pourquoi effrayer les populations laborieuses ? Hein, pourquoi ?
    Bien à vous et à vous lignes de programmes.
    Nicolas

    • > Après nous avoir fait bien peur sur les dangers des « logiciels américains », vous n’êtes pas capables d’offrir une réponse alternative SIMPLE

      Si, l’alternative simple elle se trouve là : https://framindmap.org/
      Il s’agit d’une instance qui fonctionne et permet de démontrer que les solutions basées sur des logiciels libres sont viables et crédibles.

      Ici, sur Framacloud, il s’agit d’aller plus un peu plus loin dans l’émancipation puisque notre objectif n’est pas de rendre l’utilisateur dépendant de nos services en ligne.
      Si vous n’avez jamais installé votre propre site web ce tutoriel ne sera effectivement pas pour vous.
      En revanche si vous connaissez quelqu’un dans votre entourage qui s’y connait assez et en qui vous pouvez avoir confiance alors cette personne pourra plus facilement installer Wisemapping pour vous grâce à ce tutoriel qu’en se fiant à la documentation officielle qui est en anglais et pas forcément hyper précise.

      Ce que nous voulons à travers ce tutoriel (et l’ensemble de notre projet de dégooglisation) c’est encourager un maximum de personnes à installer ces logiciels – ou demander de les faire installer – chez eux, au sein de leur entreprise, association, établissement scolaire, etc pour participer à la décentralisation du net.

  4. Merci beaucoup pour le tuto !!
    Je viens d’installer wisemapping (j’aime pas les double-lettres dans les mots, je me trompe tout le temps avec wisemmaping ;-)) sur mon serveur en le suivant et en l’adaptant à ma config.
    Quelques petites notes d’install de mon côté:
    – je souhaite restreindre l’interface d’écoute du process et le port mis je n’ai pas encore trouvé, je verrai plus tard;
    – étant en Chine et donc pass d’accès à « Google tools », j’ai désactivé le captcha dans le fichier webapps/wisemapping/WEB-INF/app.properties (si vous avez une autre solution pour éviter les robots, je suis preneur);
    – la fenêtre d’enregistrement ne semble pas s’adapter à la taille de l’écran (écran de notebook pour moi) mais j’ai trouvé un workaround);
    – ma conf apache pour le reverse au cas où (à améliorer certainement):
    Redirect /wisemapping/ /wisemapping
    ProxyPass /wisemapping http://localhost:8080/wisemapping
    ProxyPassReverse /wisemapping http://localhost:8080/wisemapping
    – sous Firefox, l’acccès via le java en direct passe nickel (port :8080) mais par Apache+SSL j’obtiens une erreur comme quoi mon navigateur n’est pas supporté, pas de souci avec Chromium par contre… faut que je débuggue.
    Merci encore pour le tuto (encore un !!) et l’outil; y a plus qu’à s’amuser maintenant.

  5. Je réponds à mon propre commentaire.
    Pour modifer le port et l’interface d’écoute, j’ai updaté le fichier start.sh avec ça:
    java -Xmx256m -Dorg.apache.jasper.compiler.disablejsr199=true -jar start.jar -Djetty.port=8082 -Djetty.host=127.0.0.1
    Si ça peut servir…

  6. Bonjour,
    j’ai suivi le tuto, et j’obtiens une erreur 503.
    Je ne vois pas comment corriger ce problème.
    Auriez vous une solution svp.

    Merci

  7. Christian Franz

    Bonjour,

    j’ai rencontré le même problème (error 503) après j’ai modifier le fichier wise-webapp-4.0.3.jar qui se trouve à wisemapping/webapps/wisemapping/WEB-INF/lib.

    Je vous remercie pour votre tutorial; peut-être vous pouvez m’aider (et les autres qui ont le même problème). Je pense que peut-être il y’a un mechanism qui verifier le fichier où quelque chose comme ca.

    Merci en avance!

    Christian Franz

    • ismael joseph

      J’ai eu l’erreur error 503 aussi. Voici comment j’ai resolu mon probleme. j’avais le openjdk 7 j’ai fait :
      1 – apt-get remove openjdk-7-jdk
      2 -apt-get autoremove
      Ensuite j’ai installer java 8:
      3- add-apt-repository ppa:webupd8team/java
      4-apt-get update
      5-apt-get install oracle-java8-installer

      Après tout était ok.

  8. Christian Franz

    J’ai trouvé le problem: s’etait mois. Je ne savais pas qu’il faut utilizer Java pour empaqueter les fichiers modifier. Comme ca, ca marche:

    jar -xvf wise-webapp-4.0.3.jar -> modifiez les fichiers -> jar cf * wise-webapp-4.0.3.jar

    Merci encore un fois pour votre excelent tutorial!

    Christian

  9. Bonjour,

    J’ai réussi à mettre à jour Wisemapping et à mettre en place un reverse proxy avec celui-ci.

    J’ai modifié donc le site.baseurl avec un fqdn.

    Par contre j’aimerais pouvoir accéder en même temps à mon wisemapping avec un alias local donc en gros avoir 2 site.baseurl… Quelqu’un a déjà fait ça ?

    Merci !

Laissez un commentaire