Existe um servidor da web leve que servirá conteúdo dinâmico?

21

Estou construindo uma imagem com um servidor Nagios. Um dos problemas do raspberry pi é que a memória é muito pequena no raspberry pi. Então, eu vou usar uma interface leve baseada em php-apc em vez da interface padrão.

Eu queria saber qual servidor da web leve é ​​recomendado para usar?

Eu estava pensando em um servidor web mínimo que pode fazer php e fornecer SSL. Eu estava pensando em Apache2 ou Nginx. Embora eu ache que o Apache ainda superará o Nginx, pois o conteúdo é dinâmico.

Lucas Kauffman
fonte
1
O Nginx superará facilmente o Apache.
Alex Chamberlain
@AlexChamberlain no conteúdo estático, mas não no dinâmico.
Lucas Kauffman
5
Afirmação. Depende do que você quer dizer com desempenho. O Nginx utilizará menos memória, vazará menos e exibirá arquivos (estáticos) mais rapidamente. Na minha experiência (limitada, mas técnica), o conteúdo dinâmico é exibido como mais rápido ou mais rápido que o Apache. Dado o perfil de memória do Nginx, ele terá um desempenho muito melhor em um Raspberry Pi. A vantagem do Apache - embora não esteja aqui - é mais estável e há técnicos mais experientes.
Alex Chamberlain
Eu não iria sequer considerar Apache em 256 a menos que tenha um muito complicado de configuração que nginx ou lighttpd não pode gerenciar
John La Rooy

Respostas:

17

A verdadeira questão aqui é "Você precisa de todos os recursos que o Apache fornece?" (ou mais importante, "Você está disposto a usar memória para esses recursos?") - Você pode compilar um Apache + mod_perl ou mod_php MUITO despojado para executar a interface da web do Nagios (ou um apache Über-Stripped que apenas executa os CGIs perl), mas mesmo em uma forma minimalista, o Apache provavelmente precisará de mais memória que o nginx para fazer o mesmo trabalho - ele não foi desenvolvido para ser pequeno.

Para ter 100% de certeza, você pode querer fazer um bake-off (compile o nginx e o Apache e veja qual consome menos RAM), mas minha experiência em servidores "normais" me diz que o nginx é provavelmente a melhor escolha para uma memória com pouca memória configuração: você dá um pouco da flexibilidade do Apache, mas se você não precisa isso de qualquer maneira (e a maioria dos sites não fazem ) você nunca vai notar a diferença.


Em termos de desempenho (tempo), duvido que você seja limitado pelo seu servidor da Web - Todos os benchmarks inventados à parte, se você estiver fazendo volume suficiente, onde o desempenho do mecanismo do servidor que distribui as páginas é tão crítico que provavelmente você está indo estar assando seu Raspberry Pi (e, na verdade, quantas pessoas estarão vendo seus dados de monitoramento de uma só vez? :-).
É praticamente um axioma que você pode otimizar um sistema para o espaço ou o tempo, mas nunca para os dois - e em um espaço Raspberry Pi é provavelmente a sua limitação.

voretaq7
fonte
Estou cético de que o Apache seja muito mais poderoso que o Nginx atualmente.
Alex Chamberlain
@AlexChamberlain Se você ler minha postagem com atenção, notará que nunca usei a palavra powerful(porque é um termo indefinido). Eu disse flexible(referindo-se a quantas maneiras o servidor principal básico pode ser configurado para atender a uma necessidade). Isso não deve refletir mal em nenhum dos servidores: ambos são excelentes trechos de código, mas têm objetivos de design muito diferentes. O Apache foi projetado para ser tudo para todas as pessoas - um caminhão no qual você pode arrumar sua casa inteira. O nginx foi projetado para ser pequeno e rápido - um carro esportivo, mas você não pode levar a esposa, os filhos, os sogros e o cachorro da família.
voretaq7
Eu acho que o Nginx está crescendo ... agora é pelo menos um hatchback e está crescendo o tempo todo. Ele pode suportar todos os principais idiomas dinâmicos de uma maneira ou de outra, suporta SSL e o SPDY está atualmente na versão Beta.
Alex Chamberlain
15

Nginx

Eu tenho algumas boas experiências com o Nginx como servidor da web. Eu o associaria a uma estrutura wsgi leve , como bottle ou flask, para rápido desenvolvimento de aplicativos em Python.

Mas não espere que ele lide com mais de 10 solicitações por segundo :)

Instalação

O Nginx está nos repositórios Debian / Raspbian e Arch, portanto, pode ser instalado com um único comando.

Arco

sudo pacman -Sy nginx

Debian / Raspbian

sudo apt-get install nginx

Configuração

Existem muitos exemplos de configuração em toda a Web e uma explicação detalhada provavelmente está além do escopo desta pergunta. Existem muitos exemplos no Wiki do Nginx e a lista de discussão é muito útil.

