Pubblicato il 30/12/2023 da alnao nella categoria Debian, Java & Spring Boot

Quando si pensa ai sistemi GNU Linux si pensa anche al matrimonio del secolo chiamato LAMP: l’unione perfetta tra GNU Linux, Apache, MySql & Php. Questi quattro compongono uno stack tecnologico gratuito e open source utilizzabile per creare un server web completo. Possono essere installati separatamente selezionando i vari pacchetti ma è consigliato eseguire l’installazione unendo i pacchetti con un semplice comando:

apt-get install apache2 mariadb-client mariadb-server php8.2 php8.2-mysql libapache2-mod-php8.2

oppure i pacchetti possono essere installati dai programmi di gestione dei pacchetti di Debian. In questo articolo viene usata la versione 8.2 di PHP ma si possono usare anche versioni precedenti o successive se presenti nel repository ufficiale, è sconsigliato usate versioni di pacchetti non ufficiali.

Una volta installati i pacchetti questi vengono auto-configurati tanto che il server web viene attivato automaticamente e risulta disponibile all’indirizzo:

http://localhost/

Se un programmatore vuole configurare Apache inserendo una nuova cartella web deve andare a modificare i file di configurazione del server Apache, purtroppo non esiste una applicazione in grado di farlo in maniera grafica e veloce: per attivare una nuova applicazione web è necessario modificare il file di configurazione di Apache

/etc/apache2/apache2.conf

controllando che nel file siano presenti le seguenti righe:

ServerName localhost
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

e, se si vuole configurare la cartella per ogni utente bisogna aggiungere una sezione

