Dspace su Ubuntu e Vmware


Partendo dal wiki di dspace e da questo link della Reference Documentation, si è scelto di testare Dspace (un software open source per gli archivi aperti, Open Archives Initiative, OAI) in un ambiente virtuale Vmware. La struttura di dspace è suddivisa in comunità e collezioni per archiviare dati e metadati.

E’ stato utilizzato un server Ubuntu di base (denominato master) con due schede di rete nel quale è stato installata l’ultima versione di Vmware server scegliendo solo i pacchetti necessari e limitando l’uso di servizi esposti.

In Vmware server si installa Ubuntu (questa volta lo chiameremo slave) e su questo installeremo dspace 1.4.1, tomcat 5, postgresql 8.1 e java 1.5.

L’utilizzo del server master riveste importanza per la sicurezza, sia perchè si può scegliere l’interfaccia di rete da esporre e sia per la quantità minima di pacchetti da usare per il funzionamento di Vmware server.
La scelta di virtualizzare il servizio è ovvia perchè rimane abbastanza semplice clonare l’installazione o effettuarne il backup solo copiando la directory dove risiede l’immagine Vmware.

L’accesso in remoto al server master potrà avvenire utilizzando vmware-server-console sulla porta TCP 902, mentre per il monitoraggio è utile la console vmware-mui (porta 8333), configurando opportunamente il firewall per accettare connessioni solo dagli IP voluti.

Per poter utilizzare la console vmware-mui, potrebbe essere necessaria questa patch:
$ cd /tmp
$ wget http://users.piuha.net/martti/comp/ubuntu/httpd.vmware.diff
$ sudo su -
# patch -b -p0</tmp/httpd.vmware.diff

# /etc/init.d/httpd.vmware restart
# exit

Verifichiamo che il servizio sia “LISTEN” con:

$ sudo netstat -anp|grep LISTEN|grep 8333
tcp 0 0 0.0.0.0:8333 0.0.0.0:* LISTEN 6299/httpd.vmware

i dettagli dell’installazione di Vmware su Ubuntu server si possono trovare su uno di questi links:

http://www.howtoforge.com/ubuntu_vmware_server
http://users.piuha.net/martti/comp/ubuntu/server.html

Configurazione Tomcat

Iniziamo installando sul server slave i pacchetti necessari e creando l’utente di sistema dspace:

$ sudo apt-get install tomcat5 sun-java5-jdk postgresql-8.1 libpg-java ant-optional

Aggiungiamo l’utente di sistema:

$ sudo useradd -m dspace
$ sudo mkdir /dspace
$ sudo chown dspace:dspace /dspace

E modifichiamo le preferenze per tomcat nel file /etc/default/tomcat5
TOMCAT5_USER=dspace
JDK_DIRS="/usr/lib/jvm/java-1.5.0-sun"
TOMCAT5_SECURITY=no

E’ importante verificare la versione di java usata, digitiamo quindi:
sudo update-alternatives --set java /usr/lib/jvm/java-1.5.0-sun/jre/bin/java

Impostiamo i permessi per l’utente dspace per le directories di tomcat:
sudo chown -R dspace /var/cache/tomcat5
sudo chown -R dspace /var/lib/tomcat5
sudo chown -R dspace /var/log/tomcat5

Modifichiamo il file /etc/tomcat5/server.xml per creare il connettore sulla porta 8080, utlizzando l’encoding UTF-8:

<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector className="org.apache.coyote.tomcat5.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" acceptCount="10" debug="0"
connectionTimeout="20000" useURIValidationHack="false"
URIEncoding="UTF-8"/>

Se vogliamo accettare anche connessioni https, è necessario creare un certificato con:

$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA

che va copiato in /var/lib/tomcat5/.keystore e aggiungendo al file /etc/tomcat5/server.xml le righe necessarie. Creiamo così il connettore sulla porta 8443:

<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->

<Connector className="org.apache.coyote.tomcat5.CoyoteConnector"
port="8443" minProcessors="5" maxProcessors="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https"
secure="true">

<Factory className="org.apache.coyote.tomcat5.CoyoteServerSocketFactory"
keystoreFile="/var/lib/tomcat5/.keystore"
keystorePass="changeit"
clientAuth="false" protocol="TLS" />
</Connector>

Facciamo partire il server tomcat con:

/etc/init.d/tomcat5 start

Verifichiamo che i processi java siano quelli di tomcat:

$ sudo netstat -anp|grep LISTEN|grep java
tcp6 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 7896/java
tcp6 0 0 :::8009 :::* LISTEN 7896/java
tcp6 0 0 :::8080 :::* LISTEN 7896/java
tcp6 0 0 :::8443 :::* LISTEN 7896/java

Configurazione della rete

