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
oapachectl
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.