UserDir public_html
<Directory /home/*/pubblic_html>
  Options Indexes SymLinksIfOwnerMatch IncludesNoExec
</Directory>

da notare che alcune righe potrebbero essere già presenti ma precedute dal simbolo # che è il simbolo per commentare una riga, in questo caso basta cancellare il carattere cancelletto. Con l’ultimo blocco è stato configurato una cartella web per ogni utente configurato nel sistema, cioè basterà andare sulla home di un utente, creare una cartella con il nome public_html e questo sarà accessibile dal web all’indirizzo:

http://localhost/~nomeutente/

Dopo aver modificato il file di configurazione, per rendere effettive le modifiche, è necessario riavviare il server con il comando:

# systemctl restart apache2

La cartella web virtuale di default è la cartella /var/www/ ma è consigliato non utilizzarla in fase di sviluppo ed è possibile configurare sottocartelle: per creare una cartella specifica esposta dal webserver, basta modificare il file di configurazione aggiungendo un blocco di codice specifoco indicando i path e il nome:

Alias "/Php/" "/mnt/Dati/Php/"
<Directory "/mnt/Dati/Php/">
  Options Indexes FollowSymLinks Includes
  AllowOverride All
  Order deny,allow
  Allow from all
  Require all granted
</Directory>

(bisogna sempre ricordarsi di prestare la massima attenzione alla differenza maiuscole/minuscole sia per i nomi delle cartelle sia per i parametri di configurazione!).


Il demone database MySql è il più utilizzato al mondo per la creazione di applicazioni, per Debian i pacchetti sono disponibili nella versione mariadb che è la versione open-source e libera e sono previsti due pacchetti principali (mariadb-client e mariadb-server), all’installazione il demone è sprovvisto di password e bisogna sempre ricordarsi di eseguire la configurazione base con il comando:

$ mysql_secure_installation

oppure impostando manualmente le password principali con i comandi dalla console mysql:

$ mysql
> use mysql;
> UPDATE user SET password=PASSWORD('password') where User='root';
> GRANT ALL ON *.* TO 'alnao'@'localhost' IDENTIFIED BY 'password';
> FLUSH PRIVILEGES;
> quit;

Da notare che con il comando mysql è possibile accedere alla console del database con il quale è possibile lanciare comandi e query, in console viene usato il carattere > per indicare che ci si trova nella console del database e non in una shell bash di GNU Linux. Dopo aver configurato la password dell’amministratore bisogna riavviare il demone con il comando:

# systemctl restart mariadb

per rendere effettive le modifiche alla password di root.
Un semplice esempio di utilizzo della console del dabatase:

$ mysql
> USE test;
> SHOW TABLES;
> CREATE TABLE prova (Nome char(120), Sito char(120));
> INSERT INTO prova (Nome,Sito) VALUES ('Alberto Nao','www.alnao.it');
> SELECT * FROM prova;

Con questi comandi è stata creata una piccola tabella nel database test, inserita una riga sulla tabella e l’ultima query visualizza la riga appena inserita, in questo modo sono state eseguite tutte le istruzioni base del demone MySql. Per quanto riguarda l’applicazione-sito PhpMyAdmin, dalla versione 10 di Debian, non è più disponibile nei Repository ufficiali e deve essere scaricato manualmente dal sito ufficiale e posizionato in una cartella per poi lanciare i comandi di configurazione (per la configurazione dei permessi e del apache.conf).
In alternativa all’ormai obsoleto PhpMyAdmin è consigliabile usare programmi più evoluti per la gestione del database come MySql-Workbench, per installarlo basta usare il repository snap e lanciare il comando:

snap install mysql-workbench-community

Il demone Mysql pevede anche alcuni comandi speciali per la gestione da riga di comando del demone, per esempio per effettuare il backup di un database non può usare il comando:

# mysqldump -u user -p password nomeDatabaseSorgente > file.sql

il backup viene eseguito in un file con estensione sql, per eseguire il restore (dallo stesso file sql) basta lanciare il comando

# mysql -u user -p password nomeDatabaseDestinazione < file.sql

Da notare che il comando mysqldump permette di collegare due server MySql per trasferire dati tra i due server, per questo e tutti gli altri comandi si rimanda alla ufficiale MySql.


Per quanto riguarda la programmazione Web con i linguaggi di scripting Php o gli altri linguaggi, ci sono moltissimi programmi grafici che permettono lo sviluppo, alcuni esempi sono: screem, BlueFish, QuantaPlus anche se è consigliato l’utilizzo di Eclipse o Visual Studio Code.

Il più semplice esempio di file php è il classico file con le informazioni base :

echo '<?php phpinfo(); ?> ' > /var/www/html/test.php

che risulta disponibile nel server apache. I moduli php sono installabili dal gestiore dei pacchetti e l’elenco dei moduli installati sono consultabili con il comando

$ php -m

Il file di configurazione base del motore php si chiama

php.ini

che nei sistemi Debian si trova nel path

/usr/lib/php/8.2

Con questo comando è possibile modificare le configurazioni del interprete/compilatore, si rimanda alla documentazione ufficiale per maggior dettagli riguardo a questo tema.


Per guardo riguarda la programmazione di applicazioni web Node.js e NPM hanno cambiato il mondo facilitando il lavoro degli sviluppatori: Node.js è lo strumento che consente agli sviluppatori di eseguire script al di fuori del browser web mentre NPM è il gestore di pacchetti per la gestione dei moduli Nodejs. L’installazione di questi due tool in una distribuzione Debian è facile e prevede l’installazione di due pacchetti

apt-get install nodejs npl curl -y

Al termine dell’instazzione è sempre necessario impostare i permessi in modo che qualunque utente possa installare moduli con Npm, questi permessi possono essere assegnati con i comandi

# mkdir /usr/local/lib/node_modules
# chmod 777 /usr/local/lib/node_modules
# chmod 777 /usr/local/bin/
# node export NODE_OPTIONS=--openssl-legacy-provider

Esistono molte guide che descrivono il processo di installazione di nuove versioni da repository esterni che spesso sono più aggiornate ma per un ambiente di sviluppo stabile è consigliato l’uso dei repository ufficiali. Per creare e provare una applicazione basata sulla libreria Angular basta lanciare i comandi:

$ npm install -g @angular/cli
$ ng new prova
$ cd prova
$ ng serve

Mentre per testare il funzionamento di un piccolo progetto basato sul framework React è possibile creare un progetto con:

$ npx create-react-app prova
$ cd prova
$ npm start

e poi andare all’indirizzo della applicazione web locale. Si rimanda alla documentazione dei tool e delle librerie per maggior in formazioni.


Il rapporto tra GNU Linux e Java è sempre stato un po’ travagliato, questo perché le società che hanno i diritti sul linguaggio e sui compilatori non rilasciavano versioni open-source andando in contrasto con le politiche open di GNU Linux e di Debian, questo portò molte distribuzioni a togliere le versioni ufficiali java e comprendere alcune JVM (Java Virtual Machine) alternative e libere (come Cacao, Javacc, Gcj). Fortunatamente, sono state create nel tempo versioni open dell’ambiente JDK, queste sono state nuovamente inserite nei repository ufficiali ed oggi sono disponibili pacchetti con il nome “openjdk”. L’ambiente Java runtime in Debian cioè il famoso JRE può essere trovato nei pacchetti openjdk-11-jre oppure le versioni precedenti a seconda della versione richiesta, la versione 11 dovrebbe essere istallato in automatico all’installazione iniziale del sistema base mentre il pacchetto per il plugin per browser era icedtea-8-plugin ma oggi è considerato obsoleto.

Se presente un ambiente LAMP, è possibile aggiungere il demone Tomcat per utilizzare le vostre applicazioni web che usano servlet e applicazioni in Java come semplici JSP. Per l’installazione i passi da seguire sono veloci: Debian mette a disposizione dei pacchetti già preconfigurati con delle impostazioni base adatte a chi vuole programmare in locale, è ovvio che Tomcat necessita di configurazioni avanzate se il server deve essere usato come server di produzione ma, se lo scopo è usarlo come server di sviluppo, è possibile sfruttare le configurazioni base che Debian vi mette a disposizione; dopo aver verificato di aver installato il LAMP correttamente, vi basta installare tutti i pacchetti che iniziano con il nome tomcat10 e l’installazione è terminata, poi dovete modificare il file:

/etc/tomcat10/tomcat-users.xml

dove vengono censiti gli utenti che possono accedere alla console di amministrazione di Tomcat, per esempio dovete aggiugnere la riga:

<role rolename="manager-gui" />
<role rolename="admin-gui" />
<user username="root" password="mypassword" roles="manager-gui,admin-gui"/>

ovviamente all’interno del root-tag <tomcat-users>, fatto questo dovete riavviare Tomcat con il comando:

# systemctl restart tomcat9

e provare ad accedere alla console all’indirizzo web

http://localhost:8080/manager/html

potete installare le vostre applicazioni web sotto forma di file WAR (Web Application aRrchives) oppure nel formato EAR (Enterprise ARchives) oppure all’indirizzo

http://localhost:8080/docs/manager-howto.html

è possibile trovare una piccola documentazione su Tomcat. L’ambiente di sviluppo Eclipse è disponibile nei repository ufficiali anche se è consigliato l’installazione tramite snap visto che il pacchetto risulta più aggiornato. Grazie a Tomcat è potete collegare il vostro ambiente di sviluppo con il server web per gestire il demone direttamente dalla vista Server di Eclipse, bisogna infatti configurare il server nelle preferenze ma, per praticità e semplicità, è consigliato creare un duplicato del server installato: in questo modo ci saranno due demoni Tomcat attivi nel sistema (quello del sistema già auto-configurato automaticamente e quello gestito da Eclipse per lo sviluppo), per configurare questa logica basta creare una cartella di link virtuali da di comando:

# mkdir /usr/share/tomcat10b
# cd /usr/share/tomcat10b
# ln -s /var/lib/tomcat10/conf conf
# ln -s /etc/tomcat10/policy.d/03catalina.policy conf/catalina.policy
# ln -s /var/log/tomcat10 log
# ln -s /var/lib/tomcat10/common common
# ln -s /var/lib/tomcat10/server server
# ln -s /var/lib/tomcat10/shared shared
# cp /usr/share/tomcat10/* /usr/share/tomcat10b/ -r
# chmod -R 777 /usr/share/tomcat10b/conf

e bisogna poi impostare nelle preferenze di Eclipse un server di tipo “Tomcat 10” nella cartella

/usr/share/tomcat10b/

così facendo nel workspace viene creato in automatico un progetto Servers con alcuni file di configurazione del demone, in questo progetto è presente un file server.xml dove è indispensabile impostare le porte HTTP diverse da quelle di default perché sono già occupate dal demone del sistema, per esempio basta cambiare 8080 in 8081 (per le applicazioni) e 8005 in 8082 (per la parte amministrativa del demone).

Per Eclipse sono consigliati i seguenti plugin scaricabili dal marketplace ufficiale:

  • Eclipse enterprise java and web dev tools 3.28
  • Eclise JST server adapters
  • Eclipse Web developer tools 3.28
  • maven 1.2.0
  • PhP development tools 7.0
  • spring tools 4 (oppure in alternativa la versione 3.9.13)

Il tool maven e glade sono disponibili nel pacchetto ufficiale e possono essere facilmente scaricati dai repository di Debian tramite i programmi di gestione dei pacchetti.

MENU