INDICE:
1) Scopo
2) Che servizio hosting scegliere
3) Come configurare la macchina acquistata
4) Risultato
1) Scopo
Lo scopo di questo post è quello di capire come pubblicare i vostri servizi sviluppati in java.
Attualmente se state testando la vostra app, i vostri servizi li chiamerete facendo per esempio :
vostroip:8080/nomeServlet?parametri.. l'obbiettivo è quello di fare
www.vostrodominio.com/nomeServlet?parametri..
2) Che servizio hosting scegliere
In giro ci sono tante società che offrono server dedicati e non, la maggior parte sono però in php. Aruba è il più utilizzato di tutti, e con il servizio cloud da poco in circolazione, soddisfa anche gli sviluppatori java.
E' quindi consigliato scegliere www.cloud.it, sia per la stabilità e serietà di assistenza che per la prova gratuita pari a 10 euro di consumi. Cosa molto importante poichè si paga a consumo, come si potrà vedere in fase di preventivo.
Ottenere la prova di 10 euro:
click su prodotti & soluzione - cloud e computing - prova gratuita "richiedi subito"
Acquistare il server:
Il server si può configurare a proprio piacimento. Si può scegliere inanzitutto il sistema operativo, tra linux e windows. Io consiglio di scegliere linux, poichè a macchina spenta si potrà spendere meno rispetto windows. La configurazione da me scelta è Centos 6 (64 bit) + Tomcat 7 (+ di conseguenza Java 7). Inizialmente consiglio di prendere una configurazione base, senza aggiunta di RAM o CPU, tanto in futuro potremo cambiare le caratteristiche hardware a nostro piacimento.
Il preventivo è il seguente:
In azzurro vengono indicati i costi calcolati a macchina accesa. A macchina spenta si può notare un consumo pari a 0,002 cent. Per configurare la macchina basta andare un
click su prodotti & soluzione -> cloud e computing -> Configuratore
Proseguendo con l'acquisto, verrà assegnato un ip pubblico al vostro server.
3) Come configurare la macchina acquistata
Una volta ottenuto l'ip pubblico è possibile quindi accedere al server ed effettuare la corretta configurazione per deployare il nostro progetto java. Per utenti linux o osx è necessario solo aprire il terminale ed accedere cosi al server:
ssh ippubblico -l root per utenti windows bisogna armarsi di un client come putty; come spiegato qui: http://kb.cloud.it/computing/accesso-ai-cloud-server/connettersi-al-cloud-con-ssh.aspx
Una volta effettuato l'accesso, immettendo il comando java -version, capiamo che versione java ci è stata installata. Andando su un qualunque broswer, facendo
ippubblico:8080 entriamo nel manager del nostro tomcat (preinstallato in momento di configurazione del server). Cliccando sul bottone App manager ci viene chiesta la password e username che troviamo settata nel file
server.xml situato sotto la cartella di installazione :
/usr/share/tomcat7/conf.
Effettuato l'accesso al manager di tomcat, possiamo fare il deploy, selezionando il nostro war esportato da eclipse. Se tutto è andato correttamente, la nostra applicazione sarà deployata sotto l'indirizzo ippubblico:8080/nomedelwar
Il prossimo passaggio è quello di ottenere il dominio, poichè non è corretto, sicuro e carino accedere al proprio sito tramite ip.
Aruba cloud offre la possibilità di acquistare il dominio (attenzione! solo dopo aver fatto un accredito, non sono sufficienti i soldi "regalati" da aruba). Le istruzioni per l'acquisto sono a http://kb.cloud.it/domain-center/servizio-domini.aspx . Cosa molto importante per il corretto funzionamento del dominio è impostare il nostro dns con i parametri di A che corrispondono al nostro ip pubblico, ma anche questo fattore è spiegato molto bene dalla documentazione Aruba. Dopo poche ore, temmpo dovuto alla propagazione del dominio dai server aruba, sarà disponibile il nostro dominio.
Una volta disponibile il nostro dominio, ci accorgeremo che miodominio senza i :8080 non restituisce alcun risultato. Questo è dovuto al fatto che per accedere al nostro progetto dobbiamo accedere direttamente al web conteiner (tomcat). Questo meccanismo non è per nulla sicuro e consigliato, oltre che brutto (vedere propriodominio:8080 non è il massimo). Per risolvere questa incombenza è necessario installare apache 2, un web server che intercetterà le chiamate sulla porta 80, standard http. Il meccanisco da creare sta nell'anteporre apache a tomcat, e girare in modo nascosto,trasparente e quindi sicuro, le chiamate dal web server (apache) al web conteiner (tomcat). Installiamo dunque apache, inserire il seguente comando yum install httpd . Prima di startare il server, assicuriamoci che il firewall sia abilitato per chiamate http (porta 80). Quindi dobbiamo andare in /etc/sysconfig/iptables e verificare che ci sia questa riga:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
A questo punto è corretto anche il firewall.
Ora possiamo modificare la configurazione di httpd.conf. A me è risultato molto utile consultare i seguenti siti:
http://stackoverflow.com/questions/8541182/apache-redirect-to-another-port e
http://www.mokabyte.it/2004/
02/tomcat-connectors-1.htm . Il file httpd.conf dovrà avere settato i seguenti parametri: ServerName loalhost e si dovrà creare un virtual host così composto:
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName www.mydomain.com
ServerAlias mydomain.com
ProxyPass / http://localhost:8080/example/
ProxyPassReverse / http://localhost:8080/example/
</VirtualHost>
A questo punto non ci resta che mettere nel connector presente sul server.xml di tomcat la dicitura proxy=80.
Se ora facciamo:
service iptables restart ,
service httpd start e service tomcat restart
nel broswer eseguiamo miodominio.com e otterremo la pagina di welcome file settato sul web.xml della nostra applicazione deployata.
4) Risultato
Spero di avervi instradato correttamente, per qualsiasi ulteriore informazione rimango a disposizione!