2012-05-17 13 views
5

Czytałem już kilka samouczków węzłów, ale istnieje kilka najlepszych/często praktyk, o które chciałbym zapytać, dla tych, którzy wcześniej zbudowali prawdziwe aplikacje węzłów.
Węzeł js często praktyk

  1. Kogo uruchomić aplikację jako węzła na swoim Linuksie? Żaden z tutoriali, które przeczytałem, nie wspomniał o dodawaniu użytkownika i grupy węzłów, więc jestem ciekawy, czy to dlatego, że po prostu nie zwracają na to uwagi lub dlatego, że robią coś innego.
  2. Gdzie trzymasz swoje projekty? '/Dom/'? "/ var /"?
  3. Czy zazwyczaj umieszczasz coś przed aplikacją węzła? Takie jak nginx lub haproxy?
  4. Czy używasz innych zasobów, takich jak pamięć masowa (redis, mongo, mysql, ...), mq itp. ... na tym samym komputerze lub na oddzielnych komputerach?

Odpowiedz

2

Zgaduję, że to pytanie dotyczy głównie konfiguracji serwera online, a nie lokalnej maszyny programistycznej.

  1. W kanale IRC ktoś odpowiedział na to samo pytanie i powiedział, że używa oddzielnego użytkownika dla każdej aplikacji. Zgaduję więc, że jest to dobra powszechna praktyka.

  2. I przede wszystkim zrobić/home/user/apps

  3. widzę wiele przykładów nginx więc zgaduję, że to, co większość ludzi używa. Mam serwer z lakierem przed aplikacją node.js, który działa dobrze i był łatwy w konfiguracji. Istnieje kilka czystych rozwiązań dla węzła node.js, ale w przypadku czegoś tak ważnego, jak odwrócone proxy, wybrałbym coś, co jest nieco bardziej testowane w warunkach walki.

  4. Aby odpowiedzieć poprawnie, prawdopodobnie musisz zadać sobie pytanie. Jakie są moje zasoby? Czy stać mnie na wiele małych serwerów? Jak ważna jest Twoja aplikacja? Czy stracisz pieniądze, jeśli twoja aplikacja przestanie działać?

    Jeśli uruchomisz pełny stos, powiedz jeden VPS, a jeśli wystąpi problem z tym VPS, to wpłynie to tylko na jedną z twoich aplikacji.

    Pod względem konserwacji, na przykład jeden serwer baz danych dla wielu aplikacji może wydawać się atrakcyjny. Można by sądzić, że jeśli trzeba zaktualizować bazę danych, aby załatać lukę w zabezpieczeniach, wystarczy zrobić to w jednym miejscu. Z drugiej strony masz teraz jeden punkt awarii dla wszystkich aplikacji w zależności od tego serwera bazy danych.

    Osobiście udałem się do wielu serwerów w pełnym stosie i uczę się automatyzacji wdrażania i konserwacji Narzędzia takie jak Puppet and Chef wydają się być bardzo pomocne.

Posiadałem tylko własne serwery linuksowe przez ostatnie 3 miesiące i byłem użytkownikiem Linuksa od 1,5 roku. Dlatego przed skonfigurowaniem parku serwerów na podstawie tych odpowiedzi upewnij się, że wykonałeś dodatkowe badania.

-2
  1. Najlepszą praktyką wydaje się być użycie tego samego użytkownika/grupy, co w przypadku Apache lub podobnego serwera WWW.

    Na Debianie, czyli www-data: www-data

    jednak, że może być problematyczne z niektórych aplikacji, które mogą wymagać większych uprawnień. Na przykład, próbowałem napisać coś podobnego do Webmina używając Węzła, a to wymaga uprawnień root'a (lub przynajmniej grupy adm) dla wielu zadań.

  2. Na Debianie, używam/var/nodejs (używam/var/www dla „normalnych” aplikacji internetowych, takich jak PHP)

  3. jeden z powodów, nadal jestem niechętny, aby użyć węzeł (oprócz z przerażającego braku dobrej jakości dokumentacji) jest potrzeba przypisania wielu portów IP podczas uruchamiania wielu aplikacji. Myślę, że dla każdego rozsądnego środowiska produkcyjnego używałbyś serwerów wirtualnych do podziału procesów serwera węzła.

    Jedną z rzeczy, o których często zapominają programiści Node, jest to, że w wielu środowiskach korporacyjnych porty IP są bardzo ściśle kontrolowane. Założenie nowego portu przez firewall jest bardzo bolesnym i czasochłonnym zadaniem.

    Drugą rzeczą do zapamiętania, jeśli użyciem odwrotnego proxy jest to, że aplikacje webowe często zawodzą, gdy uruchamiany z serwera proxy - zwłaszcza jeśli mapowania wirtualnego folderu (np https://extdomain/folder ->http://localhost:1234), trzeba zachować testowanie .

  4. Po prostu uruchamiam pojedyncze VPS dla własnych systemów. Jednak w przypadku aplikacji produkcyjnej musisz zrozumieć wymagania. Aplikacje produkcyjne będą najprawdopodobniej potrzebowały wielu serwerów, jeśli tylko będą odporne i skalowalne.

+3

Could dół wyborcy proszę komentować, dlaczego tak, że odpowiedzi można poprawić. –

+0

Wygląda na to, że może być jakiś węzeł.js fanów w domu, którzy nie lubią krytyki? Dochodzę do tego z dołu, ale nikt nie jest przygotowany na to, by wystawić szyje i powiedzieć dlaczego! –

2

Oto co myślę:

  1. Korzystanie z oddzielną dla każdego użytkownika aplikacji jest sposób to robię.

  2. Przechowuję go w /home/user/, aby upewnić się, że tylko user (i katalog główny oczywiście) ma dostęp do aplikacji.

  3. Jakiś czas temu utworzyłem własne odwrotne proxy w węźle JS w oparciu o node-http-proxy module. Jeśli nie chcesz używać odwrotnego proxy, nie ma sensu umieszczać niczego przed węzłem. Jest jeszcze więcej: może to zaszkodzić aplikacji, ponieważ na przykład nginx nie może używać protokołu HTTP/1.1 (przynajmniej w tej chwili).

  4. Wszystkie zasoby, które uruchamiam na tym samym komputerze. Dopiero gdy będę musiał rozpowszechniać moją aplikację między oddzielnymi komputerami, zacznę myśleć o osobnych komputerach. Nie ma potrzeby wstępnej optymalizacji. Kod aplikacji to jednak inna sprawa.