Esiste un server web leggero che servirà contenuti dinamici?


21

Sto costruendo un'immagine con un server Nagios. Uno dei problemi di Raspberry Pi è che la memoria è abbastanza piccola su Raspberry Pi. Quindi userò un'interfaccia leggera basata su php-apc anziché su quella standard.

Mi chiedevo quale server web leggero si consiglia di utilizzare?

Stavo prendendo in considerazione un server web minimo in grado di fare php e fornire SSL. Stavo pensando ad Apache2 o Nginx. Anche se penso che Apache supererà comunque Nginx poiché il contenuto è dinamico.


1
Nginx supererà facilmente Apache.
Alex Chamberlain,

@AlexChamberlain su contenuto statico, ma non su dinamico.
Lucas Kauffman,

5
Richiesta. Dipende da cosa intendi per prestazione. Nginx utilizzerà meno memoria, avrà meno perdite e servirà i file (statici) più rapidamente. Nella mia esperienza (limitata, ma tecnica), i contenuti dinamici vengono offerti in modo rapido o più veloce di Apache. Dato il profilo di memoria di Nginx, funzionerà molto meglio su un Raspberry Pi. Il vantaggio di Apache, sebbene non qui, è che è più stabile e ci sono tecnici più esperti.
Alex Chamberlain,

Non avrei nemmeno in considerazione Apache in 256MB meno che non abbiate un complicato configurazione che nginx o lighttpd Non è possibile gestire
John La Rooy

Risposte:


17

La vera domanda qui è "Hai bisogno di tutte le funzionalità fornite da Apache?" (o, ancora più importante, "Sei disposto a utilizzare la memoria per queste funzionalità?") - Puoi compilare in modo personalizzato un Apache MOLTO ridotto + mod_perl o mod_php per eseguire la tua interfaccia web di Nagios (o un apache Über-Stripped che esegue solo i CGI perl), ma anche in una forma minimalista Apache probabilmente richiederà più memoria di nginx per fare lo stesso lavoro - Non è stato progettato per essere piccolo.

Per essere sicuro al 100% potresti voler fare un bake-off (compilare sia nginx che Apache e vedere quale mangia meno RAM), ma la mia esperienza su server "normali" mi dice che nginx è probabilmente la scelta migliore per una memoria insufficiente configurazione: abbandoni un po 'della flessibilità di Apache, ma se non ti servisse comunque (e la maggior parte dei siti no ) non noterai mai la differenza.


Per quanto riguarda le prestazioni (tempo), dubito che sarai limitato dal tuo server web - A parte tutti i benchmark inventati, se stai facendo abbastanza volume in cui le prestazioni del motore del server che distribuiscono le pagine sono così importanti che probabilmente stai andando per cuocere il tuo Raspberry Pi (e davvero, quante persone guarderanno i tuoi dati di monitoraggio contemporaneamente? :-).
È praticamente un assioma che puoi ottimizzare un sistema per spazio o tempo, ma mai entrambi - e su uno spazio Raspberry Pi è probabilmente il tuo limite limitante.


Sono scettico sul fatto che Apache sia molto più potente di Nginx in questi giorni.
Alex Chamberlain,

@AlexChamberlain Se leggi attentamente il mio post noterai che non ho mai usato la parola powerful(perché è un termine indefinito). Ho detto flexible(facendo riferimento a quanti modi il server core bare-bones può essere configurato per soddisfare un'esigenza). Questo non è pensato per riflettere male su nessuno dei server: entrambi sono eccellenti pezzi di codice, ma hanno obiettivi di progettazione molto diversi. Apache è progettato per essere tutto per tutte le persone: un camion in cui puoi imballare tutta la tua casa. nginx è progettato per essere piccolo e veloce: un'auto sportiva, ma non puoi portare con te moglie, figli, suoceri e cane di famiglia.
voretaq7,

Penso che Nginx stia crescendo ... ora è almeno una berlina e cresce continuamente. Può supportare tutte le principali lingue dinamiche in un modo o nell'altro, supporta SSL e SPDY è attualmente in versione beta.
Alex Chamberlain,

15

nginx

Ho avuto delle belle esperienze con Nginx come web server. Lo assocerei a un framework wsgi leggero come una bottiglia o un pallone per un rapido sviluppo di applicazioni in Python.

Non aspettarti che gestisca più di una decina di richieste al secondo :)

Installazione

