क्या pm2 एक 'npm start' स्क्रिप्ट को चला सकता है


212

क्या pm2 स्क्रिप्ट चलाने के लिए pm2 के लिए एक रास्ता है या क्या आपको बस दौड़ना है pm2 start app.js

इसलिए विकास में

npm start

फिर pm2 के उत्पादन में आप कुछ इस तरह से दौड़ेंगे

pm2 start 'npm start'

इसमें ऐसा करने का एक समान तरीका है forever:

forever start -c "npm start" ./

यह धवल stackoverflow.com/ द्वारा दिए गए उत्तर का विस्तार है । 1.37775318/4828326 1. पहली बार pm2 को अपने package.json में जोड़ें। डेवलपमेंट मोड के लिए, अपने पैकेज जौन स्क्रिप्ट को इस तरह अपडेट करें: "pm2: dev": "node_modules / pm2 / bin / pm2-dev start npm - start ”,
राम कृष्ण

जवाबों:


436

PM2 अब npm शुरू का समर्थन करता है:

pm2 start npm -- start

PM2 प्रक्रिया को एक नाम निर्दिष्ट करने के लिए, --nameविकल्प का उपयोग करें :

pm2 start npm --name "app name" -- start

5
आप इस आदेश का उपयोग करते समय प्रक्रिया के लिए एक नाम कैसे सेट कर सकते हैं? मैं का उपयोग करने की कोशिश की, --name "app"लेकिन यह सिर्फ npm के लिए यह निर्धारित किया है।
सिल्वरलाइट 513

171
pm2 start npm --name "योर एपीपी नेम" - शुरू
लुकिक पटेल

7
किसी को पता है कि npm startप्रक्रिया फ़ाइल में कैसे सेट करें ?
मकचेन

1
आपको बहुत - बहुत धन्यवाद!
hkg328

3
आह, मुझे लगता है कि मुझे अपने प्रश्न का उत्तर मिला। यह एक pm2 या npm बात नहीं है, यह कहने का एक * एक अच्छा तरीका है "मुझे लगता है कि मैं कमांड विकल्प दे रहा हूं और तर्क पारित करना शुरू करना चाहता हूं
क्रिस

96

जो एक विन्यास स्क्रिप्ट का उपयोग कर रहे हैं जैसे .jsonकि pm2 प्रक्रिया को चलाने के लिए एक फ़ाइल का उपयोग कर सकते हैं npm startया इस तरह से किसी अन्य स्क्रिप्ट का उपयोग कर सकते हैं -

मेरी एप्लिकेशन के pm2.json

{
    "apps": [
        {
            "name": "my-app",
            "script": "npm",
            "args" : "start"
        }
    ]
}

फिर बस -

pm2 start my-app-pm2.json

संपादन - उपयोग के मामले को संभालने के लिए जब आपके पास मूल निर्देशिका में यह कॉन्फ़िगरेशन स्क्रिप्ट है और उप-निर्देशिका में एक एप्लिकेशन लॉन्च करना चाहते हैं तो cwdविशेषता का उपयोग करें ।

हमारे एप्लिकेशन nested-appको इस कॉन्फ़िगरेशन फ़ाइल के बाद उप-निर्देशिका में माना जाता है -

{
    "apps": [
        {
            "name": "my-nested-app",
            "cwd": "./nested-app",
            "script": "npm",
            "args": "start"
        }
    ]
}

यहाँ और अधिक विस्तार ।


1
यदि मैं एक मूल फ़ोल्डर से प्रारंभ npm स्क्रिप्ट को चलाना चाहता हूं तो यह कैसे काम करता है?
गियानफ्राँको पी।

1
क्या आप थोड़ा और विस्तृत कर सकते हैं? मुझे लगता है कि आप पूछ रहे हैं कि प्रोजेक्ट डायरेक्टरी के बाहर से एनपीएम कैसे शुरू करें ?
ज्योतिमान सिंह