Per permettere l’accesso sulle porte http (80) e https (443) al sito, si può applicare una regola al firewall (iptables) che effettui il REDIRECT sulle porte locali:

Parte di /etc/iptables.up.rules:

---- snap ----
-A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
---- snap ----

In pratica potremo aprire sul firewall solo la porta 80 per l’accesso alle pagine.

Per servire l’accesso sulle porte standard è possibile fare uso dei connettori mod_jk, mod_webapp oppure mod_proxy di apache. Questi sono metodi sono efficaci, ma presentano un grado di complessità più elevato.

Per caricare all’avvio le regole del firewall, il file /etc/network/interfaces conterrà oltre alla configurazione della rete statica anche la riga per il firewall (iptables), sarà sufficiente creare un file delle regole (/etc/iptables.up.rules)attraverso il comando iptables-save:

auto eth0
iface eth0 inet static
address 192.168.10.2
netmask 255.255.255.0
gateway 192.168.10.1
pre-up iptables-restore < /etc/iptables.up.rules

Postgresql

La configurazione di postgresql prevede, oltre alla creazione dell’utente e del database, l’accesso eventuale dalla rete. Per esempio se volessimo abilitare l’accesso da remoto solo da un IP, possiamo modificare il file /etc/postgresql/8.1/main/postgresql.conf, aggiungendo la riga:
listen_addresses='192.168.10.2'

Per abilitare l’IP 192.168.10.100 per gestire l’eventuale accesso in remoto del database aggiungiamo al file /etc/postgresql/8.1/main/pg_hba.conf la riga:

host dspace all 192.168.10.100 trust

Facciamo quindi partire il server postgresql e verifichiamo che giri (porta 5432 se non diversamente specificato in postgresql.conf):

$ sudo /etc/init.d/postgresql-8.1 start
$ sudo netstat -anp|grep LISTEN|grep postmaster
tcp 0 0 192.168.10.2:5432 0.0.0.0:* LISTEN 5495/postmaster

Creiamo adesso l’utente per PostgreSQL dspace e il database dspace rispettivamente con i privilegi dell’utente di sistema postgres e dspace:

$ sudo su - postgres
$ createuser -U postgres -d -A -P dspace
$ exit
$ sudo su - dspace
$ createdb -U dspace -E UNICODE dspace

Dspace

Scarichiamo i sorgenti di dspace con:

$ sudo su - dspace
$ wget http://puzzle.dl.sourceforge.net/sourceforge/dspace/dspace-1.4.1-source.tar.gz

e scompattiamo con

tar zxvf dspace-1.4.1-source.tar.gz
cd dspace-1.4.1-source/config
nano dspace.cfg

Configuriamo le righe necessarie come risulta dal sito di dspace:
dspace.url
dspace.hostname
dspace.name
db.password (la password inserita per il database)
mail.server
mail.from.address
feedback.recipient
mail.admin
alert.recipient (non essenziale, ma utile!)

In particolare se abbiamo deciso di esporre postgresql sull’interfaccia di rete eth0

db.url = jdbc:postgresql://192.168.10.2:5432/dspace

copiamo il driver JDBC nella dir dspace-1.4.1-source/lib

$ cp /usr/share/java/postgresql-jdbc3-8.1.jar dspace-1.4.1-source/lib/postgresql.jar

torniamo in dspace-1.4.1-source e eseguiamo:

$ ant fresh_install

finita la compilazione possiamo copiare i files “.war” e facciamo ripartire tomcat

