Pour faire un peu de développement et héberger mes applications, j'ai besoin d'installer Java et Tomcat. Une solution serait d'installer les package officiels d'Ubuntu par la commande apt-get, mais je préfère installer ces 2 outils manuellement. C'est un peu plus compliqué mais ça me permet de choisir exactement les packages que je veux, où je veux les installer, et avec quel user.

Compte Linux

Je vais créer un compte linux qui sera responsable de l'exécution de Tomcat. Je me connecte avec ce compte et je crée un répertoire qui contient les fichiers installés ou à installer.

sudo adduser tomcat
sudo -i -u tomcat
mkdir install
cd install

Java

Oracle a décidé que télécharger Java ne devait pas être une chose trop facile. Une commande wget toute simple ne fonctionne pas, car le site web nécessite qu'on accepte d'abord la licence. StackOverflow donne une ou deux solutions. Avec le compte tomcat, j'exécute la commande suivante :

wget --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" "http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-linux-arm-vfp-hflt.tar.gz"
tar -xvzf jdk-7u51-linux-arm-vfp-hflt.tar.gz
ln -s jdk1.7.0_51 ../java

Ainsi, java est installé directement dans /home/tomcat/java

Maven

Maven n'est pas utilisé par Tomcat, mais j'en aurai besoin pour mes développements. Je l'installe au même endroit. Même principe que pour Java (sans la problématique de cookie) :

wget http://mirror.metrocast.net/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz
tar -xvzf apache-maven-3.1.1-bin.tar.gz
ln -s apache-maven-3.1.1 ../maven

Tomcat

Encore une fois :

wget http://apache.mirrors.hoobly.com/tomcat/tomcat-7/v7.0.50/bin/apache-tomcat-7.0.50.tar.gz
tar -xvzf apache-tomcat-7.0.50.tar.gz
ln -s apache-tomcat-7.0.50 ../tomcat

Avant de pouvoir le démarrer, je dois rajouter quelques variables d'environnement :

nano ~/.profile

Rajouter les lignes suivantes à la fin du fichier :

JAVA_HOME=$HOME/java
M2_HOME=$HOME/maven
CATALINA_HOME=$HOME/tomcat
CATALINA_PID=$CATALINA_HOME/logs/catalina.pid
PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH

Démarrage automatique

Un petit script init.d pour faire de tomcat un service linux :

> sudo nano /etc/init.d/tomcat

Voici mon script :

#!/bin/bash
### BEGIN INIT INFO
# Provides: tomcat service
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO

NAME=tomcat
DESC=Tomcat
USERNAME=tomcat
CATALINA_HOME=/home/$USERNAME/tomcat
JAVA_HOME=/home/$USERNAME/java
CATALINA_PID=$CATALINA_HOME/logs/catalina.pid
CATALINA_OPTS=""

case "$1" in
start)
  printf "%-50s" "Starting $NAME..."
  sudo -u $USERNAME CATALINA_HOME=$CATALINA_HOME JAVA_HOME=$JAVA_HOME CATALINA_PID=$CATALINA_PID $CATALINA_HOME/bin/startup.sh $DAEMONOPTS
;;
status)
        printf "%-50s" "Checking $NAME..."
        if [ -f $CATALINA_PID ]; then
            PID=`cat $CATALINA_PID`
            if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
                printf "%s\n" "Process dead but pidfile exists"
            else
                echo "Running"
            fi
        else
            printf "%s\n" "Service not running"
        fi
;;
stop)
  printf "%-50s" "Stopping $NAME"
  sudo -u $USERNAME CATALINA_HOME=$CATALINA_HOME JAVA_HOME=$JAVA_HOME CATALINA_PID=$CATALINA_PID $CATALINA_HOME/bin/shutdown.sh $DAEMONOPTS
;;
restart)
  $0 stop
  $0 start
;;
*)
  echo "Usage: $0 {status|start|stop|restart}"
  exit 1
esac