¿Existe un servidor web ligero que sirva contenido dinámico?

21

Estoy construyendo una imagen con un servidor Nagios. Uno de los problemas de la frambuesa pi es que la memoria es bastante pequeña en la frambuesa pi. Así que usaré una interfaz ligera basada en php-apc en lugar de la estándar.

Me preguntaba qué servidor web ligero se recomienda usar.

Estaba considerando un servidor web mínimo que puede hacer php y proporcionar SSL. Estaba pensando en Apache2 o Nginx. Aunque creo que Apache aún superará a Nginx ya que el contenido es dinámico.

Lucas Kauffman
fuente
1
Nginx superará fácilmente a Apache.
Alex Chamberlain
@AlexChamberlain en contenido estático, pero no en dinámico.
Lucas Kauffman el
55
Reclamación. Depende de lo que entiendas por rendimiento. Nginx usará menos memoria, perderá menos y servirá archivos (estáticos) más rápido. En mi experiencia (limitada, pero técnica), el contenido dinámico se sirve más rápido o más rápido que Apache. Dado el perfil de memoria de Nginx, funcionará mucho mejor en una Raspberry Pi. La ventaja de Apache, aunque no aquí, es que es más estable y hay técnicos más experimentados.
Alex Chamberlain
Ni siquiera consideraría Apache en 256 MB a menos que tengas una configuración muy complicada que nginx o lighttpd no puedan administrar
John La Rooy

Respuestas:

17

La verdadera pregunta aquí es "¿Necesita todas las funciones que proporciona Apache?" (o, lo que es más importante, "¿Está dispuesto a utilizar la memoria para estas funciones?"): puede compilar un Apache + mod_perl o mod_php MUY despojado para ejecutar su interfaz web Nagios (o un apache Über-Stripped que solo ejecuta los CGI de Perl), pero incluso en una forma minimalista, Apache probablemente necesitará más memoria que nginx para hacer el mismo trabajo: simplemente no fue creado para ser pequeño.

Para estar 100% seguro de que es posible que desee hacer un horneado (compile nginx y Apache y vea cuál consume menos RAM), pero mi experiencia en servidores "normales" me dice que nginx es probablemente la mejor opción para una memoria baja configuración: renuncia a algo de la flexibilidad de Apache, pero si no lo necesita de todos modos (y la mayoría de los sitios no ) nunca notará la diferencia.


Rendimiento (tiempo) sabio Dudo que esté limitado por su servidor web. Dejando a un lado todos los puntos de referencia inventados, si está haciendo suficiente volumen donde el rendimiento del motor del servidor distribuyendo las páginas es tan crítico que probablemente esté yendo. para hornear tu Raspberry Pi (y realmente, ¿cuántas personas verán tus datos de monitoreo a la vez? :-).
Es prácticamente un axioma que puede optimizar un sistema por espacio o tiempo, pero nunca por ambos, y en un espacio Raspberry Pi es probablemente su restricción limitante.

voretaq7
fuente
Soy escéptico de que Apache sea mucho más poderoso que Nginx en estos días.
Alex Chamberlain
@AlexChamberlain Si lees mi publicación cuidadosamente, notarás que nunca usé la palabra powerful(porque es un término indefinido). Dije flexible(refiriéndome a cuántas maneras se puede configurar el servidor básico para satisfacer una necesidad). Esto no pretende reflejar mal en ninguno de los servidores: ambos son excelentes piezas de código, pero tienen objetivos de diseño muy diferentes. Apache está diseñado para ser todo para todas las personas: un camión en el que puede empacar toda su casa. nginx está diseñado para ser pequeño y rápido: un automóvil deportivo, pero no puede llevar a la esposa, los hijos, los suegros y el perro de la familia.
voretaq7
Creo que Nginx está creciendo ... ahora es al menos un hatchback y está creciendo todo el tiempo. Puede admitir todos los lenguajes dinámicos principales de una forma u otra, admite SSL y SPDY está actualmente en Beta.
Alex Chamberlain
15

Nginx

Tengo algunas buenas experiencias con Nginx como servidor web. Lo uniría con un marco ligero de wsgi como botella o matraz para el desarrollo rápido de aplicaciones en Python.

Sin embargo, no espere que maneje más de 10 solicitudes por segundo :)

