Esiste un server Web molto conservativo nell'utilizzo delle risorse e nell'ingombro della memoria. Quel server è noto come lighttpd (pronunciato "lighty"). L'impostazione di un'istanza lighttpd può essere un po' complicata, quindi questo tutorial funge da guida chiara su come configurare correttamente un server lighttpd su Linux.
La comprensione del file di configurazione per ciascuna istanza del server Web è fondamentale per eseguire correttamente lighttpd. Questo tutorial tratterà anche l'aggiunta del supporto PHP per i tuoi server web
Opzioni di configurazione di Lighttpd
Dopo aver installato lighttpd, inizieremo creando un file che definisce le impostazioni del server web. Chiamiamo questo 'example.conf' nella home directory. Copieremo semplicemente il file di configurazione predefinito che si trova in /etc/lighttpd. Questo è un file ".conf" standard, quindi si applicano le normali regole di sintassi, ovvero, ad esempio, tutti i caratteri dopo "#" vengono trattati come commenti.
$ cp /etc/lighttpd/lighttpd.conf ~/webservers/example.conf $ vim ~/webservers/example.conf # Or whatever editor you wish
Moduli server
Il campo "server.modules" contiene un array di moduli utilizzati dal server. Aggiungiamo ora altri due alla lista:'mod_fastcgi' e 'mod_setenv'. Mod_fastcgi ci permetterà di aggiungere il supporto PHP. Mod_setenv ci permetterà di passare un header che permetterà al server di fare richieste ad altri domini, utile per caricare librerie esterne.
NOTA:se vuoi includere anche 'mod_status' nell'elenco, metti 'mod_setenv' prima di esso.
Impostazioni server
Esaminiamo la seguente sezione:
server.document-root = "/var/www/html" server.upload-dirs = ( "/var/cache/lighttpd/uploads" ) server.errorlog = "/var/log/lighttpd/error.log" server.pid-file = "/var/run/lighttpd.pid" server.username = "www-data" server.groupname = "www-data" server.port = 80
Questi campi sono davvero autoesplicativi. Queste sono le impostazioni predefinite che si trovano nel file di configurazione in /etc/lighttpd . Poiché si tratta di un nuovo file, copiato dal file di configurazione predefinito, possiamo modificare quello che vogliamo. La radice del documento specifica il livello di directory più in alto visibile al server web. Il campo 'upload-dirs' contiene una serie di directory in cui archiviare i caricamenti. Nome utente e nome del gruppo corrispondenti a quelli trovati sul tuo sistema. Per impostazione predefinita, l'utente "www-data" è il proprietario dei file creati da questa istanza di lighttpd. Dovrai assicurarti che il registro degli errori sia scrivibile da "www-data" (trattato un po' più avanti).
In questa configurazione, cambiamo la directory della radice del documento in '/var/www/mysite/html' .Successivamente cambia il registro degli errori con un nome diverso:'/var/log/lighttpd/mysite/error.log'. Quindi cambia la porta in 8080, se lo desideri.
Supporto FastCGI e "setenv"
Dato che abbiamo aggiunto questi due moduli in:dovremo inserire le configurazioni nel file sotto le impostazioni del server (se gli eseguibili per 'php' e 'php-cgi' si trovano altrove, specificali invece):
fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php.socket" )))cgi.assign = ( ".php" => "/usr/bin/php" )
Quello che abbiamo fatto è stato detto a lighttpd che se uno script PHP è stato richiesto dal server, dovrebbe avviare l'interprete PHP sul computer per elaborarlo. Il modulo FastCGI è ciò che utilizziamo per eseguire script PHP.
Se è necessario consentire la condivisione delle risorse tra origini (CORS), aggiungere questa riga di seguito. setenv.add-response-header =( “Access-Control-Allow-Origin” => “*”) Per specificare un solo dominio, sostituisci “*” con il dominio desiderato.
Ecco il contenuto del file di configurazione:
Come installare PHP
Se desideri il supporto per PHP, dovrai installare PHP, in particolare i pacchetti "php" e "php-cgi". Per il supporto MySQL, è necessario installare anche 'php-mysql'. Abbiamo già configurato il server web nel file di configurazione per consentire l'esecuzione del codice PHP.
Alcuni passaggi extra
File di registro
Poiché la posizione del file di registro che abbiamo specificato nella configurazione è in una cartella che non esiste ancora, lighttpd genererà un errore durante l'esecuzione. Per prima cosa, dovremo creare la cartella:
$ sudo mkdir /var/log/lighttpd/mysite
Quindi, crea il file di registro, quindi modifica la proprietà dell'utente e del gruppo del file nell'utente "www-data" come specificato nel file di configurazione.
$ sudo touch /var/log/lighttpd/mysite/error.log $ sudo chown www-data /var/log/lighttpd/mysite/error.log $ sudo chgrp www-data /var/log/lighttpd/mysite/error.log
Quindi proviamo a eseguire il server utilizzando il nostro file di configurazione:
$ sudo lighttpd -f mysite.conf
Copia il file indice
Non dimenticare di copiare il file di indice che si trova nella directory /var/www/html nella tua directory principale:
$ sudo cp /var/www/html/index.lighttpd.html /var/www/html/mysite/index.html
Eseguire il server
Si spera che lighttpd si avvii in background senza errori di stampa sullo schermo. Tuttavia, ho riscontrato un problema con uno dei comandi "include_shell" nella configurazione:
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
Se riscontri anche questo problema, un'opzione è disabilitarlo (apponendo un "#" all'inizio della riga).
#include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
Se vuoi o hai bisogno di aggiustarlo, l'altra opzione è aprire lo script Perl specificato nel comando include_shell e cambiare una delle stringhe.
Trova questa riga:
my $enabled = “conf-enabled/*.conf”;
Il problema è che questa è una directory a cui fa riferimento questo script, ma è incompleta. Quello che ho fatto è stato aggiungere dove diceva che si trovava la directory alla variabile $enabled.
my $enabled = “/etc/lighttpd/conf-enabled/*.conf”;
Applicazione delle modifiche
Dopo aver modificato il file di configurazione per un particolare server, dovresti uccidere quell'istanza di lighttpd e riavviarla. Il PID di quel server può essere facilmente trovato usando il comando "ps".
Se hai solo un'istanza di lighttpd in esecuzione, esegui semplicemente il comando "killall".
$ sudo killall lighttpd
Visualizza nel tuo browser
Per verificare che il tuo server sia attivo, funzionante e funzionante, apri il tuo browser web (qualunque esso sia) e digita nella barra degli indirizzi "localhost:8080" o "127.0.0.1:8080". Se viene visualizzata una pagina con il titolo "Pagina segnaposto", il tuo server è in esecuzione e fornisce pagine HTML correttamente.
Risoluzione dei problemi
Se riscontri problemi quando avvii il server, o anche dopo, potrebbe essere necessario risolvere i problemi. Ecco alcuni esempi e come superare i problemi che si trovano qui.
File scaricati anziché gestiti correttamente
Se hai provato ad aprire la tua pagina index.html nel tuo browser web e hai preso l'iniziativa di scaricare il file invece di eseguirne il rendering, potresti non avere i tuoi tipi MIME configurati correttamente.
Assicurati che lo script Perl per configurarli sia in esecuzione.
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
Questo comando configura il tuo server web per gestire in modo appropriato diversi tipi di file.
Script PHP non in esecuzione
Assicurati di aver installato PHP e che il file di configurazione abbia le impostazioni descritte in questo tutorial.
Errori HTTP 500
Questi errori richiedono ulteriori indagini. Un colpevole potrebbe essere un errore nel codice PHP. Qualunque sia la causa, leggi il file di registro per scoprire cosa è successo.
Conclusione
Dovresti avere un server web correttamente configurato che funzioni correttamente con lighttpd. Se hai bisogno di più di un lighttpd istanza in esecuzione, assicurarsi che la porta specificata in ciascun file di configurazione sia diversa l'una dall'altra, altrimenti lighttpd genererà un errore.
Un piccolo consiglio sulla qualità della vita
Puoi gestire i file senza eseguire editor come root concedendoti la piena proprietà della directory:
$ sudo chown -R your_username /var/www/html/mysite $ sudo chgrp -R your_username /var/www/html/mysite