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