$ sudo cp build/dspace*.war /var/lib/tomcat5/webapps/
$ sudo chown dspace /var/lib/tomcat5/webapps/*.war
$ sudo /etc/init.d/tomcat5 restart

Creiamo l’amministratore di Dspace che potrà creare communities, collections, utenti e gruppi:

$ sudo su - dspace
$ /dspace/bin/create-administrator

Infine possiamo finalmente vedere il tutto su:

http://<myhostname.mydomain&gt;:8080/dspace

oppure, se la regola iptables è attiva:

http://<myhostname.mydomain>/dspace

Enjoy🙂

Dspace is Live

Se vuoi suggerirmi o commentare qualcosa, puoi scrivere a “Antonio Doldo” <adoldo@tiscali.it>

Info Antonio Doldo
www.toolinux.it - www.virtualboxes.org - adoldo.wordpress.com - Linux user & Android fan

8 Responses to Dspace su Ubuntu e Vmware

  1. Paolo scrive:

    Complimenti,

    sono passato di qua per trovare info ed aiutare un amico; mi sono letto tutto il post.

    Continua così.

    Un saluto,

    Paolo

  2. Antonio Doldo scrive:

    @Paolo
    Grazie dell’attenzione, spero che il tuo amico abbia trovato le informazioni che cercava su Dspace. Avrei anche del materiale nuovo che forse posterò a breve. L’installazione riguarda dspace 1.4.2 su ubuntu con tomcat 5.5 e java6😉 con alcuni accorgimenti e prove sul campo. Se vuoi potrei anticipare o mettere a disposizione l’esperienza.
    Ciao,
    Antonio

  3. Roberto scrive:

    Ciao, interessanti le informazioni.
    Mi potresti anticipare qualcosa per la configurazione (dspace 1.4.2 su ubuntu con tomcat 5.5 e java6) sto provando ad installare, ma niente .. .c’è sempre qualcosa che non va.

    Altrimenti seguirò la tua guida ed installo una virtual machine con la versione un po’ più vecchia.

  4. Antonio Doldo scrive:

    @Roberto
    Quello che ti posso dare “al volo” è una specie di lista di pacchetti installati e comandi eseguiti, purtroppo anche in modo confuso, se hai dubbi ne riparliamo:
    (OCCHIO AI DUE TRATTINI CHE VENGONO UNITI DA WP)
    1) installare tomcat java e postgresql:
    $ sudo apt-get install tomcat5.5 sun-java6-jdk \
    postgresql-8.2 libpg-java ant-optional
    $ sudo update-alternatives – – config java

    2) editare il file /etc/default/tomcat5.5
    JAVA_HOME=/usr/lib/jvm/java-6-sun
    CATALINA_BASE=/var/lib/tomcat5.5
    JAVA_OPTS=”-Djava.awt.headless=true -Xmx256M”
    TOMCAT5_SECURITY=no

    3) installare opzionalmente tomcat-admin
    $ sudo apt-get install tomcat5.5-admin

    4) editare il file /etc/init.d/tomcat5.5
    TOMCAT5_USER=dspace
    TOMCAT5_SECURITY=no
    JAVA_OPTS=”-Djava.awt.headless=true -Xmx256M”
    [ -z “$TOMCAT5_USER” ] && TOMCAT5_USER=dspace

    5) aggiungere l’utente dspace e sistemare i permessi
    sudo useradd -m dspace
    sudo mkdir /dspace
    sudo chown -R dspace:dspace /dspace/
    sudo chown -R dspace /var/cache/tomcat5.5/
    sudo chown -R dspace /var/lib/tomcat5.5/
    sudo chown -R dspace /var/log/tomcat5.5/

    /// 6) aggiungere l’admin in /etc/tomcat5.5/server.xml ///
    UPDATE 6) aggiungere l’admin in /var/lib/tomcat5.5/conf/tomcat-users.xml

    7) generare l’eventuale certificato
    $ /usr/lib/jvm/java-6-sun-1.6.0.03/jre/bin/keytool -genkey -alias tomcat -keyalg RSA
    $ sudo mv .keystore /var/lib/tomcat5.5/

    8) far partire tomcat
    $ export JAVA_HOME=/usr/lib/jvm/java-6-sun
    $ sudo /usr/share/tomcat5.5/bin/catalina.sh start

    9) Installazione di Dspace:
    tar zxvf dspace-1.4.2-source.tgz
    cd dspace-1.4.2-source/
    nano config/dspace.cfg
    sudo cp /usr/share/java/postgresql-jdbc3-8.2.jar lib/postgresql.jar
    sudo ant fresh_install
    sudo /dspace/bin/create-administrator
    sudo cp build/dspace*.war /var/lib/tomcat5.5/webapps/

    10) far ripartire tomcat (e incrociare le dita!)

    UPDATE:
    sudo /etc/init.d/tomcat5.5 start

    Spero che ti sia utile, fammi sapere….
    ciao,
    Antonio

  5. Roberto scrive:

    Ciao, seguo tutte le istruzioni ed al punto 10 dice:

    $ sudo /etc/init.d/tomcat5.5 start
    /etc/default/tomcat5.5: 31: -Xmx256M”: not found

  6. Antonio Doldo scrive:

    @Roberto
    Mi sembra un errore di sintassi, attenzione al copia e incolla, le virgolette ” possono venire ‘tranciate’ dal parser di wordpress, controlla la sintassi della riga
    JAVA_OPTS=”-Djava.awt.headless=true -Xmx256M”
    inserendo a mano dopo OPTS e alla fine le virgolette

    Ciao e buon lavoro,
    Antonio

  7. Roberto scrive:

    Grazie mille, ora funziona tutto.

    Per il punto 6) per chi non sapesse come aggiungere l’admin (ed anche il manager) aggiungere le seguenti righe:

  8. Antonio Doldo scrive:

    @tutti
    a causa del “taglio” del codice xml di wp, ecco le righe proposte da Roberto:

Lascia un commento

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: