Eu tenho um site em execução no CentOS usando os suspeitos do costume (Apache, MySQL e PHP). Desde a época em que este site foi lançado, ele evoluiu bastante e agora eu gostaria de fazer coisas mais sofisticadas, como notificações em tempo real. Pelo que li, o Apache lida mal com isso. Gostaria de saber se posso substituir apenas o Apache pelo Node.js (então, em vez de " LAMP ", seria "LNMP").
Tentei pesquisar online por uma solução, mas não a encontrei. Se estou interpretando corretamente as coisas que li, parece que a maioria das pessoas está dizendo que o Node.js pode substituir o Apache e o PHP juntos. Eu tenho muito código PHP existente, então prefiro mantê-lo.
Caso ainda não seja óbvio, estou bastante confuso e poderia usar alguma iluminação. Muito obrigado!
Respostas:
Se você estiver preparado para reescrever seu PHP em JavaScript, sim, o Node.js poderá substituir o seu Apache.
Se você colocar uma instância do Apache ou NGINX em execução no proxy reverso entre seus servidores e clientes, poderá processar algumas solicitações em JavaScript no Node.js e algumas no PHP hospedado no Apache, até poder substituir completamente todo o seu PHP com código JavaScript. Esse pode ser o meio feliz: seus WebSockets funcionam no Node.js, um trabalho mais comum no Apache + PHP.
fonte
sendfile
, e há um módulo para suporte ao FastCGI que pode facilitar o serviço do PHP também através do Node. Quanto ao nginx vs Apache, eu sempre fui um otário para servidores no estilo assíncrono em servidores de processo ou multiprocessados :), mas achei a documentação do Apache mais fácil de encontrar e ler. Eu chamaria isso de preferência pessoal, a menos que você precise escalar para números surpreendentes. :)O Node.js pode ser mais rápido que o Apache, graças à sua arquitetura de eventos / sem bloqueio, mas você pode ter problemas ao encontrar módulos / bibliotecas que substituem algumas das funcionalidades do Apache.
O Node.js em si é uma estrutura leve e de baixo nível que permite criar de forma relativamente rápida coisas do lado do servidor e partes em tempo real de seus aplicativos da web, mas o Apache oferece opções de configuração muito mais amplas e recursos "clássicos" orientados ao servidor da web.
Eu diria que, a menos que você queira substituir o PHP pelo framework de aplicativos da Web baseado no node.js. como express.js, você deve permanecer no Apache (ou pensar em migrar para o Nginx se tiver problemas de desempenho).
fonte
Acredito que o Node.js é o futuro da veiculação na web, mas se você possui muito código PHP existente, o Apache / MySQL é sua melhor aposta. O Apache pode ser configurado para fazer proxy de solicitações para o Node.js ou o Node.js pode fazer proxy de solicitações para o Apache, mas acredito que algum desempenho seja perdido nos dois casos, principalmente no primeiro. Não é grande coisa se você não estiver executando um site de tráfego muito alto.
Acabei de me registrar no stackoverflow, e ainda não posso comentar a resposta aceita, mas hoje criei um script simples do Node.js. que realmente usa sendfile () para servir arquivos através do protocolo HTTP. (O exemplo existente ao qual a resposta aceita se vincula usa apenas o protocolo TCP simples para enviar o arquivo, e como não consegui encontrar um exemplo para HTTP, escrevi eu mesmo.)
Então pensei que alguém poderia achar isso útil. A veiculação de arquivos por meio da chamada do SO sendfile () não é necessariamente mais rápida do que quando os dados são copiados através do "espaço do usuário", mas acaba utilizando menos a CPU e a RAM, podendo assim lidar com um número maior de conexões do que o modo clássico.
O link: https://gist.github.com/1350901
fonte
Postagem anterior do SO descrevendo exatamente o que estou dizendo (php + socket.io + node)
Eu acho que você pode instalar um servidor de nó em somehost: 8000 com socket.io e colocar o código do cliente socket.io em tags e, com o mínimo de trabalho, fazer com que seu aplicativo existente seja usado com socket.io (bebê em tempo real) sem muito trabalho.
Embora o nó possa ser seu único servidor back-end, lembre-se de que ele gosta de corresponder ao nome e se tornar um nó. Voltei uma palestra que Ryan Dahl deu a um grupo de Usuários de PHP e ele mencionou o nó node relacionado a uma visão de vários processos de nós trabalhando e conversando entre si.
fonte
É LAMP versus MEAN hoje em dia. Para uma comparação direta, consulte http://tamas.io/what-is-the-mean-stack .
É claro que M, E e A são um pouco variáveis. Por exemplo, o koa mais recente pode substituir (E) xpress.
No entanto, apenas substituir o Apache por Node.js provavelmente não é o caminho certo para modernizar sua pilha da web.
fonte