Могу ли я заменить Apache на Node.js?

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

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

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

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

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

Ответ 4

Предыдущий Сообщение SO, описывающее, что именно говорит (php + socket.io + node)

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

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

Ответ 5

Его LAMP по сравнению с MEAN в настоящее время. Для прямого сравнения см. http://tamas.io/what-is-the-mean-stack.

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

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