Heute zeigen wir Ihnen, wie Sie JAVA, JBoss AS und einen Apache-Server einrichten, der als Reverse-Proxy fungiert, indem Sie einen unserer virtuellen Debian-Server verwenden. Wir gehen davon aus, dass Sie über einen funktionierenden Apache-Server verfügen.
Also, was ist JBoss?
JBoss ist ein Open-Source-Anwendungsserver, der von RedHat basierend auf der J2EE-Plattform für die Entwicklung und Bereitstellung von Java-Unternehmensanwendungen, Webanwendungen, Diensten, Portalen und mehr entwickelt wurde. Die J2EE ermöglicht die Standardisierung und Modularisierung von Anwendungen, sodass JAVA viele Programmieraspekte bei der Entwicklung einer Anwendung handhaben kann.
Bevor wir mit der Einrichtung beginnen, vergewissern Sie sich, dass Sie ein vollständig aktuelles Debian-System haben, also führen Sie Folgendes aus:
# apt-get update && apt-get upgrade --show-upgraded -y
Sobald Ihr Debian-System vollständig aktualisiert ist, werden wir JAVA installieren. In diesem Setup verwenden wir das Paket „sun-java“, das sich im „non-free“-Repository von Debian befindet. Um es zu installieren, müssen wir zuerst die Quellen aktivieren, also gehen Sie wie folgt vor:
# echo "deb http://ftp.us.debian.org/debian squeeze main contrib non-free" >> /etc/apt/sources.list
Sobald Sie die Quellen platziert haben, besteht der nächste Schritt darin, JAVA auf Ihrem Debian-System zu installieren. Führen Sie dazu Folgendes aus:
# apt-get update && apt-get install sun-java6-jdk -y
Java sollte jetzt auf Ihrem Server installiert sein. Um dies zu überprüfen, führen Sie bitte Folgendes aus:
# java -version
und Sie sollten so etwas sehen:
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, der nächste Schritt ist die Installation und Konfiguration des JBoss Application Servers. Wir verwenden die neueste endgültige (zum Zeitpunkt des Schreibens dieses Artikels) Version von JBoss, die „ver.7.1.1“ ist. Gehen Sie also zu http://www.jboss.org/jbossas/downloads/ und laden Sie die JBoss-Version herunter, die Sie auf Ihrem virtuellen Debian-Server installieren möchten.
Die Schritte sind wie folgt:
# 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/
Als Nächstes müssen wir den JBoss AS so konfigurieren, dass er ohne „Root“-Rechte läuft, da die Ausführung als „Root“ ein großes Sicherheitsrisiko darstellt. Der beste Weg, JBoss auszuführen, ist die Verwendung eines dedizierten Systembenutzers, der den JBoss-Server mit den „sudo“-Berechtigungen ausführt, also:
Erstellen Sie eine Gruppe, fügen Sie den jboss-Benutzer zur Gruppe hinzu, legen Sie das Passwort des jboss-Benutzers fest und machen Sie ihn zum Besitzer des JBoss AS
# addgroup jbossgroup # useradd -g jbossgroup jboss # passwd jboss # chown jboss:jbossgroup /opt/jboss-as-7.1.1.Final/ -R
HINWEIS:Wenn Sie bereits sudo setup haben, ist es in Ordnung, aber wenn Sie es nicht haben, müssen Sie es installieren. Wenn Sie sich nicht sicher sind, führen Sie Folgendes aus:
# [[ ! $(which sudo) ]] && apt-get install sudo -y
Fügen Sie als Nächstes den jboss-Benutzer zur sudo-Gruppe hinzu:
# gpasswd -a jboss sudo
Ok, mit all dem sind wir einigermaßen bereit, den JBoss-Server zu starten. Das Letzte, was wir tun müssen, ist Folgendes:
Öffnen Sie die JBoss-Konfigurationsdatei standalone.xml mit Ihrem bevorzugten Editor und nehmen Sie die folgenden Änderungen vor:
# 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
Dadurch wird das öffentliche und Verwaltungs-Frontend von JBoss von überall aus verfügbar (natürlich mit Authentifizierung), sodass Sie es über einen Browser verwalten können.
Mit all dem ist der JBoss-Server eingerichtet und bereit, aber wie sollen wir ihn starten? Leider wird JBoss nicht mit einem Init-Skript für Debian ausgeliefert, sodass es als Dienst ausgeführt werden kann. Um dies zu erreichen, müssen wir dieses Init-Skript erstellen, also erstellen Sie es, indem Sie die folgenden Zeilen in ( /etc/init.d/jboss ) hinzufügen :
#!/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
Speichern Sie die Datei und weisen Sie ihr ein ausführbares Bit zu, indem Sie:
chmod +x /etc/init.d/jboss
fügen Sie es dann allen Runlevels hinzu und starten Sie es. Tun Sie dies, indem Sie Folgendes ausführen:
# update-rc.d -f jboss defaults # service jboss start
JBoss sollte jetzt aktiv sein und Port 8080 überwachen. Greifen Sie also auf das Frontend zu, indem Sie http://
Nachdem Sie Ihre Anwendung bereitgestellt und aktiviert haben, können Sie unter http://
Der nächste Schritt besteht darin, Apache als Reverse-Proxy zu konfigurieren, damit er die Anforderungen verarbeiten und an Ihren JBoss weiterleiten und die Portnummer in der URL verbergen kann. Bearbeiten Sie also die Konfigurationsdatei von Apache (/etc/apache2/apache2.conf) und fügen Sie das folgende Snippet hinzu (virtueller Host) am Ende der Datei:
<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>
Speichern Sie die Datei und bevor Sie Apache neu laden, damit die Änderungen wirksam werden, vergewissern Sie sich, dass das mod_proxy-Modul aktiviert ist, da es sonst nicht gestartet werden kann.
# a2enmod proxy_http && service apache2 restart
Sie können jetzt auf Ihre JBoss-Anwendung zugreifen, indem Sie „http://yourdomain.tld/“ öffnen
Als Ergänzung zu diesem Setup, was ist, wenn Sie einige „PHP“-Skripte in Ihre JBoss-Anwendung einbinden möchten? Nehmen wir zum Beispiel an, Sie möchten „http://yourdomain.tld/service.php“ haben. Wie können wir also Apache anweisen, diese Anfragen nicht an JBoss weiterzuleiten, sondern sie stattdessen selbst zu bedienen? Es ist ziemlich trivial, dies zu erreichen, also gehen wir zurück und bearbeiten unseren „virtuellen Host“, sodass er wie folgt aussieht:
<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>
Jedes PHP-Skript im Verzeichnis „/var/www/demoWeb“ wird nicht an JBoss weitergegeben und ist unter http://yourdomain.com/