Ana içeriğe geç

Özellikler

Root olmadan 80 numaralı portta dinleme

Node'un root olarak çalıştırılmaması gereken genel bir kuraldır. Ancak yalnızca root, 1024'ten küçük portlara bağlı kalabilir. Burada authbind devreye girer. Authbind, root olmayan kullanıcıların 1024'ten küçük portlara bağlanmasına izin verir. %user% kısmını pm2'yi çalıştıracak kullanıcı ile değiştirin.

sudo apt-get install authbind
sudo touch /etc/authbind/byport/80
sudo chown %user% /etc/authbind/byport/80
sudo chmod 755 /etc/authbind/byport/80
ipucu

pm2 profilini çalıştıran kullanıcıya bir alias eklemelisiniz, örn. ~/.bashrc veya ~/.zshrc (not: hemen ardından source ~/.bashrc veya source ~/.zshrc komutunu çalıştırmalısınız):

+alias pm2='authbind --deep pm2'

Son olarak, pm2'nin authbind ile güncellendiğinden emin olun:

authbind --deep pm2 update

Ya da alias'i kullanıcı profilinize eklediyseniz sadece pm2 update komutunu kullanabilirsiniz.

Artık root olmadan port 80'e bağlanabilen uygulamaları PM2 ile başlatabilirsiniz!


Aynı sunucuda birden fazla PM2

İstemci ve daemon, $HOME/.pm2/pub.sock ve $HOME/.pm2/rpc.sock dosyaları aracılığıyla iletişim kurar.

bilgi

PM2_HOME ortam değişkenini değiştirerek birden fazla PM2 örneği başlatabilirsiniz.

PM2_HOME='.pm2' pm2 start echo.js --name="echo-node-1"
PM2_HOME='.pm3' pm2 start echo.js --name="echo-node-2"

Bu, iki farklı PM2 örneğini başlatır. Her bir farklı örneği yöneten süreçleri listelemek için:

PM2_HOME='.pm2' pm2 list
PM2_HOME='.pm3' pm2 list

PM2'yi daemon olmadan başlatma

PM2'yi daemon olmadan başlatmadan önce herhangi bir PM2 örneğini öldürdüğünüzden emin olun (pm2 kill).

Daemonlaştırmadan PM2'yi başlatma:

pm2 start app.js --no-daemon

Ayrıca, PM2 kurulumu sırasında varsayılan olarak yüklenen CLI pm2-runtime, Node.js ikili dosyasının bir alternatifidir.


Durumsuz uygulamalar

Üretim uygulamanızın durumsuz olması gerektiği genel bir kuraldır. Her veri, durum, websocket oturumu, oturum verisi, her türlü veritabanı veya PUB/SUB sistemi aracılığıyla paylaşılmalıdır.

Aksi takdirde, uygulamanız aynı sunucuda ve birden fazla sunucu arasında ölçeklendirilmesi zor olacaktır.

Örneğin, oturumları paylaşmak için connect-redis kullanabilirsiniz.

not

Ayrıca 12 faktör kuralını takip etmenizi öneririz: http://12factor.net/


Sunucuda pm2 kurma

Ubuntu VPS'de Node.js Üretim Ortamı Kurmak İçin pm2 Nasıl Kullanılır.


Log ve PID dosyaları

Varsayılan olarak, loglar (hata ve çıktı), pid dosyaları, dökümler ve PM2 logları ~/.pm2/ dizininde bulunur:

.pm2/
├── dump.pm2
├── custom_options.sh
├── pm2.log
├── pm2.pid
├── logs
└── pids

Harmony ES6'yı etkinleştirme

--node-args seçeneği, node yorumlayıcısına argüman eklemenizi sağlar. Bir süreç için harmoniyi etkinleştirmek için şu komutu yazın:

pm2 start my_app.js --node-args="--harmony"

Ve bir JSON tanımında:

[{
"name" : "ES6",
"script" : "es6.js",
"node_args" : "--harmony"
}]

CoffeeScript

CoffeeScript v1

pm2 install coffee-script 
pm2 start app.coffee

CoffeeScript v2

pm2 install coffeescript
pm2 start app.coffee

Hepsi bu!


JSON Yönlendirme

Pull-requests:

#!/bin/bash

read -d '' my_json <<_EOF_
[{
"name" : "app1",
"script" : "/home/projects/pm2_nodetest/app.js",
"instances" : "4",
"error_file" : "./logz/child-err.log",
"out_file" : "./logz/child-out.log",
"pid_file" : "./logz/child.pid",
"exec_mode" : "cluster_mode",
"port" : 4200
}]
_EOF_

echo $my_json | pm2 start -

Süreç başlığı

PM2 ile bir uygulama başlatırken PROCESS_TITLE ortam değişkenini belirtebilirsiniz, bu durum bir süreç başlığı ayarlayacaktır. Örneğin, süreçten belirli verileri almak için ps -fC name komutunu kullanabilirsiniz.


Transpilerler

PM2 ile transpiler kullanma kılavuzuna başvurun.


Sorunlardan kullanıcı ipuçları


Dış kaynaklar ve makaleler