Existe-t-il un moyen pour pm2 d'exécuter un script de démarrage npm ou devez-vous simplement exécuter pm2 start app.js
Donc en développement
npm start
Ensuite, en production avec pm2, vous exécuteriez quelque chose comme
pm2 start 'npm start'
Il existe une manière équivalente de le faire dans forever
:
forever start -c "npm start" ./
Réponses:
PM2 prend désormais en charge le démarrage de npm:
Pour attribuer un nom au processus PM2, utilisez l'
--name
option:la source
--name "app"
mais il l'a juste mis à npm.npm start
dans le fichier de processus?Ceux qui utilisent un script de configuration comme un
.json
fichier pour exécuter le processus pm2 peuvent utilisernpm start
ou tout autre script comme celui-ci -my-app-pm2.json
Alors simplement -
Modifier - Pour gérer le cas d'utilisation lorsque vous avez ce script de configuration dans un répertoire parent et que vous souhaitez lancer une application dans le sous-répertoire, puis utilisez l'
cwd
attribut.En supposant que notre application se trouve dans le sous-répertoire
nested-app
relatif à ce fichier de configuration, alors -Plus de détails ici .
la source
start
informations de script est dans l'un d'eux. Voir cet essentiel: gist.github.com/gianpaj/04c5680a8275616aac5e46374e07f673 Lorsque j'exécute cela, il ne sait pas oùnpm
doit s'exécuter. Thxcwd
attribut. Vérifiez ma réponse modifiée :)sudo pm2 start config.json
Oui. Utilisez
pm2 start npm --no-automation --name {app name} -- run {script name}
. Ça marche. Le--no-automation
drapeau est là car sans lui, PM2 ne redémarrera pas votre application lorsqu'elle se bloque.la source
pm2 --help | grep 'no-autom'
renvoie une ligne pour moi dans la version 1.0.2Utiliser
npm run
pm2 start npm --name "{app_name}" -- run {script_name}
la source
J'ai écrit le script shell ci-dessous (nommé
start.sh
). Parce que monpackage.json
a l'prestart
option. Je veux donc courirnpm start
.Ensuite, commencez
start.sh
par pm2.la source
startOrRestart
commande.Oui, nous pouvons maintenant, pm2 prend en charge le démarrage de npm, --name au nom de l'application de l'espèce.
la source
Voir pour activer le clustering:
Qu'est-ce que tu penses?
la source
-i 0
il?Si vous utilisez PM2 via des modules de nœuds plutôt que globalement, vous devrez configurer
interpreter: 'none'
pour que les solutions ci-dessus fonctionnent. Documents connexes ici .Dans
ecosystem.config.js
:la source
J'avais besoin d'exécuter un script npm spécifique sur mon application en pm2 (pour chaque env) Dans mon cas, c'était lorsque j'ai créé un service de test / test
La commande qui a fonctionné pour moi (les arguments doivent être transmis de cette façon):
exemples:
J'espère que cela a aidé
la source
pm2 start npm --name "custom_pm2_name" -- run prod
Cela a fonctionné pour moi quand les autres ne l'ont pas fait
la source
vous devez fournir ici le nom de l'application comme myapp
pm2 start npm --name "appName" -- start
vous pouvez le vérifier par
pm2 list
vous pouvez également ajouter du temps
pm2 restart "id" --log-date-format 'DD-MM HH:mm:ss.SSS'
oupm2 restart "id" --time
vous pouvez consulter les journaux par
pm2 log "id"
oupm2 log "appName"
pour obtenir des journaux pour toutes les applications
pm2 logs
la source
N'oubliez pas l'espace avant de commencer
donc la commande correcte est:
la source
Malheureusement, il semble que pm2 ne prenne pas en charge la fonctionnalité exacte que vous avez demandée https://github.com/Unitech/PM2/issues/1317 .
L'alternative proposée est d'utiliser un
ecosystem.json
fichier Mise en route du déploiement qui pourrait inclure des configurations pour les environnements de production et de développement. Cependant, ceci est toujours utilisénpm start
pour amorcer votre application.la source
However, this is still using npm start to bootstrap your app.
Pouvez-vous réellement exécuter ennpm start
utilisantpm2
?peut courir
si vous voulez déployer plusieurs serveurs, vous pouvez le faire. au lieu de pm2 start npm - start
la source
Pour exécuter PM2 avec la
npm start
méthode et lui donner unname
, exécutez ceci,pm2 start npm --name "your_app_name" -- start
Pour l'exécuter en passant le format de date pour les journaux,
pm2 start npm --name "your_name" --log-date-format 'DD-MM HH:mm:ss.SSS' -- start
la source
Maintenant, vous pouvez utiliser après:
Suivez par https://github.com/Unitech/pm2/issues/1317#issuecomment-220955319
la source
Ça marche bien sur CentOS 7
PM2 version 4.2.1
prenons deux scénarios:
1. npm start //server.js
2. npm run main //main.js
la source