Tuto : Installation d’IceScrum R6#13.3 sur un serveur Linux

IceScrum est un gestionnaire de projet suivant le cadre de travail Scrum (voir mon tableau explicatif des process Scrum), qui commence à se démarquer un peu du lot.

C’est un projet Open-Source, et son modèle économique est basé sur une version hébergée chez l’éditeur (gratuite pour 1 seul projet avec 1 seul utilisateur, sinon c’est entre 9,90 et 199 € par mois) et une version Pro à télécharger. Qui elle rajoute des features pratiques mais non indispensables : création d’users à la volée, gestion de ratio de disponibilité jour-par-jour pour chaque user…
Mais son prix (2000 € par an !) le destine aux grandes entreprises.

Heureusement pour les start-ups et les particuliers, ils fournissent un setup permettant d’installer la version de base sur son poste ou un serveur. Seulement voilà, ils ont bien compris que c’est pas vraiment dans leur intérêts de faciliter la tâche aux gens qui n’ont pas beaucoup de connaissances en administration système pour l’installer sur leurs petits serveurs dédiés. Et comme l’application est en Java, c’est assez compliqué sans documentation digne de ce nom. Et justement tiens, leur doc est pas claire du tout en plus d’être très  incomplète, et leur support sur les forums tourne au minimum. Comme par hasard 🙂

Pour ne rien arranger, à chaque release majeure, la manière de l’installer semble différer. De même qu’on peut l’installer de plein de façons différentes…. J’ai passé des heures à chercher sur internet des guides d’installation sur des blogs, faite par des gens qui se sont contenté de prendre des morceaux un peu partout sans vraiment comprendre ce qu’ils faisaient.

Et je n’ai pas réussi à faire fonctionner une seule de ces méthodes. J’ai donc tâtonné, fais beaucoup d’essais, et te livre ici mon guide d’installation d’iceScrum realease R6. Qui fonctionne ! (dans mon cas, hein. Mais je vois pas pourquoi ca le ferais pas pour vous, si vous avez un environment système standard)

Je reparlerais – je l’espère – d’IceScrum et quelques un de ces concurrents dans un prochain article. J’envisage aussi de parler de Scrum, Kanban et autres méthodes Agiles si j’en ai le temps !

Prérequis de l’installation

  1. Java 7 déja installé sur le serveur
  2. C’est une application qui utilise les servlets Java, donc installation d’Apache Tomcat 7, et de l’interface Manager
  3. Serveur Linux à jour Unbuntu ou Debian ça marche, pour les autres distribution c’est à tester mais ca devrait le faire. Faudra peut-être adapter les chemins par défaut d’installation java par contre.
  4. pré-installation serveur Apache non requis. Et si tu as déjà un serveur HTTP comme nginx, les deux peuvent cohabiter
  5. pré-installation Mysql ou MariaDB conseillée mais non requis ? Comment faire ? Cherche la partie qui t’intéresse ici
  6. Minium 512Mo de RAM à allouer
  7. Accès à votre serveur en ssh, via un PuTTY ou mRemoteNG par exemple.
  8. Savoir utiliser un éditeur de texte en mode console. Dans mon tuto j’utilise vim, mais vous pouvez utiliser nano ou vi ou ce que vous voulez.

1. Installation et configuration de Tomcat 7 et du Manager Tomcat en ligne

1.1 Apache Tomcat 7 va te permettre de pouvoir exécuter du java en tant que serveur HTTP. Ouvre un terminal vers votre serveur en mode root (ou gérez avec sudo) et tape :

apt-get install tomcat7 tomcat7-admin
groupadd tomcat7
useradd -g tomcat7 tomcat7
chown -R tomcat7 /usr/share/tomcat7 
chmod 777 /usr/share/tomcat7/bin/
usermod -G www-data tomcat7
chown -R tomcat7 /var/lib/tomcat7

Au cas ou le service ai pas démarré tout seul a la fin de l’installation :

service tomcat7 start

NOTE : les 3 commandes pour intéragir avec tomcat : service tomcat7 start/stop/restart

1.2. Teste que ça fonctionne bien en vous rendant avec votre navigateur (pense à changer YOUR_IP par l’adresse IP de ton serveur) :
http://YOUR_IP:8080/

Tu devrais voir ça :

It works !

If you’re seeing this page via a web browser, it means you’ve setup Tomcat successfully. Congratulations! etc etc

Si tu n’as pas ça, et que tu a déja un Apache qui tourne, c’est surement un conflit de port, que tu peux régler à l’étape qui suit.

1.3. Edite ce fichier de config tomcat :

vim /var/lib/tomcat7/conf/server.xml

Et remplace la balise Connector par :

    

C’est aussi la bonne occasion de changer le port tomcat, si tu as un conflit.

1.4. Édite ensuite ce fichier de gestion des utilisateur du Manager tomcat :

vim /var/lib/tomcat7/conf/tomcat-users.xml

Et rajoute ceci dans l’emplacement des rôles :

	
    

Change « coucoutuveuxvoir » par un password plus recherché. Tu peux même différencier les deux.

