У меня есть приложение node.js, настроенное для запуска через pm2
в такой структуре каталогов:
/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 (Bad Gateway).
Вывод 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, когда я пытаюсь?