Могу ли я заменить Apache на Node.js? - PullRequest
151 голосов
/ 18 марта 2011

У меня есть веб-сайт, работающий на CentOS с использованием обычных подозреваемых (Apache, MySQL и PHP). С тех пор, как этот веб-сайт был первоначально запущен, он довольно сильно эволюционировал, и теперь я хотел бы делать с ним более интересные вещи, а именно уведомления в режиме реального времени. Из того, что я прочитал, Apache плохо с этим справляется. Мне интересно, могу ли я заменить только Apache на Node.js (поэтому вместо " LAMP " это будет "LNMP").

Я пытался найти решение в Интернете, но не нашел его. Если я правильно интерпретирую то, что я прочитал, похоже, что большинство людей говорят, что Node.js может заменить и Apache, и PHP вместе. У меня есть много кода PHP, поэтому я бы предпочел сохранить его.

В случае, если это еще не очевидно, я довольно запутался и мог бы использовать какое-то просветление. Большое спасибо!

Ответы [ 5 ]

87 голосов
/ 18 марта 2011

Если вы готовы переписать свой PHP на JavaScript, то да, Node.js может заменить ваш Apache.

Если вы поместите экземпляр Apache или NGINX, работающий в режиме обратного прокси, между вашимисервера и ваших клиентов, вы можете обрабатывать некоторые запросы в JavaScript на Node.js и некоторые запросы в вашем PHP-хосте Apache, пока вы не сможете полностью заменить весь ваш PHP кодом JavaScript.Это может быть удачной средой: ваши WebSockets работают в Node.js, более обыденная работа в Apache + PHP.

26 голосов
/ 18 марта 2011

Node.js может быть быстрее, чем Apache, благодаря его четной / неблокирующей архитектуре, но у вас могут возникнуть проблемы с поиском модулей / библиотек, которые заменяют некоторые функции Apache.

Node.js сам по себе представляет собой облегченную низкоуровневую инфраструктуру, которая позволяет вам относительно быстро создавать компоненты веб-приложений на стороне сервера и в реальном времени, но Apache предлагает гораздо более широкие возможности конфигурации и «классические» функции, ориентированные на веб-сервер. ,

Я бы сказал, что если вы не хотите заменить PHP на основанную на node.js инфраструктуру веб-приложений, такую ​​как express.js, то вам следует придерживаться Apache (или подумать о переходе на Nginx, если у вас есть проблемы с производительностью).

11 голосов
/ 09 ноября 2011

Я верю, что Node.js - это будущее веб-сервиса, но если у вас много существующего PHP-кода, Apache / MySQL - ваш лучший выбор.Apache может быть настроен на прокси-запросы к Node.js, или Node.js может прокси-запросы к Apache, но я полагаю, что некоторая производительность теряется в обоих случаях, особенно в первом.Ничего страшного, если вы не используете сайт с очень высоким трафиком.

Я только что зарегистрировался в stackoverflow и пока не могу комментировать принятый ответ, но сегодня я создал простой Node.jsскрипт, который фактически использует sendfile () для обслуживания файлов по протоколу HTTP.(Существующий пример, на который ссылается принятый ответ, использует только пустой протокол TCP для отправки файла, и я не смог найти пример для HTTP, поэтому я написал его сам.)

Поэтому я подумал, что кто-то может найти этополезно.Обслуживание файлов с помощью вызова ОС sendfile () не обязательно происходит быстрее, чем при копировании данных через «пользовательскую среду», но в итоге они используют ЦП и ОЗУ меньше, что позволяет обрабатывать большее количество соединений, чем классическим способом.

Ссылка: https://gist.github.com/1350901

7 голосов
/ 18 марта 2011

Предыдущий ТАК пост, описывающий в точности то, что я говорю (php + socket.io + node)

Я думаю, вы можете установить сервер узла на somehost: 8000 с socket.io ивставьте клиентский код socket.io в теги и с минимальной работой заставьте ваше существующее приложение качаться с socket.io (ребенок в реальном времени) без огромного труда.

Хотя узел может быть вашим единственным серверным сервером, помните, что этот узел любитчтобы соответствовать своему имени и стать узлом.Недавно я проверил разговор, который Райан Даль дал группе пользователей PHP, и он упомянул имя узла, связанное с видением того, как несколько процессов узла выполняют работу и общаются друг с другом.

2 голосов
/ 31 января 2014

В настоящее время его ЛАМПА против MEAN.Прямое сравнение см. http://tamas.io/what-is-the-mean-stack.

Конечно, М, Е и А несколько изменчивы.Например, более поздняя версия koa может заменить (E) xpress.

Однако замена Apache на Node.js, вероятно, не является правильным способом модернизации вашего веб-стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...