Czy mogę zastąpić Apache węzłem.js?

Mam stronę internetową działającą na CentOS przy użyciu zwykłych podejrzanych (Apache, MySQL i PHP). Od czasu, gdy ta strona została pierwotnie uruchomiona, ewoluowała dość mocno i teraz chciałbym robić z nią bardziej fantazyjne rzeczy-mianowicie powiadomienia w czasie rzeczywistym. Z tego co czytałem, Apache źle sobie z tym radzi. Zastanawiam się, czy mogę zastąpić tylko Apache węzłem.js (więc zamiast" LAMP "byłoby " LNMP").

Próbowałem szukać w Internecie rozwiązania, ale nie znalazłem jeden. Jeśli poprawnie interpretuję rzeczy, które przeczytałem, to wydaje się, że większość ludzi mówi, że węzeł.js może zastąpić Apache i PHP razem. Mam jednak dużo istniejącego kodu PHP, więc wolałbym go zachować.

W przypadku, gdy nie jest to już oczywiste, jestem dość zdezorientowany i przydałoby się trochę oświecenia. Dziękuję bardzo!

Author: Jørn E. Angeltveit, 2011-03-17

5 answers

Jeśli jesteś gotowy do ponownego napisania PHP w JavaScript, to tak, Node.js może zastąpić twojego Apache.

Jeśli umieścisz instancję Apache lub NGINX działającą w trybie odwrotnego proxy między 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, dopóki nie możesz całkowicie zastąpić całego PHP kodem JavaScript. To może być szczęśliwy nośnik: czy Twoje WebSockets pracy w węźle.js, bardziej przyziemna praca w Apache + PHP.

 86
Author: sarnold,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-15 06:23:06

Node.js może być szybszy niż Apache dzięki swojej architekturze evented/non-blocking, ale możesz mieć problemy ze znalezieniem modułów / bibliotek, które zastępują niektóre funkcje Apache.

Node.sam js jest lekkim, niskopoziomowym frameworkiem, który umożliwia stosunkowo szybkie tworzenie rzeczy 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 chyba chcesz zastąpić PHP węzłem.framework aplikacji internetowych oparty na js, takich jak express.js następnie powinieneś pozostać przy Apache (lub pomyśleć o migracji do Nginx, jeśli masz problemy z wydajnością).

 26
Author: yojimbo87,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-20 18:08:18

I believe Node.js jest przyszłością w serwowaniu stron internetowych, ale jeśli masz dużo istniejącego kodu PHP, Apache / MySQL są najlepszym rozwiązaniem. Apache może być skonfigurowany do Proxy żądań do węzła.js, czyli Węzeł.js może proxy żądania do Apache, ale uważam, że niektóre wydajności jest stracone w obu przypadkach, zwłaszcza w pierwszym. Nic wielkiego, jeśli nie prowadzisz witryny o bardzo dużym natężeniu ruchu.

Właśnie zarejestrowałem się na stackoverflow i nie mogę jeszcze skomentować zaakceptowanej odpowiedzi, ale dziś stworzyłem prosty węzeł.skrypt js, który używa sendfile () do obsługi plików poprzez protokół HTTP. (Istniejący przykład, do którego łączy się akceptowana odpowiedź, używa tylko protokołu TCP do wysłania pliku, a ja nie mogłem znaleźć przykładu dla HTTP, więc sam go napisałem.)

Więc pomyślałem, że komuś się to przyda. Obsługa plików przez wywołanie sendfile () OS niekoniecznie jest szybsza niż w przypadku kopiowania danych przez "user land", ale kończy się na mniejszym zużyciu procesora i pamięci RAM, dzięki czemu jest w stanie aby obsłużyć większą liczbę połączeń niż klasyczny sposób.

Link: https://gist.github.com/1350901

 11
Author: youurayy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-09 14:41:30

Poprzedni więc post opisujący dokładnie to, co mówię (php + socket.io + node)

Myślę, że można postawić serwer node na somehost: 8000 z socket.io i slap the socket.io kod klienta w znaczniki i przy minimalnym nakładzie pracy uzyskaj dostęp do istniejącej aplikacji socket.io bez mnóstwa pracy.

Chociaż node może być twoim jedynym serwerem backendowym, pamiętaj, że node lubi żyć zgodnie z jego nazwą i stać się węzłem. Jakiś czas temu sprawdziłem rozmowę Ryana Dahla. 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ą.

 8
Author: Richard Holland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:46:24

Jego lampa kontra średnia w dzisiejszych czasach. Bezpośrednie porównanie zobacz http://tamas.io/what-is-the-mean-stack .

Oczywiście M, E i A są nieco zmienne. Na przykład nowszy koa może zastąpić (E)xpress.

Jednak po prostu zastąpienie Apache ' a węzłem.js prawdopodobnie nie jest właściwym sposobem na modernizację stosu internetowego.

 2
Author: Wolfgang Kuehn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-30 22:24:15