Lighttpd è un server web gratuito, open source e ad alta velocità appositamente progettato per ambienti critici per la velocità. Richiede un ingombro di memoria ridotto rispetto ad altri server Web, come Apache e Nginx e particolarmente veloce per l'esecuzione di applicazioni AJAX. Lighttpd ci permette anche di ospitare applicazioni web scritte in altri linguaggi di programmazione utilizzando le interfacce FastCGI, SCGI e CGI. Lighttpd è la scelta migliore per te se il tuo server ha problemi di carico.
In questo tutorial impareremo come installare Lighttpd su Debian 10 con supporto PHP-FPM e MariaDB e proteggeremo il server web con un certificato Let's Encrypt SSL.
Requisiti
- Un server che esegue Debian 10.
- È stata impostata una password di root sul tuo server.
Userò il nome di dominio example.com in questo tutorial. Sostituisci example.com in tutti i nomi di file e le impostazioni di configurazione con il tuo nome di dominio di seguito.
Per iniziare
Prima di iniziare, dovrai aggiornare il tuo sistema con l'ultima versione. Puoi farlo eseguendo il seguente comando:
apt-get update -y
apt-get upgrade -y
Una volta aggiornato il server, riavvia il server per applicare le modifiche.
Installa Lighttpd
Per impostazione predefinita, Lighttpd è disponibile nel repository predefinito di Debian 10. Puoi installarlo semplicemente eseguendo il seguente comando:
apt-get install lighttpd -y
Al termine dell'installazione, avvia il servizio Lighttpd e abilitalo all'avvio dopo il riavvio del sistema con il seguente comando:
systemctl start lighttpd
systemctl enable lighttpd
Puoi anche controllare lo stato di Lighttpd con il seguente comando:
systemctl status lighttpd
Dovresti ottenere il seguente output:
? lighttpd.service - Lighttpd Daemon Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2019-09-06 02:09:35 EDT; 29s ago Main PID: 4445 (lighttpd) Tasks: 1 (limit: 1138) Memory: 1.4M CGroup: /system.slice/lighttpd.service ??4445 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf Sep 06 02:09:35 debian systemd[1]: Starting Lighttpd Daemon... Sep 06 02:09:35 debian systemd[1]: Started Lighttpd Daemon. Sep 06 02:09:36 debian systemd[1]: /lib/systemd/system/lighttpd.service:6: PIDFile= references path below legacy directory /var/run/, updating lines 1-12/12 (END)
Una volta terminato, puoi procedere al passaggio successivo.
Installa il server MariaDB
Puoi installare il server MariaDB eseguendo il seguente comando:
apt-get install mariadb-server mariadb-client -y
Una volta installato, dovrai proteggere l'installazione di MariaDB. Puoi proteggerlo eseguendo il seguente script:
mysql_secure_installation
Answer all the questions as shown below: Change the root password? [Y/n] n 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
Una volta terminato, puoi procedere al passaggio successivo.
Installa PHP e PHP-FPM
Successivamente, dovrai installare PHP, PHP-FPM e FastCGI sul tuo sistema. Per impostazione predefinita, Debian 10 viene fornito con la versione PHP 7.3. Puoi installarlo semplicemente eseguendo il seguente comando:
apt-get install php php-cgi php-fpm php-mysql -y
Una volta installati tutti i pacchetti, dovrai modificare il file php.ini e impostare cgi.fix_pathinfo su 1. Puoi farlo con il seguente comando:
nano /etc/php/7.3/fpm/php.ini
Modifica la seguente riga:
cgi.fix_pathinfo=1
Salva e chiudi il file quando hai finito.
Per impostazione predefinita, PHP punta al socket UNIX /var/run/php/php7.3-fpm.sock. Quindi, dovrai configurare il pool PHP-FPM per impostare l'ascolto di PHP sul socket TCP.
Puoi farlo modificando il file /etc/php/7.3/fpm/pool.d/www.conf:
nano /etc/php/7.3/fpm/pool.d/www.conf
Trova la riga seguente:
listen = /run/php/php7.3-fpm.sock
E sostituiscilo con la seguente riga:
listen = 127.0.0.1:9000
Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio PHP-FPM per applicare le modifiche alla configurazione:
systemctl restart php7.3-fpm
Successivamente, dovrai modificare il file 15-fastcgi-php.conf:
nano /etc/lighttpd/conf-available/15-fastcgi-php.conf
Trova le seguenti righe:
"bin-path" => "/usr/bin/php-cgi", "socket" => "/var/run/lighttpd/php.socket",
E sostituiscili con i seguenti:
"host" => "127.0.0.1", "port" => "9000",
Salva e chiudi il file quando hai finito. Quindi, abilita sia il modulo FastCGI che FastCHI-PHP con i seguenti comandi:
lighty-enable-mod fastcgi
lighty-enable-mod fastcgi-php
Infine, riavvia il servizio Lighttpd per applicare le modifiche:
systemctl restart lighttpd
Crea host virtuale Lighttpd
Successivamente, dovrai creare un nuovo file host virtuale per testare PHP con Lighttpd. Puoi crearlo con il seguente comando:
nano /etc/lighttpd/conf-available/example.com.conf
Aggiungi le seguenti righe:
$HTTP["host"] == "www.example.com" { server.document-root = "/var/www/html/" server.errorlog = "/var/log/lighttpd/example.com-error.log" }
Salva e chiudi il file quando hai finito. Quindi, abilita l'host virtuale con il seguente comando:
ln -s /etc/lighttpd/conf-available/example.com.conf /etc/lighttpd/conf-enabled/
Quindi, crea un file index.php di esempio nella directory principale del documento Lighttpd con il seguente comando:
nano /var/www/html/index.php
Aggiungi la seguente riga:
<?php phpinfo(); ?>
Salva e chiudi il file. Quindi, cambia la proprietà della directory principale del documento Lighttpd in www-data con il comando seguente:
chown -R www-data:www-data /var/www/html/
Infine, riavvia il servizio Lighttpd per applicare tutte le modifiche alla configurazione:
systemctl restart lighttpd
Sicurezza Lighttpd con Let's Encrypt Free SSL
Innanzitutto, dovrai installare lo strumento Certbot per proteggere il tuo server web con Let's Encrypt. Per impostazione predefinita, l'ultima versione di Certbot non è disponibile nel repository predefinito di Debian 10.
Puoi aggiungere il repository Certbot con il seguente comando:
apt-get install software-properties-common
add-apt-repository ppa:certbot/certbot
Quindi, aggiorna il repository e installa Certbot con il seguente comando:
apt-get update -y
apt-get install certbot -y
Quindi, crea un certificato Let's Encrypt con il seguente comando:
certbot certonly --webroot -w /var/www/html/ -d www.example.com
Ti verrà chiesto di fornire il tuo indirizzo e-mail e di accettare i termini della licenza come mostrato di seguito:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y
Una volta che i certificati sono stati scaricati correttamente, dovresti vedere il seguente output:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2019-12-06. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Successivamente, dovrai combinare sia il certificato che la chiave privata in un unico file. Puoi farlo con il seguente comando:
cat /etc/letsencrypt/live/example.com/cert.pem /etc/letsencrypt/live/example.com/privkey.pem > /etc/letsencrypt/live/example.com/web.pem
Successivamente, dovrai modificare il file dell'host virtuale Lighttpd e definire il percorso del certificato SSL Let's Encrypt.
Puoi farlo con il seguente comando:
nano /etc/lighttpd/conf-enabled/example.com.conf
Modifica il file come mostrato di seguito:
$HTTP["host"] == "www.example.com" { server.document-root = "/var/www/html/" } $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/letsencrypt/live/example.com/web.pem" # Combined Certificate ssl.ca-file = "/etc/letsencrypt/live/example.com/chain.pem" # Root CA server.name = "www.example.com" # Domain Name OR Virtual Host Name server.document-root = "/var/www/html/" # Document Root server.errorlog = "/var/log/lighttpd/example.com_error.log" accesslog.filename = "/var/log/lighttpd/example.com_access.log" } $HTTP["scheme"] == "http" { $HTTP["host"] == "www.example.com" { # HTTP URL url.redirect = ("/.*" => "https://www.example.com$0") # Redirection HTTPS URL } }
Salva e chiudi il file. Quindi riavvia il servizio Lighttpd per applicare le modifiche alla configurazione:
systemctl restart lighttpd
Accedi all'interfaccia Web Lighttpd
Lighttpd è installato e configurato con supporto PHP e PHP-FPM. Ora è il momento di testarlo.
Apri il tuo browser web e digita l'URL https://www.example.com. Verrai reindirizzato alla seguente pagina:
La pagina sopra indica che PHP funziona bene con FastCGI.
Conclusione
Congratulazioni! hai installato e configurato correttamente il server Web Lighttpd con supporto PHP-FPM e FastCGI su Debian 10. Ora puoi ospitare il tuo server Web con facilità. Per ulteriori informazioni, visita la pagina della documentazione ufficiale di Lighttpd su Lighttpd Doc.