Jestem nowy w programowaniu Node.js i niedawno stworzyłem przykładową działającą aplikację internetową przy użyciu (Express, Backbone i inne bezpłatne technologie widoku, z mongoDB). Teraz jestem w punkcie, w którym chcę wdrożyć to samo w środowisku przejściowym i nie jestem pewien, jak spakować tę aplikację i dystrybuować to samo. [Potrafię zająć się mongoDb i skonfigurować go osobno]
Pochodzę ze świata Java i tam tworzymy jary dla bibliotek wielokrotnego użytku oraz pakiety war / ear dla aplikacji internetowych, które są wdrażane w kontenerze serwletów. W tym przypadku, skoro sam node.js działa również jako kontener sieciowy, jak spakować moją aplikację internetową?
- Czy istnieje standardowy format / wytyczne dotyczące tworzenia aplikacji internetowych dla węzłów tworzonych przy użyciu ekspresu? (Czy istnieje podobny system pakowania jar / war dla aplikacji node?)
- Jak wdrożyć go po spakowaniu? Czy stałby się exe, skoro jest także własnym pojemnikiem?
PS: Na razie myślę o ręcznym skopiowaniu wszystkich wymaganych plików źródłowych do środowiska pomostowego i uruchomieniu poleceń npm w celu pobrania wszystkich zależności na tym komputerze, a następnie użyciu „na zawsze” lub innego mechanizmu do uruchomienia mojego server.js. (Dodaj też jakiś rodzaj monitorowania, na wypadek awarii aplikacji i wiecznej awarii) Nie jestem pewien, czy to właściwy sposób? Jestem pewien, że musi istnieć jakiś znormalizowany sposób rozwiązania tego problemu.
Odpowiedzi:
Nie ma ustandaryzowanej drogi, ale jesteś na dobrej drodze. Jeśli twój
package.json
jest aktualny i dobrze utrzymany, możesz po prostu skopiować / zip / sklonować katalog aplikacji do systemu produkcyjnego, z wyłączeniemnode_modules
.W systemie produkcyjnym uruchom,
npm install
aby zainstalować zależności,npm test
jeśli masz testy i na koniecNODE_ENV=production node server.js
Kilka ostatnich slajdów, które uznałem za całkiem pomocne, a które zawierają również temat opakowań typu forever, można znaleźć tutaj .
źródło
Wdrażanie
Node.js
aplikacji jest bardzo łatwe. W Maven jestpom.xml
. Powiązana koncepcja wNode.js
jestpackage.json
. Możesz określić swoje zależności odpackage.json
. Możesz także przeprowadzić konfigurację środowiska napackage.json
. Na przykład w środowisku deweloperskim możesz tak powiedziećale w produkcji;
Masz lokalne repozytoria dla mavena w
.m2
folderze. W Node.js jestnode_modules
folder w projekcie Node.js. Możesz zobaczyć foldery modułów wraz z ich nazwą.Przejdźmy do
grunt
części tej odpowiedzi.Grunt
to menedżer zadań dla zasobów frontendowych, html, javascript, css. Na przykład przed wdrożeniem możesz zminimalizować nawet obrazy html, css, javascript. Możesz również umieścićgrunt
funkcje uruchamiania zadań wpackage.json
.Jeśli chcesz przyjrzeć się przykładowej aplikacji, możesz znaleźć tutaj przykładową aplikację blogową . Sprawdź strukturę folderów i
package.json
z nimi.Do wdrożenia proponuję wdrożenie heroku dla aplikacji startowych. Możesz znaleźć instrukcje tutaj . To jest proste wdrożenie oparte na git.
W części uruchamiającej projekt wystarczy ustawić środowisko
NODE_ENV=development
inode app.js
. Tutajapp.js
jest twój projekt.Oto relatywna koncepcja dla java i nodejs;
maven clean install
=>npm install
.m2
folder =>node_modules
(W folderze projektu)mvn test
=>npm test
(sekcja testowa napackage.json
)junit
,powermock
, ... => mokka , węzeł-unit , ...Spring MVC
=> Express.JSpom.xml
=>package.json
import package
=>require('module_name')
źródło
mvn clean install
tworzy dołączony plik .war, który można łatwo wdrożyć na dowolnym serwerze na świecie ijava -jar *.war
wykonać go na serwerze. Ale jak mogę utworzyć pakiet plików dla mojego projektu węzła !! i jak mogę to wykonać na serwerze !!Tak, specyfikacja pakietów CommonJS :
Na następne pytanie:
Druga sugestia Hüseyina, aby wdrożyć na Heroku do produkcji. Do programowania i przemieszczania używam odpowiednio Node-Appliance z VirtualBox i Amazon EC2:
Twoja aplikacja internetowa nie stanie się
exe
.źródło
Mam nadzieję, że może to być pomocne dla kogoś szukającego rozwiązania. Pakowanie aplikacji Node js można wykonać za pomocą polecenia „npm pack”. Tworzy plik zip aplikacji, który można uruchomić w środowisku produkcyjnym / przejściowym.
źródło
kilka sposobów podejścia do tego:
Wciśnij swój kod do repozytorium Git, wykluczając wszystko, co nie jest Twoim kodem (
node_modules/**
), a następnie ściągnij go do swojego środowiska przejściowego, uruchom,npm install
aby przywrócić wszystkie zależnościutwórz z niego pakiet NPM, zainstaluj go
npm
w swoim środowisku przejściowym (powinno to również zająć się wszystkimi zależnościami)ręczne kopiowanie / ssh plików do środowiska pomostowego (można to zautomatyzować za pomocą
Grunt
), niż przywracanie zależności za pośrednictwemnpm
źródło
Użyłem modułu pkg firmy Zeit. Może tworzyć materiały dostarczane na wiele platform dla linux / win / macos. Właściwie użyłem go w produkcji i działa dobrze bez żadnych problemów.
Pobiera wszystkie skrypty js i pakuje je do jednego pliku.
Powodem, dla którego go użyłem, jest to, że pomaga w zabezpieczeniu kodu źródłowego. W ten sposób w środowisku produkcyjnym w środowisku klienta będą mieli dostęp do aplikacji, ale nie do kodu źródłowego.
Jedną z zalet jest również to, że w środowisku produkcyjnym nie ma potrzeby instalowania klienta node.js, ponieważ pliki binarne węzła również są pakowane w kompilacji.
https://www.npmjs.com/package/pkg
źródło