मैं कई नोड ऐप्स चलाने के लिए कॉन्फ़िगरेशन स्क्रिप्ट का उपयोग कर रहा हूं जो उप-फ़ोल्डर्स में हैं। पैकेज startजानकारी के साथ स्क्रिप्ट .json उनमें से एक में है। इस gist को देखें: gist.github.com/gianpaj/04c5680a8275616aac5e46374e07f673 जब मैं इसे चलाता हूं तो यह नहीं पता होता है कि इसे कहां npmसे चलाना चाहिए। Thx
जियानफ्रेंको पी।

3
@GianfrancoP। आप cwdविशेषता का उपयोग कर सकते हैं । मेरे संपादित उत्तर की जाँच करें :)
ज्योतमान सिंह

मैंने sudo npm का उपयोग करने की कोशिश की और यह एक डायरेक्टरी को कठिन बनाने के लिए एक्सेस एरर को दर्शाता है। मैंने उपयोगकर्ता को रूट के रूप में सभी अनुमति दी है और pm2 कमांड भी चला रहा है जैसेsudo pm2 start config.json
श्री AJ

39

हाँ। का उपयोग करें pm2 start npm --no-automation --name {app name} -- run {script name}। यह काम करता हैं। --no-automationझंडा नहीं है जब यह दुर्घटनाओं इसके बिना क्योंकि PM2 अपने एप्लिकेशन को पुनः प्रारंभ नहीं होंगे।


1
क्या आपके पास कोई विचार है कि इस ध्वज का उपयोग पारिस्थितिकी तंत्र के अंदर कैसे करें। विन्यास फाइल?
टॉम

1
अद्यतन: ठीक है, मैंने पाया कि आपको "स्वचालन" निर्दिष्ट करने की आवश्यकता है: गलत।
टॉम

@ वॉटगॉग pm2 --help | grep 'no-autom'ने मेरे लिए 1.0.2
jcollum

27

काम में लाना npm run

pm2 start npm --name "{app_name}" -- run {script_name}


25

मैंने नीचे शेल स्क्रिप्ट लिखी (नाम start.sh)। क्योंकि मेरे package.jsonपास prestartविकल्प है। इसलिए मैं दौड़ना चाहता हूं npm start

#!/bin/bash
cd /path/to/project
npm start

फिर, start.shpm2 से शुरू करें ।

pm2 start start.sh --name appNameYouLike

वह अच्छा हैं। दुर्भाग्य से यह startOrRestartकमांड का उपयोग करते समय काम नहीं करता है ।
xpepermint

@xpepermint अंत में केवल -f ध्वज का उपयोग करें। यह एक शुरुआत के लिए मजबूर करता है। (यानी यह पहले से शुरू होने पर फिर से शुरू होगा)
ज़ीनो

16

हां हम कर सकते हैं, अब pm2 सपोर्ट npm स्टार्ट, --name टू प्रजाति ऐप नाम।

pm2 start npm --name "app" -- start

यह जवाब है जिसने वास्तव में मेरी मदद की। बहुत बहुत धन्यवाद।
आदेश कुमार

9

क्लस्टरिंग सक्षम करने के लिए देखें:

pm2 start npm --name "AppName" -i 0 -- run start

तुम क्या सोचते हो?


क्या करता -i 0है?
जोहान संताना

1
उपलब्ध सीपीयू (क्लस्टर मोड) के आधार पर अधिकतम प्रक्रिया शुरू करें
jdnichollsc

7

यदि आप विश्व स्तर पर नोड मॉड्यूल के माध्यम से PM2 का उपयोग करते हैं, तो आपको interpreter: 'none'काम करने के लिए उपरोक्त समाधान के लिए सेट करना होगा। संबंधित डॉक्स यहां

इन ecosystem.config.js:

  apps: [
    {
      name: 'myApp',
      script: 'yarn',
      args: 'start',
      interpreter: 'none',
    },
  ],

7