Instalación

Nginx está en los repositorios Debian / Raspbian y Arch, por lo que se puede instalar con un solo comando.

Arco

sudo pacman -Sy nginx

Debian / Raspbian

sudo apt-get install nginx

Configuración

Hay muchos ejemplos de configuración en toda la web y una explicación detallada probablemente esté fuera del alcance de esta pregunta. Hay muchos ejemplos en el Wiki de Nginx y la lista de correo es muy útil.

Como mencionó PHP, le interesará saber que el /etc/nginx/nginx.confarchivo estándar contiene un ejemplo de PHP.

John La Rooy
fuente
Amo a Nginx. Muy fácil de ampliar utilizando su sistema modular.
Alex Chamberlain
1
Puede que haya ampliado un poco tu respuesta, ¿espero que no te importe?
Alex Chamberlain
1

node.js

Puede usar node.js para crear un servidor web light waight. Consulte el siguiente ejemplo del sitio de tutorial 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/');

El código anterior es un script java para que pueda escribir su lógica de generación de código dinámico en un script java y comenzar a usarlo en poco tiempo.

Deberá descargar y configurar node.js desde el enlace: http: //nodejs.org/ para Windows o cualquier plataforma que prefiera utilizar.

Inicie el servidor web con el comando:

node hello.js
rashid.noorani
fuente
¿Pero Node.js habla php?
Lucas Kauffman
Node.JS se usa en otros contextos. No funciona bien como servidor independiente porque todo el código es C ++. ¡PERO! Eso es genial porque puedes usar el nodo para acceder DIRECTAMENTE a GPIO y al resto del hardware de bajo nivel usando node.js '+1 para variar ... Pero aún necesitas un front end como apache / lighttpd / iis para servir contenido
Piotr Kula
@LucasKauffman No, no es realmente un servidor web, sino una aplicación web.
Alex Chamberlain
1
Bienvenido a Stack Exchange. Buena respuesta, pero me temo que he votado negativamente porque no creo que resuelva la pregunta. El OP quería PHP y los futuros lectores probablemente querrán un servidor que sea un poco más capaz.
Alex Chamberlain
1
Estoy ejecutando Nagios, no estoy desarrollando mi propia aplicación: p
Lucas Kauffman
0

Tal vez pueda echar un vistazo a lo que otras personas han usado en cajas de gama baja .

Básicamente, es lighttpd + php-fcgi. Lighttpd es realmente ligero y php-fcgi se puede configurar para usar solo un poco de memoria. Lo configuré en un cuadro VPS de 64 MB (no en nagios, sino en CMS).

Además, no sé si también necesita optimizar MySQL para usar la menor cantidad de memoria posible .

Puede ayudarte, puede que no. Todavía tengo que empezar a usar mi Raspi :)

Zlatko
fuente
0

Estoy usando una combinación de Nginx / Passenger para ejecutar el pi.gadgetoid.com basado en Ruby 24/7 en un Raspberry Pi de 512Mb. Esto supera drásticamente la configuración Thin / Apache que estaba usando antes. Este es un sitio web público de tráfico razonablemente elevado, aunque he hecho muchas trampas usando Cloudflare (un proxy de almacenamiento en caché básicamente) para lidiar con la mayor parte de ese volumen.

Estoy bastante seguro de que esta configuración también se ubicaría cómodamente en un Pi de 256 MB, pero tuve problemas para compilar los módulos Passenger y Nginx; topando con limitaciones de memoria.

Sé que no es una solución PHP, y probablemente me reprenderán por sugerir una respuesta tangencial; pero si está buscando que el Pi empuje los límites de su conocimiento, y está haciendo esto para algunos ajustes casuales, le sugiero encarecidamente que busque a Ruby y Sinatra. Tendrás un odio hiriente por PHP en un par de semanas.

En general, no tendrá muchos problemas para ejecutar una pila web PHP / Apache en un servidor de 256 MB. He hecho esto para sitios mucho más grandes en una capacidad profesional en alojamiento basado en la nube. Cuando MySQL se involucra, las cosas se ponen feas. Ejecutar una pila LAMP completa en 256 MB es doloroso, por decir lo menos, pero no imposible para volúmenes de tráfico bajos.

Phil Howard
fuente