Come creare una VM con Oracle Linux e tomcat
@ Agostino Caruso · Monday, Jun 1, 2020 · 7 minute read · Update at Jun 1, 2020

Per lavoro mi sono trovato nelle condizioni di creare una VM con Oracle Linux. L’obiettivo finale è avere Tomcat e DB Oracle installati che si parlano e che siano accessibili da fuori della VM.

In tutto questo, c’è un vincolo che si chiama Java 8, vediamo quindi step by step come creare la nostra VM. Andremo a installare quindi:

  1. Oracle Virtual Box
  2. Oracle Linux 8.2
  3. Java JRE 1.8
  4. Tomcat 8.5/9

Tabella dei contenuti

  1. Download dei software
  2. Configurazione e installazione Oracle Linux
  3. Installazione e configurazione Java
  4. Installazione e configurazione Tomcat
  5. Fonti e Link Utili
  6. Conclusioni

Download dei software

Download Oracle Linux 8.2

Nel momento in cui scrivo l’ultima versione di Oracle Linux disponibile al download è la 8.2. Occorre recarsi sul sito di Edelivery Oracle, fare il login e scaricare l’ultima versione disponibile.

Io preferisco scaricare solo l’iso contentente i file di BOOT, vedremo in fase di installazione come dargli in pasto il repository base per scaricare in fase di installazione i pacchetti necessari.

Download e configurazione Oracle Virtual Box

Virtual Box è scaricabile gratuitamente sul virtualbox.org ed è disponibile per Mac, Windows e Linux. Se avete Ubuntu è dispinibile nei repository ufficiali:

sudo apt-get install virtualbox
Fin qui tutto facile, continuiamo con le cose facili e creiamo ora la VM, di seguito i miei settaggi:

  1. Oracle Linux 64bit;
  2. Disco allocato fisso capacità 20 GB (io preferisco aggiungere un secondo disco con le installazioni degli altri software);
  3. L’ideale è avere almeno 8gb di RAM per stare tranquilli ma il mio computer ne ha soli 8 in totale quindi decido di sacrificarne 4.
    A questo punto monto l’iso scaricata precedentemnte e sono pronto ad avviare la mia VM che farà boot da ISO.

Configurazione e installazione Oracle Linux

Instalalzione Oracle Linux

L’obiettivo e far si che venga installata OL8 con gli ultimi aggiornamenti direttamente dalla rete. Gli step che consiglio sono:

  1. Selezionare la lingua Italiana (e fate attenzione alla tastiera)
  2. Attivate la rete
  3. Inserite in istallation Source il seguente URL: http://yum.oracle.com/​repo/​OracleLinux/​OL8/​baseos/​latest/​x86_64 3a. Potete entrare nel dettaglio del repository qua
  4. Partizione del disco: generalmente io faccio cambio il punto di mount della /home/ su un diverso disco, in questo caso ho deciso di lasciare la configurazione di default, andrò eventualmente in un secondo momento a instalalre un secondo disco virtuale che utilizzerò per Oracle
  5. Occorre selezionare quale software installare, io ho selezionato quasi tutto (vedi gif di seguito)
  6. A questo punto premo su avanti, configuro la password di root, configuro l’utente principale e lo setto come amministratore.

Non mi resta altro da fare che aspettare la fine dell’installazione e riavviare quando finito.

Primi passi su Oracle Linux

Ora che l’installazione è ultimata al primo avvio si avvierà Oracle Linux senza GUI. La prima cosa da fare dopo il login è quello di aggiornare la nostra distro, non ci sarà tanto da aggiornare ma preferisco sempre assicurarmi di avere tutto aggiornato.

Installazione di GNOME

Ora occorre dare qualche comando per installare dei pacchetti aggiuntivi, ci affideremo a groupinstall.

  1. Con il seguente comando aggiorno e controllo cosa posso installare:
    dnf grouplist
  2. Ora vado ad installare cosa mi interessa, questo quanto ho selezionato:
    sudo dnf groupinstall "Sever con GUI"
  3. Una volta terminata l’installazione occorre far si che venga avviato gnome all’avvio, per farlo basta digitare:
    systemctl set-default graphical.target
  4. Siccome c’è gdm e siccome voglio configurare il login automatico modifico il file /etc/gdm/custom.conf con nano:
    sudo nano /etc/gdm/custom.conf
    ho integrato il file con questa configurazione:
    [daemon]
    AutomaticLoginEnable=True
    AutomaticLogin=username
  5. Abbiamo due opzioni ora, o si riavvia la VM o si avvia Gnome con il seguente comando:
    systemctl isolate graphical.target

