2016-07-04 218 views
12

我將node.js和npm安裝到了我的centOS 7服務器上。但我在pm2有問題。 其實真正的問題是我沒有在Linux的經驗,我不知道如何改變路徑。 這裏是文件夾結構。未找到PM2命令

* 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 

我通過鍵入cd chat進入文件夾,並用npm install pm2安裝PM2。

之後,我嘗試通過鍵入pm2 server.js服務器返回「pm2命令未找到」使用pm2爲我的server.js。我可以使用node.js沒有任何問題,但pm2不工作。

我該如何解決這個問題?

回答

25

安裝PM2全球:

運行爲根:

npm i -g pm2 

,或者如果用戶是須藤洱

sudo npm i -g pm2 

,然後回去用戶(或留根,如果它由root用戶創建)並運行它:

pm2 start server.js 
+1

非常感謝您的明確指示。它爲我工作。我在5分鐘內接受這個答案。 –

+1

我們可以使用PM2創建生產模式嗎? – Deep

+1

@DeepKakkar其實pm2是運行/監控nodejs應用程序進程的軟件包。您正在尋找構建工具,請看看:webpack,gulp,grunt,它們可以自動化部署/打包。 PM - 代表進程管理器,不代表軟件包管理器。 – num8er

3

PM2 Node.js應用程序的進程管理器。 PM2主要管理應用程序(在後臺作爲服務運行它們)。所以這是我們如何使用sudo權限安裝在全球佔PM2

sudo npm install -g pm2 

-g選項告訴NPM在全球範圍內安裝模塊,所以它的系統範圍內可用。 一旦被安裝,檢查安裝的路徑爲:

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

現在,我們需要添加啓動bash腳本這條道路。在〜/ .bashrc文件的任何位置添加以下行。

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

現在重新登錄或源bash腳本如下(使bash腳本運行和路徑設置)

source ~/.bashrc 

,現在它應該運行。檢查pm2的狀態

pm2 status 
+1

當你安裝它時,不需要將其路徑添加到'.bashrc'中,因爲它會生成可執行文件'/ usr/bin/pm2'或'/ usr/local/bin/pm2'。也許在另一個分配中,它不會放在那裏,或者可能在編譯源代碼後忘記了:'make install'或者您已經將所有結果手動複製到'/ opt/node'。所以在這種情況下爲什麼不這樣做:'sudo ln -s/opt/node/bin/pm2/usr/bin/pm2' – num8er

+1

Thanks @ num8er,我會試試這個。很好的澄清,但:-) – Nicks

0

使用端口80與PM2時出錯?

這樣做的錯誤方法是嘗試運行sudo

正確的做法是以root身份登錄sudo su,然後運行pm2 start app.js --name "whatever" --watch

以root身份登錄,不需要配置任何bashrc或配置文件。但是,作爲root用戶,腳本可能會危險地使用nodejs的exec()函數。爲避免出現這種情況,請先在腳本中先執行根目錄,然後再在一段時間後降低您的權限:

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

似乎你沒有理解這個問題。 (: – num8er