Installazione

Installazione su Linux Ubuntu o Linux Mint

Aggiornamento delle cache del software:

sudo apt update

Installazione di Apache:

sudo apt install apache2

L'installazione automaticamente abilita il servizio al prossimo reboot e lo fa partire immediatamente. Controllare lo stato del servizio con:

sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-03-06 14:54:49 CET; 57s ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 2825 (apache2)
      Tasks: 55 (limit: 5137)
     Memory: 4.9M
        CPU: 58ms
     CGroup: /system.slice/apache2.service
             ├─2825 /usr/sbin/apache2 -k start
             ├─2829 /usr/sbin/apache2 -k start
             └─2830 /usr/sbin/apache2 -k start

Mar 06 14:54:49 apache systemd[1]: Starting The Apache HTTP Server...
Mar 06 14:54:49 apache apachectl[2824]: AH00558: apache2: Could not reliably determine the server's>
Mar 06 14:54:49 apache systemd[1]: Started The Apache HTTP Server.

Il servizio è di stile nowait: vengono lanciati un numero di processi figli, pronti a ricevere e gestire connessioni da client.

Il numero di processi figli varia dinamicamente col numero statistico di richieste da un minimo a un massimo, entrambi configurabili.

Controllo di Apache

Controllo tramite systemd

In un Linux completo il servizio è gestito da systemd, col comando systemctl:

  • sudo systemctl start apache2 - lancia il servizio
  • sudo systemctl stop apache2 - ferma il servizio
  • sudo systemctl enable apache2 - abilita il servizio, cioè lo lancia automaticamente al prossimo boot
  • sudo systemctl disable apache2- disabilita il servizio, cioè NON lo lancia automaticamente al prossimo boot
  • sudo systemctl status apache2 - da un rapporto sullo stato del servizio

Controllo tramite apache2 o apache2ctl

In un sistema ove systemd è assente, il server apache si può controllare col comando apache2.

La sintassi si ottiene chiedendo aiuto:

apache2 -h
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]

Si può usare questo comando per avere la versione di Apache:

apache2 -v
Server version: Apache/2.4.52 (Ubuntu)
Server built:   2023-10-26T13:44:44

Esiste anche il comando apache2ctl, che ha le stesse funzionalità di controllo di apache2.

Il comando apache2ctl, a differenza di apache2, legge le variabili d'ambiente di Apache. In molti casi è da preferirsi.

Verifichiamo l'accessibilità della pagina principale del sito, aprendo un browser a localhost.

La pagina è complessa e informativa.


Installazione su Docker Alpine Linux

Lanciamo un contenitore Alpine:

docker run -d --name alp -p 8888:80 alpine sleep 1000000

Mappiamo la porta 80 del contenitore alla porta 8888 dello host per evitare collisioni con l'installazione precedente di Apache sullo host.

Colleghiamoci al contenitore:

docker exec -ti alp sh

Installiamo Apache:

apk add apache2 apache2-utils

Il comando di controllo è httpd, con la stessa sintassi di apache2 sulla versione Ubuntu.

Questo comando di controllo è indispensabile, poichè il contenitore Alpine non ha systemd.

Lanciamo Apache:

httpd -k start

Da un warning sistemabile in seguito con la variazione di configurazione. Anche la versione Ubuntu da lo stesso warning, ma non è comparso a video, bensi inserito in un log appropriato.

Controlliamo la partenza:

ps wax
PID   USER     TIME  COMMAND
    1 root      0:00 sleep 1000000
   22 root      0:00 httpd -k start
   23 apache    0:00 httpd -k start
   24 apache    0:00 httpd -k start
   25 apache    0:00 httpd -k start
   26 apache    0:00 httpd -k start
   27 apache    0:00 httpd -k start
   29 apache    0:00 httpd -k start
   50 root      0:00 sh
   55 root      0:00 ps wax

Controlliamo la versione:

httpd -v
Server version: Apache/2.4.58 (Unix)
Server built:   Nov 24 2023 15:41:14

Accediamo alla pagina principale con curl:

apk add curl
curl localhost
<html><body><h1>It works!</h1></body></html>

E' molto più semplificata.

Usciamo dal contenitore:

exit

Possiamo accedere dallo host alla pagina web principale offerta dal contenitore Alpine, aprendo un browser alla URL localhost:8888, oppure col comando:

curl localhost:8888