Integrazione con Virtual Box: Guest Additions

Per integrare il copia e incolla e il passaggio automatico tra sistema operativo e virtualbox è consigliato installare le Guest Additions. Per farlo, occorre sapre quale kernel stiamo utilizzando, basta lanciare da terminale il comando

uname -r
e successivamente installare il kernel devel corretto. In alternativa, facciamo tutto con un comando:
sudo dnf install kernel-uek-devel-$(uname -r)
Ora basterà, da VirtualBox premere su “Devices”->"Insert Guest Additions CD image..” e seguire le istruzioni sul terminale.
Se è tutto configurato correttamente, la cattura del mouse sarà automatica, potrete fare “copia”-“incolla” cross sistemi operativi e sarà possibile ridimensionare la finestra di virtualbox. Non è finita però, io consiglio di aggiungere il proprio utente al gruppo vboxsf in modo da poter accedere alle cartelle condivise:
sudo usermod -aG vboxsf $(whoami)

Installazione e configurazione Java

A me interessa Java 8, pertanto installerò questa versione. Occorre recarsi sul sito di Oracle selezionare la versione e se volete installare JRE o JDK, nel mio caso Java JRE SE 8u251, mi raccomando selezionate la versione RPM e a 64bit (Linux x64 RPM Package). A questo punto potete installare la JRE con doppio click o da terminale:

sudo rpm -i Scaricati/jre-8u251-linux-x64.rpm
e successivamente controlliamo che funzioni tutto con un
java -version

Installazione e configurazione Apache Tomcat

La mia idea è quella di creare una directory tomcatwm sotto /appl in cui installare tomcat 9, il servizio girerà con utente tomcatwm e sarà possibile avviare il tomcat come servizio. Voglio inoltre che il mio utente abbia tutti i permessi per modificare i file di configurazione di proprietà tomcatwm.

