Featured Posts

:: syscallme :: Rss

Installare Glassfish su Ubuntu Server 8.10

Posted on : 07-07-2009 | By : daniele | In : Java, Linux, Simple

Tags: , ,

3

Tanto peregrinare e torno qua, su queste pagine, dopo 7 mesi che sembrano anni per le cose che cambiano e sono cambiate. Oggi parliamo di come installare Glassfish su Ubuntu.

Glassfish è l’Application Server OpenSource di Sun (da poco acquisita Oracle…con tutto quello che si potrebbe dire al riguardo e che non dirò), un prodotto che esiste ormai da più di due anni e ha raggiunto un discreto grado di maturazione, pur mancando ancora di quella “integrazione”, di quell’essere “suite” che ormai (sotto il controllo-spinta di RedHat) JBoss riesce maggiormente ad assicurare. Non è certamente questa la sede per avere maggiori indicazioni tecniche al riguardo, per questo potete chiedere a Google.

Noi cerchiamo solo di capire come effettuare una installazione del prodotto su un sistema operativo Ubuntu (per il test è stata utilizzata la versione server 8.10) pulita e con un sistema di start/stop automatico al boot.

Java

Prima di tutto sarà necessario installare la JDK Sun sulla nostra macchina. Per farlo, su un sistema debian-based come Ubuntu, è possibile aggiungere o semplicemente abilitare (solitamente già sono presenti, vanno solo decommentate) queste sorgenti al file sources.list che gestisce l’apt.

deb http://us.archive.ubuntu.com/ubuntu/ intrepid universe multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ intrepid universe multiverse

La nostra scelta cade sul pacchetto sun-java6-jdk contenente la versione 1.6.x del prodotto. A secondo del livello di upgrade di Intrepid, cambierà la minor release della JDK. Al momento in cui scrivo, l’ultima disponibile è la 1.6.0_10.

Tornando a noi: una volta abilitati i repositories, con un colpetto di apt (magie di debian), scarichiamo, installiamo e abilitiamo la JDK. Ovviamente da utente root.

# apt-get install sun-java6-jdk

Accettiamo tutte le dipendenze e lasciamo fare lo sporco lavoro al nostro sistema operativo. Alla fine basterà dare un colpetto di java -version da command line per avere qualcosa tipo:

java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode, sharing)

Frasi che ci informano che tutto è andato a buon fine.

GlassFish

Ok, ora concentriamoci sull’installazione dell’AS vero e proprio. Scarichiamone il jar dell’ultima versione stable dal sito ufficiale. Al momento è la 2.1 b60e. Diciamo che un wget dovrebbe fare sufficientemente al caso nostro:

# wget http://java.net/download/javaee5/v2.1_branch/promoted/Linux/glassfish-installer-v2.1-b60e-linux.jar

e ora scompattiamola in questo modo

# java -jar -mx256M glassfish-installer-v2.1-b60e-linux.jar

Una volta accettata la licenza e scompattati i files, nella directory dove stiamo lavorando avremo una dir chiamata glassfish contenente tutti i files che ci occorrono per continuare.

E’ importante, a questo punto, individuare una directory dove far lavorare glassfish. Io tendenzialmente sono uso non utilizzare /opt per installare software di terze parti, ma preferisco sempre ragionare utilizzando l’associazione mentale “1 software >> 1 utente/gruppo >> 1 home directory”.
Volendo utilizzare questa strada procediamo con la creazione del gruppo e dell’utenza, copiamo la dir di glassfish all’interno della home directory del nuovo utente e cominciamo a lavorare direttamente da lì, dimenticandoci (il più possibile) l’utenza di root.

# groupadd glassfish
# useradd -g glassfish -d /home/glassfish -m -s /bin/bash glassfish
# mv glassfish /home/glassfish
# chown -R glassfish:glassfish /home/glassfish/glassfish
# su - glassfish

Credo sia praticamente inutile (e quindi utilissimo…) che io aggiunga che questa fase può essere tranquillamente saltata, tralasciando quella che è solo una mia abitudine. Ognuno ha i suoi standard. Ciò che, però è più importante, è evitare che l’application server “salga” da utente root. Ecco questo io lo eviterei come la peste.

A questo punto (con l’ultimo comando dato nel precedente blocco di codice) siamo utente “glassfish” e come tale operiamo all’interno della nostra home directory come preferiamo. Sfruttiamo ant contenuto in bundle a glassfish per lanciare il setup, ma prima di farlo ricordiamoci di dare all’eseguibile di ant i permessi di eseguibilità di cui è sprovvisto in default.

