2013-05-21 8 views
9

dzisiaj wcześniej, zadałem pytanie na programistów Stack Exchange Network: Is it bad practice to run Node.js and apache in parallel?Techniczne aspekty prowadzenia node.js i Apache równolegle

Mój wniosek końcowy może być traktowana jako społecznościowy, w którym chcę mieć możliwość czatu i normalna funkcja aktualizacji statusu.

Do funkcji czatu chciałbym użyć Node.js, ponieważ chcę przesyłać dane z serwera do klienta, zamiast często odpytywać serwer. Dla aktualizacji statusu chcę normalnej instalacji apache i PHP, ponieważ jestem o wiele bardziej zaznajomiony z tym i nie rozumiem, dlaczego użyłbym Node.js do tego.

Jednak to oznaczałoby, że będę musiał uruchomić Node.js i apache równolegle. O ile jest to możliwe i nie uznać złe praktyki w zależności od odpowiedzi na Programmers.SE, ja widzę kilka problemów technicznych:

  • bym potrzebne dwa porty otwarte - może dać problem z sieciami otwartymi że don „t mieć wszystkie porty otwarte

  • nie mogę używać mojego współdzielonym serwerze, ponieważ nie wolno mi, aby otworzyć tam port, więc będę musiał kupić VPS

I don nie troszczą się zbytnio o drugą, więcej o pierwszą. Czy naprawdę nie ma rozwiązań łączących obie funkcje na jednym porcie?

Czy jest jakieś obejście dla portów? Czy mogę na przykład przekierować subdomain.domain.com:80 do domain.com:x gdzie x jest portem Node.js? Czy to byłoby możliwe i rozwiązać mój problem? To rozwiązanie zostało podane w this Programmers.SE answer, ale jak mam go wdrożyć?

Odpowiedz

2

Jako że @ TheHippo powiedział, że możesz to zrobić za pomocą mod_proxy Apache'a.

nGinx może działać szybciej, zwłaszcza jeśli używasz FastCGI w PHP> = 5.4. nGinx jest także lepszym proxy przekazywania niż Apache, a jego model oparty na zdarzeniach jest zgodny z operacjami wejścia/wyjścia opartymi na zdarzeniach. Przy ustawieniu proppera może to oznaczać lepszą ogólną wydajność.

Jeśli znajdujesz się w ograniczonym środowisku (takim jak serwer współdzielony lub brak możliwości zmiany serwera), powinieneś skorzystać z Apache i mod_proxy.

+0

Jak możemy uruchomić php na serwerze nginx, a następnie @Borslav Sabev? –

3

Możesz zaimportować wszystkie żądania do node.js przez Apache (używając mod_proxy), więc nie będziesz mieć żadnych problemów z wieloma otwartymi portami. Pozwala to również na ponowne zamapowanie wszystkiego na podfoldery lub poddomeny.

Nie jest to najlepsze rozwiązanie pod względem wydajności, ale jeśli masz dostęp do wspólnej przestrzeni internetowej, nie ma to większego znaczenia. (Udostępniane serwery są zwykle powolne, a jeśli masz większą bazę użytkowników, musisz wcześniej lub później przenieść się na osobny serwer).

+0

Dzięki za odpowiedź! Nie wolno mi otwierać żadnych portów na moim udostępnionym serwerze, nawet stażysta, więc nie jest to możliwe (Node.js daje pewien błąd, nie pamiętam dokładnie). Ale tak naprawdę nie zawracam sobie głowy zakupem VPS. Mówisz, że to nie najlepsze rozwiązanie pod względem wydajności, więc co by było lepiej? :) czy nie ma nic lepszego niż różne porty? – Keelan

+0

Jeśli proxy przez Apache, stracisz technicznie większość korzyści z pętli zdarzeń node.js. Jeśli kupisz VPS, możesz użyć nginx. – TheHippo

+0

Okay! To byłaby lepsza opcja; czy mógłbyś wyjaśnić, jak to zrobić (czy link też byłby w porządku)? – Keelan