2016-07-04 14 views
12

node.js ve npm'yi centOS 7 sunucusuna yükledim. Ama pm2 ile ilgili problemlerim var. Aslında asıl sorun, linux'da deneyimlerim yok ve yolu nasıl değiştireceğimi bilmiyorum. İşte klasör yapısı. PM2 komut bulunamadı

* bin 
* code 
* error_docs 
* httpdocs 
* lib64 
* logs 
* tmp 
* var 
* chat(my node.js folder) 
    * node_modules 
     * pm2 
     * sockjs 
    * server.js 
* dev 
* etc 
* lib 
* local 
* sbin 
* usr 

Ben cd chat yazarak klasörü girdi ve npm install pm2 ile PM2 yüklü. Daha sonra pm2 server.js server server yazarak server pm için "pm2 komutu bulunamadı" ibaresini kullanmaya çalıştım. Node.js'yi herhangi bir problem olmadan kullanabilirim ama pm2 çalışmıyor.

Bunu nasıl çözebilirim? küresel

cevap

25

yükleyin PM2: root olarak

çalışma:

npm i -g pm2 

veya kullanıcı

sudo npm i -g pm2 

sudo-er ve daha sonra kullanıcıya geri dönmek (veya kök kalırsam eğer o kök kullanıcı tarafından oluşturuldu) ve çalıştırın:

pm2 start server.js 
+1

teşekkür ederiz.Benim için çalıştı. Bunu 5 dakika içinde cevap olarak kabul ediyorum. –

+1

PM2 kullanarak üretim modu için yapı oluşturabilir miyiz? – Deep

+1

@DeepKakkar aslında pm2, nodejs uygulama süreçlerini çalıştırmak/izlemek için bir pakettir. Yapım araçlarını arıyorsunuz, bu yüzden aşağıdakilere bir göz atın: webpack, gulp, dağıtım/paketleme otomasyonu yapan homurdanı. PM - Paket Yöneticisi değil, Süreç Yöneticisi anlamına gelir. – num8er

3

PM2, Node.js uygulamaları için işlem yöneticisi. PM2 temel olarak uygulamaları yönetir (bunları bir hizmet olarak arka planda çalıştırır). Biz sudo izinlerine sahip küresel PM2 yüklemek kullanılabilir sistem genelinde olacak şekilde -g seçeneği global modül yüklemek için UÖM'yi söyler

sudo npm install -g pm2 

hesabı nasıl burası. bu yüklendikten sonra, olarak yüklenir yolunu kontrol:

whereis pm2 
pm2: /opt/node/bin/pm2 /opt/node/lib/node_modules/pm2/bin/pm2 

Şimdi, başlangıç ​​bash komut bu yolu eklemeniz gerekir. Ekle ~/.bashrc dosyasında aşağıdaki satırı ekleyin.

export PATH=$PATH:/opt/node/lib/node_modules/pm2/bin 

Şimdi yeniden giriş ya da (böylece bash komut çalıştırır ve yol ayarlanır)

source ~/.bashrc 

şöyle bash betiği kaynak ve şimdi çalışmalıdır. PM2 80 portu kullanımı hakkında

pm2 status 
+1

'.bashrc' için yol eklemenize gerek yok, eğer kurduğunuzda,'/usr/bin/pm2' veya '/ usr/local/bin/pm2' gibi çalıştırılabilir bir dosya yapar. Belki başka bir dağıtımda oraya koyamazsınız, ya da belki de kaynaklardan derledikten sonra Yapmayı unutmuştunuz: 'make install 'ya da tüm sonuçları manuel olarak/opt/node'a kopyaladınız. Bu durumda neden olmasın: 'sudo ln -s/opt/node/bin/pm2/usr/bin/pm2' – num8er

+1

Teşekkürler @ num8er, Bunu deneyeceğim. Güzel açıklama olsa da :-) – Nicks

0

Hata pM2 durumunu kontrol?

Bu konuda yanlış bir şekilde karşılaşmak, sudo ile çalışmaya çalışıyor.

Bunu yapmanın doğru yolu, sudo su numaralı kök olarak oturum açmak ve pm2 start app.js --name "whatever" --watch'u çalıştırmak olacaktır.

Kök olarak oturum açtığınızda, bashrc veya profil dosyalarını yapılandırmanıza gerek yoktur. Ancak, root olarak, betik nodejs'in exec() işlevini tehlikeli olarak kullanabilir. Bunu önlemek için, sonra bazı zaman aşımı sonra ayrıcalığı düşürmek, komut ilk kök şeyler: Bu net talimatlar için çok

// I use port 80 first.. at this point the script's UID is root. 

app.listen(80); 

// After 2 seconds we switch to UID `azureuser`, which obviously isn't root anymore. 

setTimeout(function() { 
    process.setuid("azureuser"); 
}, 2000); 
+0

gibi görünüyor Soruyu anlamadım. (: – num8er