• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 23/06/2022

Installez Tomcat et Jenkins

Votre serveur LAMP va vous permettre de bénéficier des nombreuses applications PHP existantes. Cependant, toutes les applications ne sont pas développées en PHP et pour pouvoir installer certains logiciels, vous aurez peut-être besoin d’installer d’autres environnements.

Par exemple, le logiciel Jenkins est de plus en plus populaire dans le monde du développement logiciel. Il permet d’automatiser les tests, la compilation et le déploiement des logiciels. Ce programme est écrit dans un autre langage très populaire : Java.

Je vous propose donc, dans la suite de ce chapitre, d’installer Jenkins et de découvrir ainsi l’univers des applications Java.

Pour cela, vous aurez besoin d’avoir quelques notions de vocabulaire propres à cet environnement.

Découvrez l’univers des applications web Java : Servlets, JSP, etc.

Dans l’univers Java, les applications destinées à générer dynamiquement du code HTML se présentent généralement sous la forme de servlets. Un servlet est donc simplement une application web java qui respecte l’API Java Servlet. Jenkins est fourni sous forme de servlet. Concrètement, il se présente sous la forme d’un fichier binaire d’extension .war.

Pour créer un servlet, un développeur peut :

  • soit écrire du code “pur java” et le compiler ;

  • soit écrire une JSP (JavaServer Page).

Une JSP est en fait une page HTML à laquelle ont été ajoutés des appels à du code Java. La JSP sera alors compilée par un compilateur JSP pour la transformer en servlet.

Ensuite, pour pouvoir exécuter vos servlets sur votre serveur et leur transmettre les requêtes HTTP, vous aurez besoin d’un conteneur de servlets. Dans ce chapitre, vous utiliserez Tomcat qui est un autre projet de la fondation Apache.

Tomcat est constitué de plusieurs composants :

  • Catalina qui est le conteneur de servlets en lui-même, et qui est chargé de leur exécution ;

  • Coyote qui est un connecteur HTTP, donc un mini-serveur web qui va transmettre les requêtes HTTP à Catalina ;

  • Jasper qui est le compilateur JSP de Tomcat.

Vous comprenez maintenant que pour pouvoir utiliser l’application Jenkins, la première étape va être d’installer un serveur Tomcat.

Installez le serveur Apache Tomcat

Sous Ubuntu, vous pouvez simplement installer Tomcat par la commande :

$ sudo apt install tomcat9

Installez ensuite toutes les polices utilisées par Java et recommandées pour l’installation de Tomcat, sans quoi certaines applications ne pourront pas fonctionner.

$ sudo apt install  fonts-dejavu-extra fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei fonts-indic

Par défaut, Tomcat écoute sur le port TCP 8080. Vous pouvez tester la bonne installation de Tomcat en vous connectant depuis le navigateur de votre client sur ce port :

Capture d'écran du navigateur du client montrant la page d'accueil par défaut de Tomcat lors de la connexion à l'adresse http://www.example.com:8080
Page d'accueil par défaut de Tomcat

Tomcat dispose de deux interfaces web d’administration :

  • Manager App qui vous aidera à gérer vos applications et vous fournira de précieuses statistiques sur l’utilisation de votre serveur.

  • Host Manager App qui vous permettra de gérer vos virtual hosts.

Sous Ubuntu, vous pouvez les installer par la commande :

$ sudo apt install tomcat9-admin

Pour les utiliser, vous devrez ensuite ajouter un utilisateur autorisé dans votre configuration Tomcat. Commencez par éteindre votre serveur :

$ sudo systemctl stop tomcat9

Allez dans le répertoire de configuration de Tomcat  /etc/tomcat9  . Les fichiers de configuration sont tous au format XML. Éditez le fichier   tomcat-users.xml  en ajoutant la ligne suivante entre les balises  <tomcat-users />  :

<tomcat-users …>
    <user username=”admin” password=”password” roles=”manager-gui,admin-gui” />
</tomcat-users>

Cette ligne ajoute un utilisateur “admin” avec les rôles “manager-gui” et “admin-gui”.

Il serait également plus sûr de restreindre l’accès à l’IP de votre client. Pour cela, allez dans le répertoire de configuration des applications Catalina  /etc/tomcat9/Catalina  . Vous y trouverez un répertoire localhost correspondant à votre seul “virtual host” actuel. Dans ce répertoire, vous avez un fichier XML pour la configuration de chaque application. Dans le fichier  manager.xml   , vous trouvez la balise  <Context />  suivante :

<Context path=”/manager”
    docBase=”/usr/share/tomcat9-admin/manager”
    antiResourceLocking=”false” privileged=”true” />

L’attribut  path  indique l’URL d’accès à l’application, et l’attribut  docBase  indique le répertoire où se trouvent les fichiers de l’application. Ajoutez une balise  <Valve />  à cette balise  <Context />  de cette façon :

