[英]pm2 app in symlink'd directory yields 502 Bad Gateway
我有一個配置為通過pm2
在目錄結構中運行的node.js應用程序,如下所示:
/opt/project/v1/web/index.js
/opt/project/current -> /opt/project/v1
也就是說, current是到v1的符號鏈接。 我需要pm2
在current / web中啟動應用程序,而不是在v1 / web中啟動 。
我首先這樣做:
cd /opt/project/current/web
pm2 start index.js
該網站運行正常,但pm2
解決符號鏈接到/opt/project/v1/web/index.js。 因此,我找到了這個有關pm2
解決符號鏈接的論壇主題 ,然后從那里嘗試了這一點:
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
的命令有了非常基本的工作知識,但是僅此而已。
所以我的問題是:如何使該應用程序在symlink的路徑中運行,為什么在嘗試時它以502響應?
好吧,我知道了。 我通過使用以下配置文件(保存為app.json)解決了該問題:
{
"apps": [
{
"name": "index",
"script": "./index.js",
"cwd": "/opt/project/current/web",
"exec_mode": "fork_mode",
"env": {
}
}
]
}
像這樣開始:
cd /opt/project
pm2 start current/web/app.json
而且它的工作原理很吸引人,盡管我不確定究竟是哪種差異解決了問題,但我沒有花時間進行進一步的研究。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.