PM2 — barcha operatsion tizimlar uchun mo'ljallangan Node.js loyihalarini orqa fonda doimiy ravishda ishga tushirish uchun maxsus jarayon boshqaruvchisi. Agar terminal yopilgan bo'lsa ham, kompyuter qayta ishga tushirilgan bo'lsa ham (agar to'g'ri sozlangan bo'lsa), loyiha ishlashda davom etadi.
1. O'rnatish:
sudo npm install -g pm2
2. Loyihangizni ishga tushirish:
cd loyiha-papkasi
pm2 start npm --name "mening-loyiham" -- run dev
3. Foydali buyruqlar:
pm2 logs mening-loyiham # loglarni kuzatish
pm2 stop mening-loyiham # to'xtatish
pm2 restart mening-loyiham # qayta ishga tushirish
pm2 delete mening-loyiham # ro'yxatdan o'chirish
4. Terminalni yopganingizdan keyin ham loyihaning ishlashda davom etishi uchun hech qanday qo'shimcha harakat qilish shart emas — PM2 orqa fon xizmati (daemon) sifatida ishlaydi va terminalning yopilishiga bog'liq emas.
5. Kompyuter qayta ishga tushirilganda ham loyihalar avtomatik ravishda ishga tushishi uchun (ixtiyoriy):
pm2 startup
pm2 save
"pm2 startup" buyrug'i sizga operatsion tizimga mos keladigan bitta buyruqni beradi (uni nusxalab, ishga tushiring). Keyin "pm2 save" buyrug'i joriy ishlayotgan loyihalar ro'yxatini saqlaydi.
PM2'ni faqat npm run dev uchun emas. PM2 istalgan buyruqni orqa fonda tirik saqlaydi, tili qanday bo'lishidan qat'i nazar!
Formula bitta
pm2 start "<buyruq>" --name "<nom>"
Misollar
Node.js:
pm2 start npm --name "frontend" -- run dev
Java (Spring Boot):
pm2 start "mvn spring-boot:run" --name "backend"
Java (jar fayl):
pm2 start "java -jar app.jar" --name "backend"
Python:
pm2 start bot.py --name "telegram-bot" --interpreter python3
Boshqarish — bir xil, tildan qat'i nazar
pm2 list # barchasini ko'rish
pm2 logs backend # loglarni kuzatish
pm2 restart backend # qayta ishga tushirish
pm2 stop backend # to'xtatish
Kompyuter qayta yonganda ham ishlasin desangiz
pm2 startup # chiqqan buyruqni copy-paste qiling
pm2 save # joriy ro'yxatni saqlaydi
Xulosa
PM2 — bu til yoki freymvorkka bog'liq emas, jarayon menejeri. Frontend ham, Java backend ham, Python bot ham — barchasini bitta vositada, bitta jadvalda boshqarasiz.
Istisno: loyihangiz Docker konteynerida ishlasa, PM2 shart emas — docker-compose.ymlda restart: unless-stopped yozish yetarli.