1.4. Je passe la limite de l’upload via le manager a 100 Mo, tu va comprendre pourquoi plus tard :

vim /usr/share/tomcat7-admin/manager/WEB-INF/web.xml

Change les valeurs suivantes :

	
    1048576001048576000

1.5. Redémarre tomcat pour prendre en compte ces modifications.

service tomcat restart

2. Pré-configuration d’IceScrum

2.1. Il va falloir charger des variable d’environnement Java pour indiquer à Icecrum où est le fichier de config et où écrire les logs de l’application. C’est bizarre mais c’est comme ça. Ce fichier de configuration JAVA global est normalement ici:

vim /etc/default/tomcat7

Cherche la ligne :

JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC"

Et remplace 128 par 512. Et oui, il lui faudra au moins 512 Mo de RAM allouée pour pas trop ramer. Tu peux augmenter même a 768 au 1024 si tu as beaucoup de RAM sur ton serveur.
Rajoute ensuite cette ligne spécifique a icescrum :

JAVA_OPTS="${JAVA_OPTS} -Dicescrum.log.dir=/var/log/icescrum/ -Dicescrum_config_location=/opt/icescrum/config.groovy"

2.2. Création et gestion des droits sur les dossiers
Dans mon guide, le répertoire de travail de l’application est /opt/icescrum.
Mais si vous suivez les recommandations de mon tuto d’install d’un serveur linux, , vous devriez le remplacer par /opt/http/tomcat/icescrum

Le répertoire qui contient mon fichier de config aussi.
Et les logs de l’application sont dans /var/log. Tu peux changer ces dossiers bien sûr, mais c’est très important qu’ils soient accessible en écriture par tomcat:

mkdir /opt/icescrum
chown -R tomcat7 /opt/icescrum
chmod -R 775 /opt/icescrum

mkdir /var/log/icescrum
chmod -R 775 /opt/icescrum
chown -R tomcat7 /var/log/tomcat

2.3. Création du fichier de config icescrum.
Crée le fichier :

vim /opt/icescrum/config.groovy

