我有一個Apostrophe-CMS的實例,我正試圖部署到生產當前。運行sudo npm start
工作正常,應用程序啓動。然而,當我嘗試有PM2守護進程運行它,我得到一個符號鏈接錯誤:開始在生產中使用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被配置爲運行多個進程以實現負載平衡,這正是我之前所提到的。建議在部署之後和啓動服務器進程之前運行「節點應用程序撇號:生成」。這可以避免競爭條件。 –