Mam stronę internetową działającą na CentOS i używającą zwykłych podejrzanych (Apache, MySQL i PHP). Od czasu, gdy ta witryna została pierwotnie uruchomiona, bardzo się rozwinęła i teraz chciałbym robić z nią bardziej wyszukane rzeczy - mianowicie powiadomienia w czasie rzeczywistym. Z tego, co przeczytałem, Apache radzi sobie z tym słabo. Zastanawiam się, czy mogę zamienić tylko Apache na Node.js (więc zamiast " LAMP " będzie to "LNMP").
Próbowałem wyszukać w Internecie rozwiązanie, ale go nie znalazłem. Jeśli poprawnie interpretuję rzeczy, które przeczytałem, wydaje się, że większość ludzi twierdzi, że Node.js może zastąpić jednocześnie Apache i PHP. Mam jednak dużo istniejącego kodu PHP, więc wolałbym go zachować.
Jeśli nie jest to już oczywiste, jestem dość zdezorientowany i przydałoby mi się trochę oświecenia. Dziękuję bardzo!
Odpowiedzi:
Jeśli jesteś gotowy, aby ponownie napisać PHP w JavaScript, to tak, Node.js może zastąpić twój Apache.
Jeśli umieścisz instancję Apache lub NGINX działającą w trybie odwrotnego proxy między swoimi serwerami a klientami, możesz obsłużyć niektóre żądania w JavaScript na Node.js i niektóre żądania w PHP hostowanym przez Apache, aż do całkowitego zastąpienia całego PHP z kodem JavaScript. To może być przyjemne medium: wykonuj swoje WebSockets w Node.js, bardziej przyziemną pracę w Apache + PHP.
źródło
sendfile
i istnieje moduł obsługujący FastCGI, który może ułatwić obsługę PHP również przez Node. Jeśli chodzi o nginx vs Apache, zawsze byłem frajerem serwerów asynchronicznych na serwerach wielowątkowych lub wieloprocesowych :), ale uważam, że dokumentację Apache łatwiej znaleźć i przeczytać. Nazwałbym to osobistymi preferencjami, chyba że potrzebujesz skalować do niesamowitych liczb. :)Node.js może być szybszy niż Apache dzięki swojej architekturze zdarzeniowej / nieblokującej, ale możesz mieć problemy ze znalezieniem modułów / bibliotek, które zastępują część funkcjonalności Apache.
Sam Node.js jest lekkim, niskopoziomowym frameworkiem, który umożliwia stosunkowo szybkie tworzenie elementów po stronie serwera i części aplikacji internetowych w czasie rzeczywistym, ale Apache oferuje znacznie szersze opcje konfiguracji i „klasyczne” funkcje zorientowane na serwer WWW.
Powiedziałbym, że jeśli nie chcesz zamienić PHP na framework aplikacji internetowych oparty na node.js, taki jak express.js, powinieneś pozostać przy Apache (lub pomyśleć o migracji do Nginx, jeśli masz problemy z wydajnością).
źródło
Uważam, że Node.js to przyszłość w obsłudze sieci, ale jeśli masz dużo istniejącego kodu PHP, najlepszym rozwiązaniem jest Apache / MySQL. Apache można skonfigurować do wysyłania żądań proxy do Node.js lub Node.js do wysyłania żądań proxy do Apache, ale uważam, że w obu przypadkach następuje utrata wydajności, szczególnie w pierwszym. Nie jest to jednak wielka sprawa, jeśli nie prowadzisz witryny o bardzo dużym ruchu.
Właśnie zarejestrowałem się w stackoverflow i nie mogę jeszcze komentować zaakceptowanej odpowiedzi, ale dzisiaj stworzyłem prosty skrypt Node.js, który faktycznie używa sendfile () do obsługi plików przez protokół HTTP. (Istniejący przykład, do którego odnosi się zaakceptowana odpowiedź, wykorzystuje tylko protokół TCP do wysłania pliku, a nie mogłem znaleźć przykładu dla HTTP, więc napisałem go sam.)
Pomyślałem więc, że ktoś może uznać to za przydatne. Udostępnianie plików przez wywołanie sendfile () systemu operacyjnego niekoniecznie jest szybsze niż w przypadku kopiowania danych przez „obszar użytkownika”, ale w rezultacie zużywa mniej procesora i pamięci RAM, dzięki czemu jest w stanie obsłużyć większą liczbę połączeń niż w klasyczny sposób.
Link: https://gist.github.com/1350901
źródło
Poprzedni SO post opisujący dokładnie to, co mówię (php + socket.io + węzeł)
Myślę, że możesz umieścić serwer węzłowy na jakimś hoście: 8000 z socket.io i włożyć kod klienta socket.io do tagów i przy minimalnym nakładzie pracy sprawić, by Twoja istniejąca aplikacja kołysała się z socket.io (dziecko czasu rzeczywistego) bez mnóstwa pracy.
Chociaż węzeł może być jedynym serwerem zaplecza, pamiętaj, że węzeł lubi żyć zgodnie ze swoją nazwą i stać się węzłem. Niedawno obejrzałem rozmowę, którą Ryan Dahl dał grupie użytkowników PHP i wspomniał o nazwie node odnoszącej się do wizji kilku procesów węzłów wykonujących pracę i rozmawiających ze sobą.
źródło
Jego LAMP w porównaniu z MEAN w dzisiejszych czasach. Aby zapoznać się z bezpośrednim porównaniem, zobacz http://tamas.io/what-is-the-mean-stack .
Oczywiście M, E i A są nieco zmienne. Na przykład nowsza koa może zastąpić (E) xpress.
Jednak samo zastąpienie Apache'a Node.js prawdopodobnie nie jest właściwym sposobem na zmodernizowanie stosu internetowego.
źródło