Met-le en mode insertion et copie-colle tout ça (pense a adapter les paramètres comme l’url etc :

grails.serverURL = "http://MY_IP:8080/icescrum"

icescrum.baseDir = "/opt/icescrum"

icescrum.debug.enable = false
icescrum.securitydebug.enable = false

icescrum.project.import.enable = true
icescrum.project.export.enable = true
icescrum.project.creation.enable = true
icescrum.project.private.enable = true
icescrum.project.private.default = true

icescrum.gravatar.secure = true
icescrum.gravatar.enable = true
icescrum.registration.enable = true
icescrum.login.retrieve.enable = true

icescrum.auto_follow_productowner = true
icescrum.auto_follow_stakeholder = true
icescrum.auto_follow_scrummaster = true
icescrum.alerts.errors.to = "icescrum@MY_SERVER.com"
icescrum.alerts.subject_prefix = "[icescrum]"
icescrum.alerts.enable = true
icescrum.alerts.default.from = "icescrum@MY_SERVER.com"
icescrum.attachments.enable = true


grails.mail.host = "localhost"
grails.mail.port = 25
grails.mail.username = "postmaster"
grails.mail.password = ""
grails.mail.props = ["mail.smtp.auth":"true",
"mail.smtp.socketFactory.port":"25",
"mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",
"mail.smtp.socketFactory.fallback":"false"]

2.4. Gestion d’une base de donnée mysql/mariaDB (optionnel)

C’est dans ce fichier que tu va aussi devoir configurer un accès à ton serveur de base mysql/mariaDb par la suite, si tu préfère qu’icescrum utilise ça plutôt que son format de stockage interne et obscur. Tu peux faire ça dès maintenant, ou en tout dernière étape de ce tuto après avoir vu que tout marche si tu préfères, en rajoutant à la fin de ce même fichier les lignes (adapte le nom de la base, de l’user ou du mot de passe à ce que tu veux) :

dataSource.url="jdbc:mysql://localhost:3306/icescrum?useUnicode=true&characterEncoding=utf8&autoReconnect=true"
dataSource.username="icescrum"
dataSource.password="icescrum_pwd"
dataSource.dbCreate="update"

Il faut par contre que tu crée la base de donnée et l’utilisateur icescrum toi-même dans ce cas :

mysql -u root -p
mysql> create database icescrum character set utf8;
mysql> grant all privileges on icescrum.* to 'icescrum'@'localhost' identified by 'icescrum_pwd';

2.5. Gestion des droits java de l’application web icescrum

Puis ouvre ce fichier de config-là :

vim /etc/tomcat7/policy.d/50local.policy

Et rajoute à la fin :

grant codeBase "file:${catalina.base}/webapps/icescrum/-" {
permission java.security.AllPermission;
};

2.6. Rédémarre tomcat pour prendre en compte ces modifs.

service tomcat restart

3. Installation d’IceScrum avec le Manager tomcat

3.1. Va sur http://www.icescrum.org/merci/ et télécharge l’archive zip à partir de ton PC.

3.2. Décompresse le dans un dossier temporaire. Tu pourra supprimer ces deux fichiers à la fin de l’installation.

3.3 Tu te rappelle mot de passe que tu as redéfini auparavant pour le manager-gui à la place de « coucoutuveuxvoir » ? Bien, maintenant va sur ton manager tomcat en ligne et connecte toi avec « admin » et ce mot de passe :
http://YOUR_IP:8080/manager
Si il veut pas s’afficher, c’est que le manager n’est pas installé ou qu’il y a un problème dans un des fichiers de config édité.

3.4. Cherche la section « WAR file to deploy » et upload le fichier icescrum.war que tu as téléchargé. Ca va prendre du temps… Et à la fin, il devrait te dire si ca à bien marché, ou des messages d’erreurs.

3.bis. Installation alternative d’IceScrum via copie de fichier

Si le manager ne marche pas, ou qu’il n’arrive pas a uploader correctement l’archive, tu peux toujours essayer cette méthode d’installation :

cd /var/lib/tomcat7/webapps/
wget http://www.icescrum.org/downloads/icescrum_R6_13.3_war.zip

NOTE : pour prendre la dernière version, va plutôt sur http://www.icescrum.org/merci/ et copie-colle l’adresse du lien de téléchargement pour faire le wget

Ensuite en ligne de commande, tape :

cd /var/lib/tomcat7/webapps/
rm -rf icescrum/
unzip icescrum_R6_13.3_war.zip
service tomcat restart && tail -f /var/log/tomcat7/catalina.out

Tu devrais ainsi voir ce que disent en temps réél les logs, et identifier les erreurs possibles. Fais un Ctrl+C pour sortir.

L’installation est terminée !

4. Test de l’application

4.1. Va sur :
http://YOUR_IP:8080/icescrum

Le login/password par défaut est admin / adminadmin!

Ca peut mettre du temps à charger, la première fois… Vu que ça créé tous les fichiers dans /opt/icescrum, éventuellement les bases de données… Mais après quelques minutes tu devrais voir quelque chose d’autre qu’une page blanche 🙂

4.2. Regarde sur le coin supérieur gauche de la page, à côté du logo d’icescrum, si il n’y a pas un triangle d’avertissement qui apparait. Si oui, clique dessus pour savoir ce qui ne va pas.

4.3. Créé un nouveau projet, suis l’étape jusqu’au bout pour voir si est est bien sauvegardé. Tu peux passer la langue en français aussi, dans ton profil. Et pense à changer le mot de passe par défaut 😉

Et voilà ! Have fun. J’espère que l’appli va être galère à mettre à jour. Mais en tout cas tu pourra difficilement faire plus propre que cet install, pour mettre toutes les chances de ton côté….

Mais si tu as des erreurs, poste-le en commentaire, j’essaierais de t’aider. Pense aussi à regarder sur le web…

Bonus : Bugs connus

1. Si le triangle d’avertissement te parle d’une URL non définie, en localhost:8080, c’est qu’il n’a pas trouvé le fichier config.groovy. Revérifie les droits d’écriture du tomcat7 sur /opt/icescrum et /opt/icescrum/config.groovy ; vérifie que tu as bien écrit ce chemin dans /etc/default/tomcat7 ; redémarre tomcat7, on sait jamais.

3 réflexions sur « Tuto : Installation d’IceScrum R6#13.3 sur un serveur Linux »

  1. Bonjour Thomas.
    D’abord merci pour ce tuto.
    J’ai suivis à la lettre celui ci mais quand j’éssaie de lancer icescrum dans le manager tomcat.
    Voici les logs de tomcat
    « Apr 07, 2016 4:05:52 PM org.apache.catalina.startup.HostConfig deployWAR
    INFO: Deployment of web application archive /var/lib/tomcat7/webapps/icescrum.war has finished in 38,914 ms
    Apr 07, 2016 4:07:18 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
    INFO: validateJarFile(/var/lib/tomcat7/webapps/icescrum/WEB-INF/lib/geronimo-servlet_3.0_spec-1.0.jar) – jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
    Apr 07, 2016 4:07:39 PM org.apache.catalina.core.StandardContext startInternal
    SEVERE: Error listenerStart
    Apr 07, 2016 4:07:39 PM org.apache.catalina.core.StandardContext startInternal
    SEVERE: Context [/icescrum] startup failed due to previous errors
    Apr 07, 2016 4:11:00 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
    INFO: validateJarFile(/var/lib/tomcat7/webapps/icescrum/WEB-INF/lib/geronimo-servlet_3.0_spec-1.0.jar) – jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
    Apr 07, 2016 4:11:19 PM org.apache.catalina.core.StandardContext startInternal
    SEVERE: Error listenerStart
    Apr 07, 2016 4:11:19 PM org.apache.catalina.core.StandardContext startInternal
    SEVERE: Context [/icescrum] startup failed due to previous errors
    SEVERE: Context [/icescrum] startup failed due to previous errors
     »

    Dans les log de icescrum il me dit que le soucis proviens de tomcat.

    Merci d’avance

Un commentaire ?