मुझे अपने ऐप पर pm2 (प्रत्येक env के लिए) में एक विशिष्ट एनपीएम स्क्रिप्ट चलाने की आवश्यकता थी मेरे मामले में, यह तब था जब मैंने एक स्टेजिंग / टेस्ट सेवा बनाई थी

मेरे लिए काम करने वाले कमांड (आर्ग्स को इस तरह आगे बढ़ाया जाना चाहिए):

pm2 start npm --name "my-app-name" -- run "npm:script"

उदाहरण:

pm2 start npm --name "myApp" -- run "start:test"

pm2 start npm --name "myApp" -- run "start:staging"

pm2 start npm --name "myApp" -- run "start:production"

आशा है कि यह मदद की


4

pm2 start npm --name "custom_pm2_name" -- run prod

"scripts": {
    "prod": "nodemon --exec babel-node ./src/index.js"
  }

यह मेरे लिए काम किया जब दूसरों ने नहीं किया


3

आपको यहां myapp की तरह ऐप नाम देना होगा

pm2 start npm --name "appName" -- start

आप इसे चेक कर सकते हैं

pm2 list

आप समय भी जोड़ सकते हैं

pm2 restart "id" --log-date-format 'DD-MM HH:mm:ss.SSS' या pm2 restart "id" --time

आप लॉग की जाँच कर सकते हैं

pm2 log "id" या pm2 log "appName"

सभी एप्लिकेशन के लिए लॉग पाने के लिए

pm2 logs



1

दुर्भाग्य से, ऐसा लगता है कि pm2 उस सटीक कार्यक्षमता का समर्थन नहीं करता है जिसका आपने https://github.com/Unitech/PM2/issues/1317 से अनुरोध किया था ।

प्रस्तावित विकल्प एक ecosystem.jsonफाइल का उपयोग करना है जो तैनाती के साथ शुरू हो रहा है जिसमें उत्पादन और देव वातावरण के लिए सेटअप शामिल हो सकते हैं। हालाँकि, यह अभी भी npm startआपके ऐप को बूटस्ट्रैप करने के लिए उपयोग कर रहा है।


उससे तुम्हारा क्या मतलब है? However, this is still using npm start to bootstrap your app.क्या आप वास्तव में npm startउपयोग करके चला सकते हैं pm2?
xpepermint

1
pm2 start ./bin/www

चल सकता है

यदि आप एक से अधिक सर्वर तैनात करना चाहते हैं तो आप ऐसा कर सकते हैं। pm2 start npm - start के बजाय


1

npm startविधि के साथ PM2 चलाने के लिए और इसे देने के लिए name, इसे चलाएं,
pm2 start npm --name "your_app_name" -- start

लॉग के लिए दिनांक-प्रारूप पास करके इसे चलाने के लिए,
pm2 start npm --name "your_name" --log-date-format 'DD-MM HH:mm:ss.SSS' -- start


0

अब, आप के बाद उपयोग कर सकते हैं:

pm2 start npm -- start

Https://github.com/Unitech/pm2/issues/1317#issuecomment-220955319 द्वारा अनुसरण करें


क्या आप अपने उत्तर का विस्तार कर सकते हैं? उत्तर से सलाह कैसे दें : बाहरी संसाधनों के लिंक को प्रोत्साहित किया जाता है, लेकिन कृपया लिंक के चारों ओर संदर्भ जोड़ें ताकि आपके साथी उपयोगकर्ताओं को यह पता चले कि यह क्या है और क्यों है। हमेशा एक महत्वपूर्ण लिंक का सबसे प्रासंगिक हिस्सा उद्धृत करें, यदि लक्ष्य साइट अप्राप्य है या स्थायी रूप से ऑफ़लाइन है।
मूडबॉम

0

यह CentOS 7 पर ठीक काम कर रहा है

PM2 संस्करण 4.2.1

चलो दो परिदृश्य लेते हैं:

1. npm स्टार्ट //server.js

pm2 start "npm -- start" --name myMainFile

2. npm रन मुख्य //main.js

pm2 start "npm -- run main" --name myMainFile
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.