Piattaforme

Apache è disponibile per Windows, Mac, Linux ed altri sistemi operativi. Esamineremo qui il caso Libux.

Lo Apache Web Server moderno, viene in due varianti maggiori:

  • versione Debian/Ubuntu - installata di default su piattaforme hardware e macchine virtuali
    • disponibile per tutte le distribuzioni Linux
    • completa e complessa
    • installata con apt install apache2
    • gestita come servizio standard di systemctl, service o init
  • versione Unix - preferita dalle immagini Docker
    • ridotta a pochi componenti indispensabili
    • eventualmente estendibile con pacchetti aggiuntivi
    • controllata con comandi manuali, httpd o apachectl

Vista l'importabza del mondo Docker negli applicativi distribuiti moderni, è necessario considerare entrambe le versioni.

Hanno metodi e comandi di amministrazione diversi, anche se la filosofia di base è la stessa.

Le versioni Docker possono mancare di alcuni features più complessi della versione HW/VM.

La differenza si nota nell'organizzazione della directory di configurazione.

Configurazione Debian/Ubuntu

Installata da gestione pacchetti di sistema.

Configurazione in: /etc/apache2.

Struttura:

.
├── apache2.conf
├── conf-available
│   ├── ...
│   └── serve-cgi-bin.conf
├── conf-enabled
│   ├── ...
│   └── serve-cgi-bin.conf -> ../conf-available/serve-cgi-bin.conf
├── envvars
├── magic
├── mods-available
│   ├── ...
│   └── xml2enc.load
├── mods-enabled
│   ├── ...
│   └── status.load -> ../mods-available/status.load
├── ports.conf
├── sites-available
│   ├── 000-default.conf
│   └── default-ssl.conf
└── sites-enabled
    └── 000-default.conf -> ../sites-available/000-default.conf

Controllato con apache2ctl, ma restart da systemctl o altro gestore di servizi.

Gestione dei moduli con comandi di abilitazione e disabilitazione.

Configurazione Docker Alpine

Immagine: httpd:2.4-alpine.

Configurazione in: /usr/local/apache2.

Struttura:

.
|-- bin
|   |-- ab
|   |-- apachectl
|   |-- apxs
|   |-- checkgid
|   |-- dbmmanage
|   |-- envvars
|   |-- envvars-std
|   |-- fcgistarter
|   |-- htcacheclean
|   |-- htdbm
|   |-- htdigest
|   |-- htpasswd
|   |-- httpd
|   |-- httxt2dbm
|   |-- logresolve
|   |-- rotatelogs
|   `-- suexec
|-- build
|-- cgi-bin
|-- conf
|   |-- extra
|   |   |-- httpd-autoindex.conf
|   |   |-- httpd-dav.conf
|   |   |-- httpd-default.conf
|   |   |-- httpd-info.conf
|   |   |-- httpd-languages.conf
|   |   |-- httpd-manual.conf
|   |   |-- httpd-mpm.conf
|   |   |-- httpd-multilang-errordoc.conf
|   |   |-- httpd-ssl.conf
|   |   |-- httpd-userdir.conf
|   |   |-- httpd-vhosts.conf
|   |   `-- proxy-html.conf
|   |-- httpd.conf
|   |-- magic
|   |-- mime.types
|   `-- original
|-- error
|-- htdocs
|-- icons
|-- include
|-- logs
`-- modules

File di configurazione principale: /usr/local/apache2/conf/httpd.conf.

Si aggiungono configurazioni di virtual hosts, proxy, ecc. ponendole in: /usr/local/apache2/conf/extra.

Controllato con: apachectl.

Configurazione Docker Ubuntu

Immagine: httpd:2.4.

Più pesante dell'immagine Alpine. Mancano numerose utilities come ip, ping, vi, ecc. - ma sono installabili.

Configurazione in /usr/local/apache2.

Struttura uguale a quella di Docker Alpine.

Controllato con: apachectl.

Configurazione Manuale su Docker Alpine

Lanciare un contenitore Alpine e collegarsi:

docker run -d --name alp alpine sleep 1000000
docker exec -ti alp sh

Installare menualmente Apache di base:

apk add apache2 apache2-utils

Immagine molto leggera.

Configurazione in: /etc/apache2.

Struttura:

.
├── conf.d
│   ├── default.conf
│   ├── info.conf
│   ├── languages.conf
│   ├── mpm.conf
│   └── userdir.conf
├── httpd.conf
├── magic
└── mime.types

Si possono aggiungere pacchetti che ne estendono le funzionalità.

File di configurazione principale: /etc/apache2/httpd.conf

Si aggiungono configurazioni di virtual hosts, proxy, ecc. ponendole in: /etc/apache2/conf.d.

I moduli si gestiscono a mano commentandoli o scommentandoli nel file di configurazione principale.

Controllato con httpd, incluso i restart.