Desde que você mencionou o PHP, ficará muito interessado em saber que o /etc/nginx/nginx.confarquivo padrão contém um exemplo de PHP.

John La Rooy
fonte
Eu amo o Nginx. Muito fácil de expandir usando seu sistema modular.
Alex Chamberlain
1
Eu posso ter expandido sua resposta um pouco, espero que você não se importe?
Alex Chamberlain
13

lighttpd

Um excelente servidor da Web com poucos recursos é o lighttpd , que suporta PHP e SSL. Ele parece estar trabalhando com PHP em um Raspberry Pi, e é muito possível configurar lighttpd para apoiar SecureHTTP .

Avanço
fonte
O lighttpd é outra boa opção. A popularidade do nginx eclipsou-lo em um monte de lugares, mas é definitivamente um respeitável (e pequenos) servidor
voretaq7
lighttpd + php-fcgi pode ser ótimo.
Zlatko
1

node.js

Você pode usar o node.js para criar um servidor da web light waight. Veja o exemplo a seguir no site do 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/');

O código acima é um script java, para que você possa escrever sua lógica de geração dinâmica de código no script java e começar a usá-lo rapidamente.

Você precisará fazer o download e configurar o node.js no link: http: //nodejs.org/ para Windows ou em qualquer plataforma que você preferir usar.

Inicie o servidor da web usando o comando:

node hello.js
rashid.noorani
fonte
Mas o Node.js fala php?
Lucas Kauffman
O Node.JS é usado em outros contextos. Ele não funciona bem como um servidor autônomo, porque todo o código é C ++. MAS! Isso é ótimo porque você pode usar o node para acessar DIRETAMENTE o GPIO e o restante do hardware de baixo nível usando o node.js '+1 para variar. Mas você ainda precisa de um front end como o apache / lighttpd / iis para fornecer conteúdo
Piotr Kula
@LucasKauffman Não - não é realmente um servidor web, mas um aplicativo web.
Alex Chamberlain
1
Bem-vindo ao Stack Exchange. Boa resposta, mas receio que tenha diminuído o voto porque acho que não resolve a questão. O OP queria PHP e futuros leitores provavelmente desejarão um servidor um pouco mais capaz.
Alex Chamberlain
1
Estou executando o Nagios, não desenvolvendo meu próprio aplicativo: p
Lucas Kauffman
0

Talvez você possa dar uma olhada no que outras pessoas usaram em caixas low-end .

Basicamente, é lighttpd + php-fcgi. O Lighttpd é realmente leve e o php-fcgi pode ser configurado para usar um pouco de memória. Eu o configurei na caixa VPS de 64 MB (não nagios, mas CMS).

Também não sei se você também precisa otimizar o MySQL para usar o mínimo de memória possível .

Pode ajudá-lo, não pode. Ainda estou para começar a usar o meu Raspi :)

Zlatko
fonte
0

O Mako Server e o BarracudaDrive são derivados da mesma fonte e esses dois servidores podem fornecer conteúdo gerado dinamicamente (usando a linguagem de script Lua) 70% mais rápido que o Apache pode fornecer conteúdo estático. Os resultados do benchmarking estão aqui: http://barracudadrive.com/blog/2013/03/Apache-Nginx-Lighttpd-Monkey-and-BarracudaDrive-Speed-Test

O servidor Mako pode ser encontrado aqui: http://makoserver.net/

Vai
fonte
0

Estou usando uma combinação de Nginx / Passenger para executar o pi.gadgetoid.com baseado em Ruby 24/7 em um Raspberry Pi de 512Mb. Isso supera drasticamente a configuração do Thin / Apache que eu estava usando antes. Este é um site público de tráfego razoavelmente alto, embora eu tenha trapaceado bastante usando o Cloudflare (um proxy de cache basicamente) para lidar com a maior parte desse volume.

Tenho certeza de que essa configuração também seria compatível com um Pi de 256 MB, mas tive problemas para compilar os módulos Passenger e Nginx; executando em limitações de memória.

Sei que não é uma solução PHP, e provavelmente vou ser repreendido por sugerir uma resposta tão tangencial; mas se você está procurando o Pi para aumentar os limites de seu conhecimento, e está fazendo isso para alguma atualização casual, sugiro fortemente que olhe para Ruby e Sinatra. Você sentirá ódio pelo PHP dentro de algumas semanas.

Em geral, você não terá muitos problemas para executar uma pilha da web PHP / Apache em um servidor de 256 MB. Eu fiz isso para sites muito maiores, com capacidade profissional em hospedagem baseada em nuvem. É quando o MySQL se envolve que as coisas ficam feias. A execução de uma pilha LAMP completa em 256 MB é dolorosa para dizer o mínimo, mas não impossível para volumes de tráfego baixos.

Phil Howard
fonte