sudo useradd tomcatwm
sudo mkdir -p /appl
sudo mkdir -p /appl/tomcatwm
sudo chown tomcatwm:tomcatwm /appl/tomcatwm
sudo usermod -aG tomcatwm $(whoami)
A questo punto occorre scaricarsi Apache Tomcat 9 dal sito, io ho scaricato la 9.0.35 e l’ho posizionata dentro la cartella /appl/tomcatwm. Ora sonno pronto per installare il servizio.

  1. Cambio utente e divento tomcatwm:
    sudo -u tomcatwm /bin/bash -l
  2. Estraggo il contenuto del pacchetto che ho precedentemente scaricato:
    tar xzf apache-tomcat-9.0.35.tar.gz
  3. Rendo eseguibili i file con estensione .sh:
    chmod +x bin/*.sh
  4. Entro dentro la cartella bin e provo ad avviare il servizio:
    cd bin
    ./startup.sh
  5. Controllo che il servizio giri correttamente aprendo firefox e digitando: http://127.0.0.1:8080 (N.B. 8080 è la porta di default).
  6. Stoppiamo il tomcat
    ./shutdown.sh
  7. Abilito l’utente per l’interfaccia grafica aggiungendo quanto segue all’interno dei dat “tomcat-users”:
    <role rolename="admin"/>
    <role rolename="admin-gui"/>
    <role rolename="manager-gui"/>
    <user username="mioutente" password="miapassowrd" roles="admin,admin-gui,manager-gui"/>

Creazione del servizio Apache Tomcat

Ho deciso che il tomcat deve essere configurato come un servizio e deve essere attivo quando la VM viene avviata. Per fare questo, occorre creare un file sotto systemd per dichiarare il servizio e i comandi supportati.

  1. Creiamo e modifichiamo il file con il seguente comando:
    sudo nano /etc/systemd/system/tomcatwm.service
  2. All’interno del file basta incollarci quanto riporto di seguito:
    [Unit]
    Description=Apache Tomcat 9
    Documentation=http://tomcat.apache.org/tomcat-9.0-doc/
    After=network.target syslog.target
    [Service]
    User=tomcatwm
    Group=tomcatwm
    Type=oneshot
    ExecStart=/appl/tomcatwm/bin/startup.sh
    ExecStop=/appl/tomcatwm/bin/shutdown.sh
    RemainAfterExit=yes
    [Install]
    WantedBy=multi-user.target
    N.B. noterete che io il tomcat lo chiamo sempre tomcatwm, se avete scelto un path diverso e un utente diverso, modificate di conseguenza il vostro file di configurazione.
  3. Occorre ricaricare la lista dei servizi, per farlo digitiamo:
    sudo systemctl daemon-reload
  4. Se provate a fare start del servizio vi accorgerete che non funziona, trovete questo bell’errore:
    Job for tomcatwm.service failed because the control process exited with error code.
    See "systemctl status tomcatwm.service" and "journalctl -xe" for details.
    Se eseguite “journalcl -xe” avrete anche il dettaglio:
    tomcatwm.service: Failed to execute command: Permission denied
    systemd[1]: tomcatwm.service: Main process exited, code=exited, status=203
    systemd[1]: tomcatwm.service: Failed with result exit-code.
    systemd[1]: Failed to start Apache Tomcat 9.
    Ma qual è il problema? Il problema è SELinux, ammetto di non essere entrato molto nel dettaglio ma in sostanza, avviare un servizio in una directory che non è la home dell’utente è contro le policy di SeLinux “enforcing”. Ma io sono permissivo, e voglio che lo sia anche SELinux, in fondo questa è una VM con accesso limitato e controllato verso l’esterno quindi modifico il seguente file da enforcing a permissive:
    /etc/selinux/config
    Riavvio la VM e…
  5. Abilito il servizio, usando il comando enable mi assicuro che all’avvio della VM il servizio tomcatwm sia attivo:
    sudo systemctl enable tomcatwm

Conclusioni

Per scrivere queste poche righe ho dovuto fare due VM, la prima per provare ed imparare, la seconda per gli screen e scrivere passo passo cosa stavo facendo. Ci sono sicuramente errori, imprecisioni e inesattezze ma il box dei commenti qui sotto serve anche per segnalarmi come migliorare il tutto.

Fonti e Link Utili

Di seguito riporto qualche link che ho usato per scrivere queste poche rige.

  1. Gnome Automatic Login
  2. Issue on Shutdown
  3. Gnome on Oracle Linux
  4. Oracle Base - Install Tomcat
  5. Computing for Geeks - Tomcat as a Service

Primi passi

Dopo la bellezza di 11 mesi, ho finalmente trovato il tempo di scrivere due righe su di me. Sono nato nella bellissima Alba, nel lontano ma non così lontano Settembre del 1988. I miei genitori mi hanno cresciuto tra Alba e Monteu Roero e ho sempre avuto la passione per la tecnologia, fin da quanto ero piccolo. Ricordo che passavo le ore con mia nonna a guardare fuori dalla finestra il cantiere, infatti, il palazzo di fronte alla casa dei miei genitori, è stato un perenne “lavori in corso”.

Ancora oggi ricordo che ero affascinato da tutti quei mezzi e strumenti incredibili, hanno praticamente restaurato due palazzi davanti ai miei occhi vigili (e quelli di mia nonna che stava sempre con me). Amavo smontare le cose, ancora oggi mia nonna mi ricorda di quella volta in cui le ho vivisezionato un orologio da comodino, ho preso un cacciavite e via, l’ho disassemblato completamente. Ero piccolissimo, non sono riuscito a rimontarlo. 😂

Su richiesta di mio padre ho intrapreso una carriera musicale che è finita male, il violino non ha mai fatto per me però, durante questa mia “non piccola” avventura, ho imparato ad apprezzare la musica che ancora oggi è parte della mia vita, mi aiuta a concentrarmi, a riflettere e quando sono agitato a calmarmi. 🎵

Gli smartphone

Tra la quinta elementare e la prima media ricordo che hanno cominciato ad arrivare i primi smartphone, mio padre ne aveva uno ed era gigantesco! Ricordo la fatica fatta per configurare gli SMS e, ancor più faticoso fu trovare qualcuno a cui mandarli. Proprio da quell’estate, la mia passione per la telefonia è sbocciata, da lì a poco mia zia mi regalò il suo vecchio telefono.

Non ebbi il permesso di metterci una SIM, ero troppo piccolo e all’epoca, senza SIM, il telefono non lo potevi nemmeno accedere (o almeno su quel modello, un Telit).

Dopo infinite richieste, ebbi la mia prima SIM, la misi nel telefono e scoprii che era rotto, non agganciava la rete. Ricordo ancora oggi la delusione, avevo avuto quel telefono per le mani per dei mesi, per dei mesi ho bramato la SIM, quando si decisero a regalarmela scoprii che quello che avevo in mano era un ferma carte con alloggiamento per la SIM. 😅

Posso dire che la telefonia ha avuto un ruolo importante nella mia vita, quando Android cominciò a muovere i primi passi, io fui uno degli early adopter con il mio HTC Magic versione 32b venduta in esclusiva da TIM, costava quanto un iPhone, faceva più cose e quasi tutte discretamente male, non c’era quasi un motivo per preferirlo ad un iPhone ma aveva un kernel Linux ed era un progetto Open Source. Come si poteva non comprarlo? 📱

AndroidWorld

La passione per Android mi ha portato quella voglia di condividere che secondo me è fondamentale avere nell’ambito dell’informatica, e così mi sono avvicinato al portale AndroidWorld che stava anch’esso facendo i primi passi.

Tutto quello che scoprivo sul mio dispositivo, lo condividevo e magari ogni tanto scappava un articolo visto che mi avevano chiesto di partecipare alla stesura degli articoli per il blog. I miei articoli erano di natura estremamente tecnica, si parlava di bootloader, custom firmware, sblocco dei permessi di root e tanto altro. Mi piaceva aiutare le altre persone dall’altra parte del computer a fare quello che facevo io.

Nel 2011 sono andato al Mobile World Congress per conto di AndroidWorld, veramente una fiera entusiasmante ma, riguardandomi indietro, avrei voluto godermi maggiormente quella settimana di eventi e chiacchierate con i vari esponenti dei brand di telefonia. Ho l’impressione che avrei potuto impegnarmi di più su quell’avventura ma l’università prendeva molto tempo e di lì a poco cominciai un’altra esperienza lavorativa che mi obbligò a fare la scelta di abbandonare il portale.

Reply Logistics

A fine 2011, per conto di Certimeter cominciai la mia esperienza come consulente esterno in Reply Logistics. L’obiettivo era finire gli esami e intanto avere uno stipendio per pagarmi l’affitto a Torino, un bel piano che però si modificò gradualmente.

Potevo programmare, potevo scrivere codice e imparare, il lavoro mi piaceva moltissimo anzi, a distanza di quasi 9 anni, mi piace ancora moltissimo. Lavoro molto con Oracle e, ahimè, un po’ meno con Java. Nel 2019 sono stato assunto direttamente da Reply, un sogno che si è realizzato, credo molto in questa azienda e in quello che sta facendo.

Dopo la mia assunzione, ho seguito in prima persona l’integrazione della piattaforma Android all’interno del mondo della logistica con Click WM. Non è certo il modo in cui avrei voluto lavorare con Android, avrei voluto vedere più codice oltre a tutta la parte di integrazione che ho fatto.

Una cosa che ho molto apprezzato di Reply è stata la possibilità di fare e proporre, molto spesso le mie idee sono andate verso una realizzazione concreta, sono soddisfatto di quello che faccio e credo sia una cosa bellissima da poter vantare parlando del proprio lavoro ma non mi basta.

Continuo a documentarmi, sono diventato responsabile dell’ifrastruttura che mantiene i backup, la documentazione e i sorgenti della mia business unit, insomma, non mi fermo.

Tutto questo non basta, nel 2019 ho deciso che dovevo allargare i miei orizzonti pertanto ho aperto questo spazio web e quello di Alice e mi sono documentato su Hugo, è un bel passatempo.