Nginx si trova nei repository Debian / Raspbian e Arch, quindi può essere installato con un singolo comando.

Arco

sudo pacman -Sy nginx

Debian / Raspbian

sudo apt-get install nginx

Configurazione

Esistono molti esempi di configurazione in tutto il Web e una spiegazione dettagliata è probabilmente al di fuori dell'ambito di questa domanda. Ci sono molti esempi sul Wiki di Nginx e la mailing list è molto utile.

Da quando hai citato PHP, sarai molto interessato a sapere che il /etc/nginx/nginx.conffile standard contiene un esempio di PHP.


Adoro Nginx. Molto facile da espandere usando il suo sistema modulare.
Alex Chamberlain,

1
Potrei aver ampliato un po 'la tua risposta, spero non ti dispiaccia?
Alex Chamberlain,


1

node.js

È possibile utilizzare node.js per creare un server Web Light Waight. Vedi il seguente esempio dal sito tutorial di node.js:

var http = require('http');
  http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.write("Dynamic contents...");
      res.end('Hello World\n');
  }).listen(1337, "127.0.0.1");

console.log('Server running at http://127.0.0.1:1337/');

Il codice sopra è lo script java in modo da poter scrivere la logica di generazione del codice dinamico nello script java e iniziare a usarlo in pochissimo tempo.

Dovrai scaricare e configurare node.js dal link: http: //nodejs.org/ per Windows o qualunque piattaforma tu preferisca usare.

Avviare il server Web utilizzando il comando:

node hello.js

Ma Node.js parla php?
Lucas Kauffman,

Node.JS è utilizzato in altri contesti. Non funziona bene come server autonomo perché tutto il codice è C ++. MA! È fantastico perché puoi usare il nodo per accedere DIRETTAMENTE a GPIO e al resto dell'hardware di basso livello usando la +1 di node.js per varietà .. Ma hai ancora bisogno di un front-end come apache / lighttpd / iis per servire il contenuto
Piotr Kula,

@LucasKauffman No, non è proprio un server web, piuttosto un'applicazione web.
Alex Chamberlain,

1
Benvenuto in Stack Exchange. Bella risposta, ma temo di aver effettuato il downgrade poiché non penso che risolva la domanda. L'OP voleva PHP e i futuri lettori probabilmente vorranno un server un po 'più capace.
Alex Chamberlain,

1
Sto eseguendo Nagios, non sto sviluppando la mia Applicazione: p
Lucas Kauffman,

0

Forse puoi dare un'occhiata a ciò che altre persone hanno usato su scatole di fascia bassa .

Fondamentalmente, è lighttpd + php-fcgi. Lighttpd è davvero leggero e php-fcgi può essere configurato per usare solo un po 'di memoria. L'ho installato su una scatola VPS da 64 MB (non nagios, ma CMS).

Inoltre, non so se è necessario ottimizzare anche MySQL per utilizzare la memoria minima possibile .

Potrebbe aiutarti, no. Devo ancora iniziare a usare il mio Raspi :)



0

Sto usando una combinazione di Nginx / Passenger per eseguire pi.gadgetoid.com basato su Ruby 24/7 su un Raspberry Pi da 512 Mb. Questo supera drasticamente la configurazione Thin / Apache che stavo usando prima. Questo è un sito Web pubblico a traffico piuttosto elevato, anche se ho barato molto usando Cloudflare (sostanzialmente un proxy di cache) per gestire la maggior parte di quel volume.

Sono abbastanza sicuro che questa configurazione si adatterebbe comodamente anche su un Pi da 256 MB, ma ho avuto problemi a compilare i moduli Passenger e Nginx; imbattersi in limiti di memoria.

So che non è una soluzione PHP, e probabilmente sarò rimproverato per aver suggerito una risposta così tangenziale; ma se stai cercando il Pi per spingere i limiti della tua conoscenza e lo stai facendo per un po 'di armeggiamento casuale, ti consiglio vivamente di guardare Ruby e Sinatra. Avrai un odio ribollente per PHP entro un paio di settimane.

In generale non avrai molti problemi a eseguire uno stack Web PHP / Apache su un server da 256 MB. L'ho fatto per siti molto più grandi a titolo professionale sull'hosting basato su cloud. È quando MySQL viene coinvolto che le cose si fanno brutte. Eseguire uno stack LAMP completo su 256 MB è a dir poco doloroso, ma non impossibile per volumi di traffico bassi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.