Oggi ti mostreremo come configurare JAVA, JBoss AS e un server Apache che funge da proxy inverso utilizzando uno dei nostri server virtuali Debian. Supponiamo che tu abbia un server Apache funzionante.
Allora, cos'è JBoss?
JBoss è un server di applicazioni open source sviluppato da RedHat basato sulla piattaforma J2EE per lo sviluppo e la distribuzione di applicazioni Java aziendali, applicazioni Web, servizi, portali e altro ancora. J2EE consente alle applicazioni di essere standardizzate e modulari, consentendo a JAVA di gestire molti aspetti di programmazione durante lo sviluppo di un'applicazione.
Prima di iniziare con l'installazione, assicurati di avere un sistema Debian completamente aggiornato, quindi esegui:
# apt-get update && apt-get upgrade --show-upgraded -y
Una volta che il tuo sistema Debian è completamente aggiornato, installeremo JAVA. In questa configurazione utilizziamo il pacchetto "sun-java" che risiede nel repository "non libero" di Debian. Per installarlo dobbiamo prima abilitare i sorgenti, quindi procedi come segue:
# echo "deb http://ftp.us.debian.org/debian squeeze main contrib non-free" >> /etc/apt/sources.list
Una volta posizionati i sorgenti, il passo successivo è installare JAVA sul tuo sistema Debian. Per farlo, esegui:
# apt-get update && apt-get install sun-java6-jdk -y
ora dovresti avere JAVA installato sul tuo server. Per verificarlo, eseguire:
# java -version
e dovresti vedere qualcosa del genere:
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, il passaggio successivo consiste nell'installare e configurare JBoss Application Server. Stiamo utilizzando l'ultima versione finale (al momento della stesura di questo articolo) di JBoss che è "ver.7.1.1". Quindi vai su http://www.jboss.org/jbossas/downloads/ e scarica la versione di JBoss che vuoi installare sul tuo Debian Virtual Server.
I passaggi sono i seguenti:
# 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/
Successivamente, dobbiamo configurare JBoss AS in modo che funzioni senza privilegi di "root" perché eseguirlo come "root" è un grosso rischio per la sicurezza. Il modo migliore per eseguire JBoss è utilizzare un utente di sistema dedicato che eseguirà il server JBoss utilizzando i poteri "sudo", quindi:
Crea un gruppo, aggiungi l'utente jboss al gruppo, imposta la password dell'utente jboss e fallo diventare il proprietario dell'AS JBoss
# addgroup jbossgroup # useradd -g jbossgroup jboss # passwd jboss # chown jboss:jbossgroup /opt/jboss-as-7.1.1.Final/ -R
NOTA:se hai già sudo setup va bene, ma se non lo hai devi installarlo. Se non sei sicuro di questo, esegui quanto segue:
# [[ ! $(which sudo) ]] && apt-get install sudo -y
Successivamente, aggiungi l'utente jboss al gruppo sudo:
# gpasswd -a jboss sudo
Ok, con tutto ciò a posto siamo in qualche modo pronti per avviare il server JBoss. L'ultima cosa che dobbiamo fare è la seguente:
Apri il file di configurazione standalone.xml di JBoss utilizzando il tuo editor preferito e apporta le seguenti modifiche:
# 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
Ciò renderà disponibile il frontend pubblico e gestionale di JBoss da qualsiasi luogo (tramite l'autenticazione ovviamente) in modo da poterlo gestire tramite un browser.
Con tutto ciò a posto, il server JBoss è configurato e pronto, ma come dovremmo avviarlo? Sfortunatamente, JBoss non viene distribuito con uno script init per Debian, quindi può essere eseguito come servizio. Per ottenere ciò, dobbiamo creare questo script init, quindi crealo aggiungendo le seguenti righe in ( /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
Salva il file e assegnagli un bit eseguibile tramite:
chmod +x /etc/init.d/jboss
quindi aggiungilo a tutti i runlevel e avvialo. Fallo eseguendo:
# update-rc.d -f jboss defaults # service jboss start
JBoss dovrebbe essere attivo e in ascolto sulla porta 8080 ora. Quindi, accedi al frontend aprendo http://
Dopo aver distribuito e abilitato la tua applicazione, puoi accedervi su http://
Il prossimo passo è configurare Apache come proxy inverso in modo che possa gestire e passare le richieste al tuo JBoss e nascondere il numero di porta nell'URL. Quindi, modifica il file di configurazione di apache (/etc/apache2/apache2.conf) e aggiungi il seguente snippet (host virtuale) in fondo al file:
<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>
salva il file e prima di ricaricare Apache per rendere effettive le modifiche assicurati che il modulo mod_proxy sia abilitato altrimenti non si avvierà.
# a2enmod proxy_http && service apache2 restart
ora è possibile accedere alla tua applicazione JBoss aprendo 'http://tuodominio.tld/'
In aggiunta a questa configurazione, cosa succede se desideri includere alcuni script "PHP" nella tua applicazione JBoss? Diciamo, ad esempio, che vuoi avere "http://tuodominio.tld/service.php", quindi come possiamo dire ad Apache di non passare quelle richieste a JBoss ma invece di servirle da solo? È abbastanza banale raggiungere questo obiettivo, quindi torniamo indietro e modifichiamo il nostro "Host virtuale" in modo che assomigli a quello qui sotto:
<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>
ogni script php all'interno della directory '/var/www/demoWeb' non verrà passato a JBoss e sarà accessibile all'indirizzo http://tuodominio.com/