$ cd glassfish
$ chmod u+x /home/glassfish/glassfish/lib/ant/bin/ant
$ /home/glassfish/glassfish/lib/ant/bin/ant -f setup.xml

Il build durerà qualche secondo, e alla fine si completerà con successo (se così non fosse ricontrollate i passi precedenti perchè c’è qualcosa che non va…).

Ora facciamo una finezza con un po’ di forza bruta: per permetterci di aggiornare l’AS senza toccare ciò che deployeremo all’interno del default domain di glassfish, mi esternalizzo la directory relativa e con un symlink la lego comunque all’AS.

$ mv /home/glassfish/glassfish/domains/doman1 /home/glassfish
$ ln -s /home/glassfish/domain1 /home/glassfish/glassfish/domains/doman1

In questo modo ogni qualvolta voglio procedere ad un upgrade, non vado a toccare il contenuto del domain1 e con un nuovo symlink post-upgrade non perdo l’applicazione.

Ok ora possiamo startare l’AS:

$ /home/glassfish/glassfish/bin/asadmin start-domain

Al termine dell’esecuzione aprite il browser e digitate http://indirizzo_server:8080. Vedrete la pagina di default di glassfish.

GlassFish on 8080 port

Il prossimo passo è modificare la password di amministrazione per accedere al pannello di controllo il porta 4848; ricordiamoci che la password deve avere perlomeno 8 caratteri di lunghezza. Anche in questa occasione usiamo il potentissimo binario asadmin.

$ /home/glassfish/glassfish/asadmin change-admin-password --user admin
Please enter the old admin password> adminadmin
Please enter the new admin password> newpassword
Please enter the new admin password again> newpassword
Updated .asadminpass file with new password.
Command change-admin-password executed successfully.

Considerate che nel “code” qui sopra ho scritto in chiaro le password (sia quella vecchia che quella nuova): nella realtà esse sono nascoste, come se cambiaste password ad un qualsiasi utente unix.

Ok, anche questa è fatta: andiamo su http://indirizzo_server:4848 e proviamo a loggarci con le nuove credenziali admin/newpassword. Avremo così accesso al pannello di controllo di glassfish.

GlassFish Administration (port 4848)

Fatto ciò il nostro esperimento potrebbe definirsi concluso. Ma c’è una cosa che ancora possiamo fare per completare meglio la nostra installazione: creare un init-script per fare in modo che l’AS parta al boot.

Init Script

L’init script che segue è relativo all’installazione che io ho fatto nella guida. Ovviamente è ampiamente suscettibile di customizzazione e soprattutto miglioramenti. Ma funziona e non è poco :) . Ringrazio Cay Horstmann (http://weblogs.java.net/blog/cayhorstmann/archive/2006/07/installing_glas.html) per il template dello script e per la guida ufficiale in lingua inglese alla quale mi sono “liberamente ispirato” per scrivere la mia.

#! /bin/bash
### BEGIN INIT INFO
# Provides:          glassfish
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      S 0 1 6
# Short-Description: glassfish initscript
# Description:       A simple initscript for the glassfish app server
### END INIT INFO
#
# Author:            Cay S. Horstmann (http://horstmann.com)
#
#

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/glassfish/glassfish/bin
DESC="Java EE5 App Server"
NAME=glassfish
ASADMIN=asadmin
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

# Read config file if it is present.
#if [ -r /etc/default/$NAME ]
#then
#       . /etc/default/$NAME
#fi

# Function that starts the daemon/service.
d_start() {
$ASADMIN start-domain \
|| echo -n " already running"
}

# Function that stops the daemon/service.
d_stop() {
$ASADMIN stop-domain \
|| echo -n " not running"
}

case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
reload|restart|force-reload)
echo -n "Restarting $DESC: $NAME"
d_stop
sleep 10
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}"
exit 3
;;
esac
exit 0

Per aggiungere il nuovo init script all’interno dei runlevel di ubuntu è sufficiente scrivere da root

update-rc.d glassfish defaults

Ora è davvero tutto. Enjoy with glassfish!

Comments (3)

[...] completo fonte: syscallme » Post Topic » Installare Glassfish su Ubuntu Server 8.10 Articoli correlati: » Libro Ubuntu per tutti OS3.org: Officina per la decrescita [...]

Thx! ;)

COMPLIMENTI! devo dire una guida esaustiva! e direi anche in linea con la sicurezza!

grazie mille!

Write a comment