Czy jest sposób na uruchomienie przez pm2 skryptu startowego npm, czy wystarczy uruchomić pm2 start app.js
Tak w fazie rozwoju
npm start
Następnie w produkcji z pm2 uruchomilibyście coś takiego
pm2 start 'npm start'
Istnieje równoważny sposób, aby to zrobić w forever
:
forever start -c "npm start" ./
Odpowiedzi:
PM2 obsługuje teraz npm start:
Aby przypisać nazwę do procesu PM2, użyj
--name
opcji:źródło
--name "app"
ale po prostu ustawiłem na npm.npm start
w pliku procesu?Ci, którzy używają skryptu konfiguracyjnego jak
.json
pliku do uruchomienia procesu pm2, mogą użyćnpm start
dowolnego innego skryptu -my-app-pm2.json
Następnie po prostu -
Edycja - Aby obsłużyć przypadek użycia, gdy skrypt ten znajduje się w katalogu nadrzędnym i chcesz uruchomić aplikację w podkatalogu, a następnie użyj
cwd
atrybutu.Zakładając, że nasza aplikacja znajduje się w podkatalogu
nested-app
względem tego pliku konfiguracyjnego, wówczas -Więcej szczegółów tutaj .
źródło
start
informacjami o skrypcie znajduje się w jednym z nich. Zobacz tę treść: gist.github.com/gianpaj/04c5680a8275616aac5e46374e07f673 Kiedy uruchamiam to, nie wie, skądnpm
powinien uciekać. Dziękicwd
atrybutu. Sprawdź moją zredagowaną odpowiedź :)sudo pm2 start config.json
Tak. Zastosowanie
pm2 start npm --no-automation --name {app name} -- run {script name}
. To działa.--no-automation
Flaga jest tam , ponieważ bez niego PM2 nie będzie ponownie uruchomić aplikację kiedy się zawiesi.źródło
pm2 --help | grep 'no-autom'
zwraca mi jedną linię w wersji 1.0.2Używać
npm run
pm2 start npm --name "{app_name}" -- run {script_name}
źródło
Poniżej napisałem skrypt powłoki (o nazwie
start.sh
). Ponieważ mójpackage.json
maprestart
opcję. Więc chcę biecnpm start
.Następnie zacznij
start.sh
od pm2.źródło
startOrRestart
polecenia.Tak, możemy, teraz pm2 obsługuje npm start, --nazwa na nazwę aplikacji gatunku.
źródło
Zobacz, aby włączyć klastrowanie:
Co myślisz?
źródło
-i 0
zrobić?Jeśli używasz PM2 za pośrednictwem modułów węzłów zamiast globalnie, musisz ustawić
interpreter: 'none'
, aby powyższe rozwiązania działały. Powiązane dokumenty tutaj .W
ecosystem.config.js
:źródło
Musiałem uruchomić konkretny skrypt npm w mojej aplikacji w pm2 (dla każdej env) W moim przypadku było to, gdy utworzyłem usługę testowania / testowania
Polecenie, które zadziałało dla mnie (argumenty muszą być przekazywane w ten sposób):
przykłady:
Mam nadzieję, że to pomogło
źródło
pm2 start npm --name "custom_pm2_name" -- run prod
To działało dla mnie, gdy inni nie
źródło
musisz podać tutaj nazwę aplikacji, taką jak myapp
pm2 start npm --name "appName" -- start
możesz to sprawdzić
pm2 list
możesz także dodać czas
pm2 restart "id" --log-date-format 'DD-MM HH:mm:ss.SSS'
lubpm2 restart "id" --time
możesz sprawdzić dzienniki według
pm2 log "id"
lubpm2 log "appName"
aby uzyskać dzienniki dla wszystkich aplikacji
pm2 logs
źródło
Nie zapomnij o spacji przed rozpoczęciem
więc poprawne polecenie to:
źródło
Niestety wydaje się, że pm2 nie obsługuje dokładnie tej funkcjonalności, o którą prosiłeś https://github.com/Unitech/PM2/issues/1317 .
Alternatywą jest użycie
ecosystem.json
pliku Rozpoczęcie wdrażania, które może obejmować konfiguracje środowisk produkcyjnych i programistycznych. Nadal jednak służynpm start
do ładowania aplikacji.źródło
However, this is still using npm start to bootstrap your app.
Rzeczywiście można uruchomićnpm start
za pomocąpm2
?może biegać
jeśli chcesz wdrożyć wiele serwerów, możesz to zrobić. zamiast pm2 start npm - start
źródło
Aby uruchomić PM2
npm start
metodą i dać muname
, uruchom to,pm2 start npm --name "your_app_name" -- start
Aby uruchomić go, przekazując dzienniki w formacie daty,
pm2 start npm --name "your_name" --log-date-format 'DD-MM HH:mm:ss.SSS' -- start
źródło
Teraz możesz użyć po:
Śledź https://github.com/Unitech/pm2/issues/1317#issuecomment-220955319
źródło
Działa dobrze na CentOS 7
Wersja PM2 4.2.1
weźmy dwa scenariusze:
1. npm start //server.js
2. npm uruchom main //main.js
źródło