2016-07-04 28 views
12

Zainstalowałem node.js i npm na moim serwerze centOS 7. Ale mam problemy z pm2. Właściwie prawdziwy problem polega na tym, że nie mam doświadczeń w Linuksie i nie wiem, jak zmienić ścieżkę. Oto struktura folderów.Komenda PM2 nie została znaleziona

* 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 

wszedłem folderu wpisując cd chat i zainstalowane PM2 npm install pm2.

Po tym spróbowałem użyć pm2 dla mojego server.js wpisując pm2 server.js serwer zwraca "nie znaleziono polecenia pm2". Mogę używać node.js bez żadnego problemu, ale pm2 nie działa.

Jak mogę to rozwiązać?

Odpowiedz

25

Install PM2 globalnie:

uruchamiane jako root:

npm i -g pm2 

lub jeśli użytkownik jest sudo-er

sudo npm i -g pm2 

a następnie wrócić do użytkownika (lub pobyt w root, jeśli to został utworzony przez użytkownika root) i uruchom go:

pm2 start server.js 
+1

Dziękuję bardzo za jasne instrukcje.To zadziałało dla mnie. Przyjmuję to jako odpowiedź w 5 minut. –

+1

czy możemy stworzyć kompilację do trybu produkcji za pomocą PM2? – Deep

+1

@DeepKakkar faktycznie pm2 to pakiet do uruchamiania/monitorowania procesów aplikacji nodejs. Poszukujesz narzędzi do budowy, więc spójrz na: webpack, gulp, grunt, który automatyzuje wdrażanie/pakowanie. PM - oznacza Process Manager, a nie Package Manager. – num8er

3

PM2 menedżer procesów dla aplikacji Node.js. PM2 w zasadzie zarządza aplikacjami (uruchamiaj je w tle jako usługa). Tak to jest, jak zainstalować PM2 globalnie z uprawnieniami sudo konta

sudo npm install -g pm2 

Opcja -g mówi NPM do globalnie zainstalować moduł, tak że jest ona dostępna dla całego systemu. Gdy ten jest zainstalowany, należy sprawdzić zainstalowaną ścieżkę jako:

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

Teraz musimy dodać tę ścieżkę w skrypcie bash uruchamiania. Dodaj dodaj następujący wiersz w dowolnym miejscu w pliku ~/.bashrc.

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

Teraz ponownie logowanie lub źródła skryptu bash następująco (tak, że skrypt bash i biegnie ścieżka jest ustawiona)

source ~/.bashrc 

a teraz powinien działać. sprawdzić status pm2

pm2 status 
+1

Nie trzeba dodawać ścieżki do '.bashrc', ponieważ po zainstalowaniu tworzy plik wykonywalny'/usr/bin/pm2' lub '/ usr/local/bin/pm2'. Może w innym dystrybutorze go tam nie umieszcza, a może po kompilacji ze źródeł, których zapomniałeś zrobić: 'make install' lub skopiowałeś wszystkie wyniki ręcznie do'/opt/node'. więc w tym przypadku, dlaczego tego nie robić: 'sudo ln -s/opt/node/bin/pm2/usr/bin/pm2' – num8er

+1

Dzięki @ num8er, spróbuję tego. Fajne wyjaśnienie :-) – Nicks

0

Błąd przy korzystaniu z portu 80 z PM2?

Nieprawidłowy sposób postępowania w tej sprawie jest próbą uruchomienia z sudo.

Prawidłowym sposobem wykonania tego byłoby zalogowanie się jako root sudo su, a następnie uruchomienie pm2 start app.js --name "whatever" --watch.

Zalogowanie się jako root, nie ma potrzeby konfigurowania żadnych plików bashrc lub profili. Jednak, jako root, skrypt może niebezpiecznie używać funkcji exec() nodejsa. Aby tego uniknąć, najpierw wykonaj root ze skryptem, a następnie po pewnym czasie przestaw obniżenie uprawnień:

// 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

Wygląda na to, że nie zrozumiałeś pytania. (: – num8er

Powiązane problemy