Pm2 'এনপিএম স্টার্ট' স্ক্রিপ্ট চালাতে পারে


212

এনপিএম শুরুর স্ক্রিপ্টটি চালানোর জন্য কি পিএম 2 এর কোনও উপায় আছে বা আপনার কেবল চালাতে হবে? pm2 start app.js

তাই বিকাশে

npm start

তারপরে পিএম 2 দিয়ে প্রযোজনায় আপনি এমন কিছু চালাবেন

pm2 start 'npm start'

এটি করার একটি সমতুল উপায় আছে forever:

forever start -c "npm start" ./

এই এক্সটেনশানটি Dhaval কর্তৃক প্রদত্ত উত্তর দিতে হয় stackoverflow.com/a/37775318/4828326 "pm2: দেব": আপনার package.json 2. 1. প্রথম যোগ pm2 উন্নয়ন মোডের জন্য, ভালো আপনার প্যাকেজ JSON স্ক্রিপ্ট আপডেট "node_modules / pm2 / বিন / pm2-dev start npm - start ",
রামা কৃষ্ণ

উত্তর:


436

পিএম 2 এখন এনপিআর স্টার্টকে সমর্থন করে:

pm2 start npm -- start

পিএম 2 প্রক্রিয়াটিতে একটি নাম নির্ধারণ করতে, --nameবিকল্পটি ব্যবহার করুন :

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

5
এই কমান্ডটি ব্যবহার করার সময় আপনি কীভাবে প্রক্রিয়াটির জন্য একটি নাম সেট করতে পারেন? আমি ব্যবহার করার চেষ্টা করেছি --name "app"তবে এটি কেবল এনপিএম এ সেট করেছে।
সিলভারলাইট 513

171
পিএম 2 শুরু এনপিএম - নাম "আপনার অ্যাপ্লিকেশন নাম" - শুরু করুন
লৌকিক প্যাটেল

7
npm startপ্রক্রিয়া ফাইলটিতে কীভাবে সেট করতে হবে কেউ জানেন ?
mqchen

1
তোমাকে অনেক ধন্যবাদ!
hkg328

3
আহ, আমি আমার প্রশ্নের উত্তর খুঁজে পেয়েছি বলে মনে করি। এটি একটি দুপুর ২ টা বা এনপিএমের জিনিস নয়, বলে মনে হচ্ছে এটি একটি "নিক্স উপায়" বলে আমি "কমান্ড বিকল্পগুলি দিয়েছি এবং যুক্তিগুলি পাস করতে শুরু করছি": unix.stackexchange.com/questions/11376/…
ক্রিস

96

যারা .jsonপিএম 2 প্রক্রিয়া চালানোর জন্য কোনও ফাইলের মতো কনফিগারেশন স্ক্রিপ্ট ব্যবহার করছেন তারা npm startবা এর মতো অন্য কোনও স্ক্রিপ্ট ব্যবহার করতে পারেন -

আমার-অ্যাপ-pm2.json

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

তারপরে সহজভাবে -

pm2 start my-app-pm2.json

সম্পাদনা করুন - যখন আপনি কোনও প্যারেন্ট ডিরেক্টরিতে এই কনফিগারেশন স্ক্রিপ্টটি ব্যবহার করেন এবং সাব ডিরেক্টরিতে একটি অ্যাপ্লিকেশন চালু করতে চান তারপরে cwdবৈশিষ্ট্যটি ব্যবহার করুন handle

ধরে নিচ্ছি আমাদের অ্যাপ্লিকেশনটি nested-appতখন এই কনফিগারেশন ফাইলের সাথে সম্পর্কিত সাব ডিরেক্টরিতে রয়েছে -

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

আরও বিশদ এখানে


1
আমি যদি প্যারেন্ট ফোল্ডার থেকে এনটিএম স্ক্রিপ্ট শুরু করতে চাই তবে কীভাবে এই কাজ করবে?
জিয়ানফ্র্যাঙ্কো পি।

1
আপনি কি আরও কিছু ব্যাখ্যা করতে পারেন? আমি ধরে নিচ্ছি আপনি জিজ্ঞাসা করছেন কীভাবে প্রজেক্ট ডিরেক্টরিটি বাইরের থেকে এনপিএম শুরু করবেন ?
জ্যোতমন সিং

আমি সাব-ফোল্ডারে থাকা একাধিক নোড অ্যাপ্লিকেশন চালানোর জন্য কনফিগারেশন স্ক্রিপ্টটি ব্যবহার করছি। startস্ক্রিপ্ট তথ্য সহ প্যাকেজ.জসন তাদের মধ্যে একটিতে রয়েছে। এই টুকরোটি দেখুন: gist.github.com/gianpaj/04c5680a8275616aac5e46374e07f673 আমি যখন এটি চালাচ্ছি তখন কোথা npmথেকে চালানো উচিত তা জানে না । থেক্স
জিয়ানফ্র্যাঙ্কো পি।

