簡體   English   中英

symlink目錄中的pm2應用會產生502 Bad Gateway

[英]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的符號鏈接。 我需要pm2current / 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可能是一個問題,然后我從那個線程嘗試了這個:

  1. 創建一個文件app.json

     { "apps": [ { "name": "index", "script": "index.js", "args": [], "watch": true, "node_args": "", "merge_logs": true, "cwd": "/opt/project/current/web", "env": { } } ] } 
  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM