Apache è senza dubbio il più popolare e longevo tra i web server: rilasciato per la prima volta nell’ormai lontano 1985, mantenuto come progetto completamente open source dalla Apache Software Foundation, per quasi 25 anni è stato di fatto il pilastro dell’intero web, reggendo sulle sue spalle milioni di siti web. Oggi il caro “vecchio” Apache ha molti agguerriti concorrenti, come ad esempio l’ottimo Nginx, oppure LightSpeed, e tanti altri di cui abbiamo già parlato in altri articoli, ma resta pur sempre un ottimo prodotto che vanta ancora milioni di installazioni e che sicuramente accompagnerà i sistemisti ancora per molto tempo.
Nonostante la stragrande maggioranza (praticamente tutti!) gli hosting provider utilizzino ormai qualche pannello di controllo in grado di eseguire queste ed altre operazioni tramite una comoda interfaccia grafica, sappiamo bene che un buon sistemista deve assolutamente conoscere la riga di comando.
In questo articolo vedremo alcuni dei più comuni ed utili comandi che possiamo usare per interagire con questo web server. Nel corso dell’articolo supporremo di lanciare tutto i comandi con privilegi di root.
Visualizzare la versione in uso di Apache
Al momento in cui scriviamo l’ultima versione stabile di Apache è la 2.4.46, rilasciata ad agosto 2020, e tipicamente tutti i server, a meno di esigenze particolari, utilizzano sempre l’ultima versione.
Ad ogni modo, se abbiamo il dubbio su quale versione è installata sulla nostra macchina o non lo ricordiamo, possiamo usare il seguente comando:
$ apache2 -v
Dovremmo ottenere un output simile al seguente
Server version: Apache/2.4.46 (Ubuntu)
Server built: 2022-09-22T19:25:44
Se al posto della “v” minuscola lanciamo il comando con la maiuscola, otterremo informazioni ancora più dettagliate:
Server version: Apache/2.4.41 (Ubuntu)
Server built: 2022-09-22T19:26:54
Server's Module Magic Number: 20120211:88
Server loaded: APR 1.6.5, APR-UTIL 1.6.1
Compiled using: APR 1.6.5, APR-UTIL 1.6.1
Architecture: 64-bit
Server MPM:
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
Hai bisogno di un sistemista per il tuo server Linux?
Scopri cosa possiamo fare per te.
Verificare la corretta configurazione di Apache
Se abbiamo effettuato delle modifiche alla configurazione e abbiamo paura che qualcosa possa andare storto, possiamo utilizzare uno strumento che questo ottimo web server ci mette a disposizione. Il comando che segue ci permetterà di verificare se nella configurazione di Apache ci sono errori che potrebbero comprometterne il funzionamento.
Se abbiamo effettuato quindi delle modifiche ai file di configurazione, prima di avviare o riavviare il nostro web server, possiamo lanciare questo comando e verificare che sia tutto ok.
$ apachectl -t
Se non ci sono errori nella configurazione, il web server ci restituirà il seguente output
Syntax OK
In caso contrario ci saranno dei messaggi di errore esplicativi sulla base dei quali potremo provvedere a modificare la nostra configurazione.
Abilitare e disabilitare le configurazioni
I file di configurazione originali di Apache sono memorizzati nella directory /etc/apache2/sites-available/
.
Apache legge i file di configurazione dalla directory /etc/apache2/sites-enabled/
, quindi è necessario creare un collegamento simbolico dei file alla directory abilitata al sito.
Il comando a2enconf
crea un collegamento simbolico per il file di configurazione e a2disconf
rimuove il collegamento simbolico. Ad esempio, per creare un collegamento simbolico per il file di configurazione phpmyadmin.conf
lanciamo il seguente comando:
$ a2enconf phpmyadmin
Per disattivare la configurazione basta disabilitarla con il comando a2disconf
come segue:
$ a2disconf phpmyadmin
Abilitare e disabilitare i virtual hosts
La funzionalità del virtual host è stata una di quelle che hanno decretato il grande successo di Apache: infatti i virtual host permettono al Web Server di gestire più siti web su una sola macchina, cosa tutt’altro che scontata nel lontano 1985.
Ogni sito web servito da Apache è quindi definiti come un virtual host e i file di configurazione di ogni sito web ospitato sulla nostra macchina conservano delle informazioni di configurazione sugli host virtuali Apache. Nel caso di sistemi basati su Debian, il file si nella directory /etc/apache2/sites-available
.
Quindi, abilitiamo il sito web utilizzando a2ensite
, che crea semplicemente un collegamento simbolico di quel file a /etc/apache2/sites-enabled
. Apache carica tutti i file da questa directory.
Ad esempio, se hai creato un file denominato ilmiosito.com.conf
, utilizziamo il seguente comando:
$ a2ensite ilmiosito.com
analogamente, se volessimo disabilitare un sito, usiamo il comando:
$ a2dissite ilmiosito.com
Hai un problema sul tuo server Linux?
Scopri cosa possiamo fare per te.
Abilitare e disabilitare i moduli di Apache
Un altro dei motivi che hanno decretato lo straordinario successo di questo storico software è la sua struttura modulare: moltissime funzionalità, infatti, non sono presenti nel core del software, ma si possono aggiungere tramite dei moduli.
La natura completamente opensource e collaborativa di Apache ha fatto si che nel corse degli anni moltissimi sviluppatori hanno contribuito ad estendere il software con numerosi moduli.
Tutti i file dei moduli di Apache sono archiviati nella directory /etc/apache2/mods-available/
. Tutti i moduli attivi sono collegati simbolicamente alla directory /etc/apache2/mods-enabled/
.
Utilizzando il comando a2enmod
possiamo abilitare un modulo nel server Apache e mentre con a2dismod
possiamo disabilitare il modulo. Ad esempio, per abilitare il modulo che si occupa dell’URL rewriting, digitiamo il seguente comando:
$ a2enmod rewrite
se invece volessimo disabilitarlo:
$ a2dismod rewrite
Gestire il servizio Apache
Le ultime implementazioni dei sistemi operativi hanno optato per la soluzione di gestire il sistema e i software che vi eseguono come dei servizi e anche Apache, una volta installato, viene gestito dalla nostra distribuzione come un servizio: per gestire il servizio Apache sul nostro sistema è possibile utilizzare l’utility da riga di comando systemctl
.
I seguenti comandi permetto di arrestare, avviare e riavviare il servizio apache2 sul nostro sistema:
$ systemctl stop apache2
$ systemctl start apache2
$ systemctl restart apache2
Quando ad esempio effettuiamo delle modifiche ai file di configurazione, è necessario riavviare Apache affinché tali modifiche abbiano effetto. Ovviamente, come visto sopra, suggeriamo di usare il comando apachectl -t
per verificare che tutte le modifiche effettuate siano corrette e non generino errori.
Se invece abbiamo la necessità di ricaricare il sistema senza stopparlo o riavviarlo, possiamo usare il comando reload
:
$ systemctl reload apache2
Infine, per abilitare o disabilitare Apache come servizio, possiamo usare i seguenti comandi:
$ systemctl enable apache2
$ systemctl disable apache2
Vorresti cambiare Hosting ma non sai a chi rivolgerti?
Scopri cosa possiamo fare per te.
Visualizzare i comandi di Apache
Ovviamente, quelli visti prima sono solo una parte dei comandi che è possibile lanciare: per un elenco completo usate il classico comando di help:
$ apache2 -h
e otterrete un output simile al seguente:
Usage: apache2 [-D name] [-d directory] [-f file]
[-C "directive"] [-c "directive"]
[-k start|restart|graceful|graceful-stop|stop]
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X]
Options:
-D name : define a name for use in directives
-d directory : specify an alternate initial ServerRoot
-f file : specify an alternate ServerConfigFile
-C "directive" : process directive before reading config files
-c "directive" : process directive after reading config files
-e level : show startup errors of level (see LogLevel)
-E file : log startup errors to file
-v : show version number
-V : show compile settings
-h : list available command line options (this page)
-l : list compiled in modules
-L : list available configuration directives
-t -D DUMP_VHOSTS : show parsed vhost settings
-t -D DUMP_RUN_CFG : show parsed run settings
-S : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG
-t -D DUMP_MODULES : show all loaded modules
-M : a synonym for -t -D DUMP_MODULES
-t -D DUMP_INCLUDES: show all included configuration files
-t : run syntax check for config files
-T : start without DocumentRoot(s) check
-X : debug mode (only one worker, do not detach)