3
@GianfrancoP। আপনি cwdবৈশিষ্ট্যটি ব্যবহার করতে পারেন । আমার সম্পাদিত উত্তরটি চেক করুন :)
জ্যোতমন সিং

আমি সুডো এনপিএম ব্যবহার করার চেষ্টা করেছি এবং এটি ডিরেক্টরিকে শক্ত করে তৈরি করার জন্য অ্যাক্সেস ত্রুটি দেখায় আমি ব্যবহারকারীকে রুট হিসাবে এবং পিএম 2 কমান্ড হিসাবে চালানোর সমস্ত অনুমতি দিয়েছিsudo pm2 start config.json
মিঃ এজে

39

হ্যাঁ. ব্যবহার pm2 start npm --no-automation --name {app name} -- run {script name}। এটা কাজ করে। --no-automationপতাকা আছে যখন এটি ক্র্যাশ এটা ছাড়া কারণ PM2 আপনার অ্যাপ্লিকেশানটি পুনর্সূচনা করা হবে না।


1
বাস্তুসংস্থান.জেএসএস কনফিগারেশন ফাইলের অভ্যন্তরে এই পতাকাটি কীভাবে ব্যবহার করবেন তা সম্পর্কে আপনার কী ধারণা আছে?
টম

1
আপডেট: ঠিক আছে আমি এটি "অটোমেশন" নির্দিষ্ট করতে হবে: মিথ্যা।
টম

@twigg 1.0.0.2 pm2 --help | grep 'no-autom'সংস্করণে আমার জন্য একটি লাইন প্রদান করে
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.shদুপুর ২ টার মধ্যে শুরু করুন ।

pm2 start start.sh --name appNameYouLike

ওটা সুন্দর. দুর্ভাগ্যক্রমে startOrRestartকমান্ডটি ব্যবহার করার সময় এটি কাজ করে না ।
xpepermint

@ এক্সপার্মিন্টটি শেষে -f পতাকাটি ব্যবহার করুন। এটি একটি সূচনা জোর করে। (যেমন এটি ইতিমধ্যে শুরু হলে পুনরায় চালু হবে)
জিনো

16

হ্যাঁ আমরা করতে পারি, এখন দুপুর ২ টা এনপিআর স্টার্ট সমর্থন করে - প্রজাতির অ্যাপ্লিকেশানের নাম।

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

এটি উত্তর যা সত্যই আমাকে সাহায্য করেছিল। অনেক ধন্যবাদ.
আবেদ কুমার

9

ক্লাস্টারিং সক্ষম করতে দেখুন:

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

আপনি কি মনে করেন?



1
উপলব্ধ সিপিইউগুলির উপর নির্ভর করে সর্বাধিক প্রক্রিয়াগুলি শুরু করুন (ক্লাস্টার মোড)
jdnichollsc

7

যদি আপনি বিশ্বব্যাপী পরিবর্তে নোড মডিউলগুলির মাধ্যমে পিএম 2 ব্যবহার করেন, আপনাকে interpreter: 'none'উপরের সমাধানগুলি কাজ করার জন্য ক্রম নির্ধারণ করতে হবে । সম্পর্কিত ডক্স এখানে

ইন ecosystem.config.js:

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

7

আমাকে আমার অ্যাপ্লিকেশনটিতে দুপুর ২ টায় একটি নির্দিষ্ট এনপিএম স্ক্রিপ্ট চালানো দরকার (প্রতিটি এনভির জন্য) আমার ক্ষেত্রে, যখন আমি একটি স্টেজিং / পরীক্ষার পরিষেবা তৈরি করেছি

যে আদেশটি আমার পক্ষে কাজ করেছে (আর্গুমেন্টগুলি সেভাবেই এগিয়ে দেওয়া উচিত):

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

আপনার এখানে মাই্যাপের মতো অ্যাপের নাম সরবরাহ করতে হবে

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আপনার অ্যাপ্লিকেশন বুটস্ট্র্যাপ করতে ব্যবহার করছে using


এর মানে কি বোঝাতে চাচ্ছো? However, this is still using npm start to bootstrap your app.আপনি কি আসলে npm startব্যবহার করে চালাতে পারবেন pm2?
xpepermint

1
pm2 start ./bin/www

চলতে পারে

আপনি যদি একাধিক সার্ভার স্থাপন করতে চান তবে আপনি এটি করতে পারেন। pm2 এর পরিবর্তে এনপিএম শুরু করুন - শুরু করুন


1

npm startপদ্ধতি সহ পিএম 2 চালানো এবং এটির জন্য এটি 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 এ কাজ করছে

পিএম 2 সংস্করণ 4.2.1

আসুন দুটি পরিস্থিতি নেওয়া যাক:

1. এনএমপি স্টার্ট //server.js

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

2. এনএমপি চালানো প্রধান //main.js

pm2 start "npm -- run main" --name myMainFile
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.