我有配置成運行通過pm2
在目錄結構中這樣的應用程序的node.js:PM2應用502產生錯誤的網關
/opt/project/v1/web/index.js
/opt/project/current -> /opt/project/v1
即,電流是一個符號鏈接到v1。我需要pm2
才能啓動current/web,而不是v1/web。
我第一次做這樣的:
cd /opt/project/current/web
pm2 start index.js
該網站運行正常,但pm2
解決了符號鏈接/opt/project/v1/web/index.js。所以我發現this forum thread about pm2
resolving symlinks,並從那裏我嘗試這樣做,而不是:
cd /opt/project
pm2 start current/web/index.js
的過程中出現開始,pm2
顯示了它在列表中,顯示了象徵性的路徑,除了瀏覽網頁,現在產生一個502(錯誤網關)錯誤。
的pm2 show
爲最後一次嘗試的輸出是:
┌───────────────────┬───────────────────────────────────────┐
│ status │ online │
│ name │ index │
│ restarts │ 7 │
│ uptime │ 2s │
│ script path │ /opt/project/current/web/index.js │
│ script args │ N/A │
│ error log path │ /root/.pm2/logs/index-error-0.log │
│ out log path │ /root/.pm2/logs/index-out-0.log │
│ pid path │ /root/.pm2/pids/index-0.pid │
│ interpreter │ node │
│ interpreter args │ N/A │
│ script id │ 0 │
│ exec cwd │ /opt/project │
│ exec mode │ fork_mode │
│ node.js version │ 6.8.1 │
│ watch & reload │ ✘ │
│ unstable restarts │ 0 │
│ created at │ 2016-12-03T22:08:58.972Z │
└───────────────────┴───────────────────────────────────────┘
思考,也許不同的CWD是一個問題,然後我想這一點,也是從那個線程:
創建文件app.json:
{ "apps": [ { "name": "index", "script": "index.js", "args": [], "watch": true, "node_args": "", "merge_logs": true, "cwd": "/opt/project/current/web", "env": { } } ] }
開始
pm2 start app.json
當我這樣做的結果是相同的,只是pm2
上次嘗試顯示正確的CWD,但仍然得到了日誌文件的502
似乎都不顯示任何錯誤,pm2將該應用程序顯示爲在線。
我真的不知道關於node.js或pm2
的任何信息,我交給了一個現有的系統,並負責重新組織文件系統。我現在對pm2
的命令有一個非常基本的工作知識,但就是這樣。
所以我的問題是:如何讓應用程序在符號鏈接的路徑中運行,以及爲什麼當我嘗試時用502響應?