<Context path=”/manager”
   docBase=”/usr/share/tomcat9-admin/manager”
   antiResourceLocking=”false” privileged=”true” >
   <Valve className=”org.apache.catalina.valves.RemoteAddrValve”
       allow=”192.168.29.2” />
</Context>

Cette configuration permet de restreindre l’accès à l’application Manager à l’IP 192.168.29.2 de votre client. Vous pouvez éditer de la même façon le fichier  host-manager.xml  puis redémarrer le serveur Tomcat :

$ sudo systemctl start tomcat9

Depuis votre client, vous pouvez alors vous connecter à  http://www.example.com:8080/manager/html  et  http://www.example.com:8080/host-manager/html  en utilisant les login et mot de passe que vous avez définis dans le fichier  tomcat-users.xml  .

Capture d'écran du navigateur d'un client connecté à l'application Manager de Tomcat
L'application Manager de Tomcat

Voilà, vous êtes maintenant prêt à installer Jenkins.

Installez Jenkins comme servlet Tomcat

Sur la page de téléchargement de Jenkins, téléchargez la version Long-Term Support sous forme d’un “Generic Java Package (.war)” :

$ cd /tmp
$ wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

Les fichiers de Tomcat sont dans  /var/lib/tomcat8  . Pour installer Jenkins, il vous suffit de déposer votre fichier  .war  dans le répertoire  /var/lib/tomcat8/webapps  qui contient les applications :

$ sudo mv /tmp/jenkins.war /var/lib/tomcat9/webapps

Votre fichier  .war  est automatiquement déployé, et un répertoire Jenkins est créé.

Avant de pouvoir utiliser Jenkins, il vous reste juste à configurer la variable  JENKINS_HOME  qui indique le chemin dans lequel Jenkins va stocker configurations, logs et builds. Par défaut, ces fichiers seront stockés dans  /root/.jenkins/   , mais vous allez plutôt les mettre dans  /var/lib/jenkins/  . Commencez par créer ce répertoire et donnez les droits à l’utilisateur  tomcat9  qui gère Tomcat :

$ sudo mkdir /var/lib/jenkins
$ sudo chown tomcat9:tomcat9

Puis éditez le fichier  /etc/tomcat9/context.xml  et ajoutez la ligne suivante entre les balises  <Context />  :

<Environment name=”JENKINS_HOME” value=”/var/lib/jenkins” type=”java.lang.String” />

Redémarrez Tomcat et connectez-vous à l’adresse http://www.example.com:8080/jenkins depuis votre client :

$ sudo systemctl restart tomcat9
Capture d'écran du navigateur d'un client montrant l'interface d'installation de Jenkins
Interface d'installation de Jenkins : vérification de la clé secrète

Suivrez les instructions à l’écran et recopiez le mot de passe que vous trouverez dans  /var/lib/jenkins/secrets/InitialAdminPassword  .

Capture d'écran du navigateur d'un client connecté à l'interface de configuration de Jenkins (phase d'installation des plugins)
Interface d'installation de Jenkins : installation des plugins

Suivez ensuite le protocole d’installation : installez les plugins par défaut, créez un compte administrateur et voilà, vous avez installé Jenkins !

 Actuellement, vous utilisez le serveur web Coyote, intégré à Tomcat, sur le port 8080 pour vous connecter à Jenkins. Ce serveur web n’est pas fait pour être utilisé pour servir directement les connexions des clients. Effectivement, il est moins performant pour servir des fichiers statiques, et ne supporte pas nativement le HTTPS. Il est recommandé d’utiliser un serveur web plus robuste tel qu’Apache ou Nginx comme proxy pour renvoyer les requêtes vers Tomcat. Le serveur web gérera la connexion HTTPS, les restrictions d’accès et les pages statiques. Seules les requêtes vers l’application Java seront renvoyées vers Tomcat.

Il existe alors deux moyens de faire communiquer votre serveur web et votre serveur Tomcat :

  • par le protocole HTTP, le serveur web se contente alors de faire une redirection HTTP vers le serveur Tomcat ;

  • par le plugin mod_jk (uniquement pour Apache) qui utilise un protocole spécial pour faire communiquer Apache et Tomcat.

En résumé

  • Un servlet est une application web java qui respecte l’API Java Servlet.

  • Un servlet peut être écrit en pur code Java ou être généré à partir d’une page JSP.

  • Un servlet est exécuté par un conteneur de servlets.

  • Tomcat est le conteneur de servlets de la fondation Apache.

  • Jenkins est une application Java fournie sous forme de servlet.

Dans le chapitre suivant, vous verrez comment configurer Nginx en tant que proxy HTTP pour accéder à Tomcat.

Exemple de certificat de réussite
Exemple de certificat de réussite