У меня есть веб-сайт, работающий на CentOS с использованием обычных подозреваемых (Apache, MySQL и PHP). С тех пор, как этот веб-сайт был первоначально запущен, он довольно сильно эволюционировал, и теперь я хотел бы делать с ним более интересные вещи, а именно уведомления в режиме реального времени. Из того, что я прочитал, Apache плохо с этим справляется. Мне интересно, могу ли я заменить только Apache на Node.js (поэтому вместо « LAMP » это будет «LNMP»).
Я пытался найти решение в Интернете, но не нашел его. Если я правильно истолковываю прочитанное, кажется, что большинство людей говорят, что Node.js может заменить и Apache, и PHP вместе. У меня много существующего PHP-кода, поэтому я бы предпочел сохранить его.
В случае, если это еще не очевидно, я довольно смущен и мог бы использовать некоторое просветление. Огромное спасибо!
Ответы:
Если вы готовы переписать свой PHP на JavaScript, то да, Node.js может заменить ваш Apache.
Если вы поместите экземпляр Apache или NGINX, работающий в режиме обратного прокси, между вашими серверами и вашими клиентами, вы можете обрабатывать некоторые запросы в JavaScript на Node.js и некоторые запросы в вашем PHP-хосте Apache, пока вы не сможете полностью заменить весь ваш PHP с кодом JavaScript. Это может быть удачной средой: ваши WebSockets работают в Node.js, более обыденная работа в Apache + PHP.
источник
sendfile
, и есть модуль для поддержки FastCGI, который может облегчить обслуживание вашего PHP через Node. Что касается nginx vs Apache, я всегда был любителем асинхронных серверов поверх многопоточных или многопроцессорных серверов :), но я обнаружил, что документацию Apache легче найти и прочитать. Я бы назвал это личным предпочтением, если вам не нужно масштабировать до удивительных номеров. :)Node.js может быть быстрее, чем Apache, благодаря его четной / неблокирующей архитектуре, но у вас могут возникнуть проблемы с поиском модулей / библиотек, которые заменяют некоторые функции Apache.
Node.js сам по себе представляет собой облегченную низкоуровневую инфраструктуру, которая позволяет вам относительно быстро создавать компоненты веб-приложений на стороне сервера и в реальном времени, но Apache предлагает гораздо более широкие варианты конфигурации и «классические» функции, ориентированные на веб-сервер.
Я бы сказал, что если вы не хотите заменить PHP на основанную на node.js инфраструктуру веб-приложений, такую как express.js, то вы должны остаться с Apache (или подумать о миграции на Nginx, если у вас есть проблемы с производительностью).
источник
Я верю, что Node.js - это будущее веб-сервиса, но если у вас много существующего PHP-кода, Apache / MySQL - ваш лучший выбор. Apache может быть настроен на прокси-запросы к Node.js, или Node.js может прокси-запросы к Apache, но я считаю, что некоторая производительность теряется в обоих случаях, особенно в первом. Ничего страшного, если вы не используете сайт с очень высоким трафиком.
Я только что зарегистрировался в stackoverflow и пока не могу комментировать принятый ответ, но сегодня я создал простой скрипт Node.js, который фактически использует sendfile () для обслуживания файлов по протоколу HTTP. (Существующий пример, на который ссылается принятый ответ, использует только пустой протокол TCP для отправки файла, и я не смог найти пример для HTTP, поэтому я написал его сам.)
Поэтому я подумал, что кто-то может найти это полезным. Обслуживание файлов с помощью вызова ОС sendfile () не обязательно происходит быстрее, чем при копировании данных через «пользовательскую среду», но в итоге оно использует ЦП и ОЗУ меньше, что позволяет обрабатывать большее количество соединений, чем классическим способом.
Ссылка: https://gist.github.com/1350901
источник
Предыдущий пост SO, описывающий то, что я говорю (php + socket.io + node)
Я думаю, что вы могли бы установить сервер узлов на somehost: 8000 с socket.io и вставить клиентский код socket.io в теги, и с минимальной работой заставить ваше существующее приложение качаться с socket.io (ребенок в реальном времени) без тонны работы.
Хотя узел может быть вашим единственным внутренним сервером, помните, что ему нравится соответствовать своему имени и становиться узлом. Некоторое время назад я проверил разговор, который Райан Даль дал группе пользователей PHP, и он упомянул имя узла, связанное с видением того, как несколько процессов узла выполняют работу и общаются друг с другом.
источник
Его ЛАМПА против MEAN в настоящее время. Для прямого сравнения см. Http://tamas.io/what-is-the-mean-stack .
Конечно, М, Е и А несколько изменчивы. Например, более поздняя коа может заменить (E) xpress.
Однако замена Apache на Node.js, вероятно, не является правильным способом модернизации вашего веб-стека.
источник