У меня есть экземпляр Apostrophe-CMS, который я пытаюсь развернуть на производство в данный момент. Запуск sudo npm start
работает отлично, а приложение загружается. Однако, когда я пытаюсь иметь пм2 демон запустить я получаю сообщение об ошибке символьной ссылки:проблемы с запуском приложения-узла с pm2 в процессе производства
Error: EEXIST: file already exists, symlink '/var/sites/hackday-2016-microsite/node_modules/apostrophe/lib/modules/apostrophe-assets/public' -> '/var/sites/hackday-2016-microsite/public/modules/apostrophe-assets' hackday2016-28 at Error (native) hackday2016-28 at Object.fs.symlinkSync (fs.js:1048:18) hackday2016-28 at Object.self.linkAssetFolderOnUnix (/var/sites/hackday-2016-microsite/node_modules/apostrophe/lib/modules/apostrophe-assets/index.js:447:10) hackday2016-28 at Object.self.linkAssetFolder (/var/sites/hackday-2016-microsite/node_modules/apostrophe/lib/modules/apostrophe-assets/index.js:424:14) hackday2016-28 at /var/sites/hackday-2016-microsite/node_modules/apostrophe/lib/modules/apostrophe-assets/index.js:402:14 hackday2016-28 at /var/sites/hackday-2016-microsite/node_modules/lodash/index.js:3073:15 hackday2016-28 at baseForOwn (/var/sites/hackday-2016-microsite/node_modules/lodash/index.js:2046:14) hackday2016-28 at /var/sites/hackday-2016-microsite/node_modules/lodash/index.js:3043:18 hackday2016-28 at Function.<anonymous> (/var/sites/hackday-2016-microsite/node_modules/lodash/index.js:3346:13) hackday2016-28 at self.symlinkModules (/var/sites/hackday-2016-microsite/node_modules/apostrophe/lib/modules/apostrophe-assets/index.js:398:9) hackday2016-28 at /var/sites/hackday-2016-microsite/node_modules/async/lib/async.js:718:13 hackday2016-28 at iterate (/var/sites/hackday-2016-microsite/node_modules/async/lib/async.js:262:13) hackday2016-28 at async.forEachOfSeries.async.eachOfSeries (/var/sites/hackday-2016-microsite/node_modules/async/lib/async.js:281:9) hackday2016-28 at _parallel (/var/sites/hackday-2016-microsite/node_modules/async/lib/async.js:717:9) hackday2016-28 at Object.async.series (/var/sites/hackday-2016-microsite/node_modules/async/lib/async.js:739:9) hackday2016-28 at Object.self.afterInit (/var/sites/hackday-2016-microsite/node_modules/apostrophe/lib/modules/apostrophe-assets/index.js:349:20)
Хм, уточняющий вопрос? Вы используете pm2 для запуска нескольких экземпляров одновременно и баланса нагрузки? Это неплохо, но это имеет отношение к тому, что я предлагаю дальше. –
PM2 управляет несколькими узловыми приложениями на этом единственном сервере, но только один экземпляр приложения апострофа. – jerikojones
Это может быть проблема с разрешениями, если пользователь, выполняющий апостроф, не имеет прав на выполнение, поскольку он считает нужным публиковать/модули. Также может быть, что pm2 настроен на запуск более одного процесса для балансировки нагрузки, о чем я спрашивал раньше. Порекомендуйте запустить «apostrophe app apporost: генерация» после развертывания и перед запуском серверных процессов. Это позволяет избежать состояния гонки. –