Aujourd'hui, nous allons vous montrer comment configurer JAVA, JBoss AS et un serveur Apache agissant comme un proxy inverse en utilisant l'un de nos serveurs virtuels Debian. Nous supposons que vous disposez d'un serveur Apache opérationnel.
Alors, qu'est-ce que JBoss ?
JBoss est un serveur d'applications open source développé par RedHat basé sur la plate-forme J2EE pour le développement et le déploiement d'applications Java d'entreprise, d'applications Web, de services, de portails et plus encore. Le J2EE permet aux applications d'être standardisées et modulaires permettant à JAVA de gérer de nombreux aspects de programmation lors du développement d'une application.
Avant de commencer l'installation, assurez-vous d'avoir un système Debian entièrement à jour, alors exécutez :
# apt-get update && apt-get upgrade --show-upgraded -y
Une fois votre système Debian entièrement mis à jour, nous allons installer JAVA. Dans cette configuration, nous utilisons le paquet « sun-java » qui réside dans le référentiel « non-free » de Debian. Pour l'installer, nous devons d'abord activer les sources, alors procédez comme suit :
# echo "deb http://ftp.us.debian.org/debian squeeze main contrib non-free" >> /etc/apt/sources.list
Une fois que vous avez placé les sources, l'étape suivante consiste à installer JAVA sur votre système Debian. Pour ce faire, exécutez :
# apt-get update && apt-get install sun-java6-jdk -y
vous devriez maintenant avoir JAVA installé sur votre serveur. Pour vérifier cela, veuillez exécuter :
# java -version
et vous devriez voir quelque chose comme ceci :
java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03) Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)
Ok, l'étape suivante consiste à installer et configurer le serveur d'applications JBoss. Nous utilisons la dernière version finale (au moment de la rédaction de cet article) de JBoss, qui est la "ver.7.1.1". Allez donc sur http://www.jboss.org/jbossas/downloads/ et téléchargez la version de JBoss que vous souhaitez installer sur votre serveur virtuel Debian.
Les étapes sont les suivantes :
# cd /opt # wget -P /var/tmp http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.tar.gz # tar -zxf /var/tmp/jboss-as-7.1.1.Final.tar.gz -C /opt/
Ensuite, nous devons configurer JBoss AS pour qu'il s'exécute sans privilèges "root", car l'exécuter en tant que "root" présente un risque de sécurité important. La meilleure façon d'exécuter JBoss est d'utiliser un utilisateur système dédié qui exécutera le serveur JBoss en utilisant les pouvoirs "sudo", donc :
Créez un groupe, ajoutez l'utilisateur jboss au groupe, définissez le mot de passe de l'utilisateur jboss et faites-en le propriétaire de JBoss AS
# addgroup jbossgroup # useradd -g jbossgroup jboss # passwd jboss # chown jboss:jbossgroup /opt/jboss-as-7.1.1.Final/ -R
REMARQUE :si vous avez déjà configuré sudo, tout va bien, mais si ce n'est pas le cas, vous devez l'installer. Si vous n'êtes pas sûr de cela, exécutez ce qui suit :
# [[ ! $(which sudo) ]] && apt-get install sudo -y
Ensuite, ajoutez l'utilisateur jboss au groupe sudo :
# gpasswd -a jboss sudo
Ok, avec tout cela en place, nous sommes en quelque sorte prêts à démarrer le serveur JBoss. La dernière chose que nous devons faire est la suivante :
Ouvrez le fichier de configuration standalone.xml de JBoss à l'aide de votre éditeur préféré et apportez les modifications suivantes :
# vim /opt/jboss-as-7.1.1.Final/standalone/configuration/standalone.xml <interface name="management"> <!--<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>--> <any-ipv4-address/> </interface> <interface name="public"> <!--<inet-address value="${jboss.bind.address:127.0.0.1}"/>--> <any-ipv4-address/> </interface
Cela rendra l'interface publique et de gestion de JBoss disponible de n'importe où (en utilisant l'authentification bien sûr) afin que vous puissiez le gérer via un navigateur.
Avec tout cela en place, le serveur JBoss est configuré et prêt, mais comment sommes-nous censés le démarrer ? Malheureusement, JBoss n'est pas livré avec un script d'initialisation pour Debian afin qu'il puisse être exécuté en tant que service. Pour y parvenir, nous devons créer ce script d'initialisation donc créez-le en ajoutant les lignes suivantes dans ( /etc/init.d/jboss ) :
#!/bin/sh ### BEGIN INIT INFO # Provides: jboss # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/Stop/Restart JBoss AS v7.0.0 ### END INIT INFO set -e ### declare the directory where is jboss/java installed JAVA_HOME=/usr/lib/jvm/java-6-sun JBOSS_HOME=/opt/jboss-as-7.1.1.Final export PATH=${JAVA_HOME}/bin:${JBOSS_HOME}/bin:${PATH} case $1 in start ) echo -e "\aStarting JBoss ..." start-stop-daemon --start --quiet --background --chuid jboss --exec ${JBOSS_HOME}/bin/standalone.sh ;; stop ) echo -e "\aStopping JBoss ..." start-stop-daemon --start --quiet --background --chuid jboss --exec ${JBOSS_HOME}/bin/jboss-cli.sh -- --connect command=:shutdown ;; restart ) echo -e "\aRestarting the JBoss server ..." start-stop-daemon --start --quiet --background --chuid jboss --exec ${JBOSS_HOME}/bin/jboss-cli.sh -- --connect command=:shutdown && \ start-stop-daemon --start --quiet --background --chuid jboss --exec ${JBOSS_HOME}/bin/standalone.sh ;; * ) echo -e "\aUsage: /etc/init.d/jboss {start|stop|restart}" exit 1 ;; esac exit 0
Enregistrez le fichier et attribuez-lui un bit exécutable en :
chmod +x /etc/init.d/jboss
puis ajoutez-le à tous les niveaux d'exécution et lancez-le. Pour ce faire, exécutez :
# update-rc.d -f jboss defaults # service jboss start
JBoss devrait être opérationnel et écouter sur le port 8080 maintenant. Alors, accédez au frontend en ouvrant http://
Après avoir déployé et activé votre application, vous pouvez y accéder sur http://
L'étape suivante consiste à configurer Apache en tant que proxy inverse afin qu'il puisse gérer et transmettre les demandes à votre JBoss et masquer le numéro de port dans l'URL. Alors, éditez le fichier de configuration d'Apache (/etc/apache2/apache2.conf) et ajoutez l'extrait suivant (hôte virtuel) en bas du fichier :
<VirtualHost *:80> ServerName www.yourdomain.tld ServerAlias yourdomain.tld ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://yourdomain.tld:8080/helloworld/ ProxyPassReverse / http://yourdomain.tld:8080/helloworld/ <Location /> Order allow,deny Allow from all </Location> </VirtualHost>
enregistrez le fichier et avant de recharger apache pour que les modifications prennent effet, assurez-vous que le module mod_proxy est activé, sinon il ne démarrera pas.
# a2enmod proxy_http && service apache2 restart
votre application JBoss est désormais accessible en ouvrant "http://votredomaine.tld/"
En plus de cette configuration, que faire si vous souhaitez inclure des scripts "PHP" dans votre application JBoss ? Supposons, par exemple, que vous souhaitiez avoir "http://votredomaine.tld/service.php", alors comment pouvons-nous dire à Apache de ne pas transmettre ces requêtes à JBoss, mais plutôt de les servir par lui-même ? C'est assez trivial pour y parvenir, alors revenons en arrière et modifions notre "hôte virtuel" pour qu'il ressemble à celui ci-dessous :
<VirtualHost *:80> ServerName www.yourdomain.tld ServerAlias yourdomain.tld DocumentRoot /var/www/demoWeb ProxyPassMatch ^/(.*)+\.php ! ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://yourdomain.tld:8080/helloworld/ ProxyPassReverse / http://yourdomain.tld:8080/helloworld/ <Location /> Order allow,deny Allow from all </Location> </VirtualHost>
chaque script php à l'intérieur du répertoire "/var/www/demoWeb" ne sera pas transmis à JBoss et sera accessible à l'adresse http://votredomaine.com/