Per gli sviluppatori web è quasi indispensabile avere un server web per testare i propri lavori.

In questo tutorial vedremo come installare i componenti fondamentali di un server web: Apache, PHP e MySQL su un computer che usa la distribuzione Linux Debian come sistema operativo.

Questo tutorial è dedicato a chi è alle prime armi con Linux e i webserver. Chi invece ha familiarità con l’argomento, troverà la guida un po’ scontata dato che le configurazioni trattate saranno quelle indispensabili a rendere il sistema funzionante.

Il metodo APT

apt è un potente software che agevola l’utente nell’installazione di software e librerie andando a ricercare la versione precompilata da appositi archivi chiamati repository e si occupa di risolvere le dipendenze.

Prima di procedere è necessario avere una linuxbox funzionante, aggiornata e con i repository ufficiali. Do per scontato (o rimando ad una futura guida) sull’installazione e la gestione dei repository di apt.

Installare MySQL

Generalmente è la prima cosa che installo, lanciando il seguente comando:

# apt install mariadb-client mariadb-server openssl

Per mettere in sicurezza la nostra installazione di MariaDB lanciamo:

# mysql_secure_installation

Ci verranno proposte delle domande:

Change the root password? [Y/n] <-- y
New password: <-- Inserisci la nuova password di root di MariaDB
Re-enter new password: <-- Reinseriamo la password di root
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

L’installazione così fatta e il minimo di sicurezza che abbiamo impostato è generalmente sufficiente. Capita però di dover eseguire delle personalizzazioni: il file di configurazione my.cnf si trova sotto /etc/mysql/.

Installazione di Apache Web Server e PHP

Installiamo i pacchetti con

# apt install apache2 apache2-doc apache2-utils libapache2-mod-php php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt  imagemagick libruby libapache2-mod-python php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached libapache2-mod-passenger php7.3-soap php7.3-fpm php7.3-opcache php-apcu

In realtà non servono tutti questi pacchetti, ma generalmente sono librerie che uso spesso e che quindi installo di default.

Nota anche che la versione che sto installando è la 7.3: controlla che la distribuzione che stai utilizzando non stia usando versioni differenti (magari la 7.0 o la 7.2). Lancia da terminale questo comando per la verifica:

# apt search php

Nei risultati del comando appena lanciato, ti accorgerai che diversi pacchetti hanno la versione accanto al nome (come possiamo vedere dal comando di installazione spiegato poco prima).

Fatto questo, lanciamo il seguente comando per abilitare alcuni moduli di Apache: suexec, rewrite, ssl, actions, e include (aggiungi anche dav, dav_fs, e auth_digest se pensoi di usare WebDAV):

# a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers actions proxy_fcgi alias

Una configurazione che consiglio di fare per prevenire attacchi che sfruttano la vulnerabilità HTTPOXY è quella di disabilitare gli header HTTP_PROXY su Apache, globalmente. Per fare questo apriamo da terminale il seguente file

# nano /etc/apache2/conf-available/httpoxy.conf

Qui aggiungiamo il seguente snippet:

<IfModule mod_headers.c>
    RequestHeader unset Proxy early
</IfModule>

quindi abilitiamo il modulo, eseguendo

# a2enconf httpoxy
# systemctl restart apache2