Ich habe eine Instanz von Apostrophe-CMS, die ich zur Zeit in der Produktion bereitstellen möchte. Running sudo npm start
funktioniert gut und die Anwendung startet. Aber wenn ich versuche, das PM2-Daemon, um es ausführen ich einen Symlink Fehler bekommen:Probleme beim Starten einer Knoten-App mit PM2 in der Produktion
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)
Hmm, eine klärende Frage? Verwenden Sie pm2, um mehrere Instanzen gleichzeitig zu starten und einen Lastenausgleich durchzuführen? Das ist nicht schlecht, aber es ist relevant für das, was ich als nächstes vorschlagen würde. –
PM2 verwaltet mehrere Knotenanwendungen auf diesem einzelnen Server, aber nur eine Instanz der Apostroph-Anwendung. – jerikojones
Dies könnte ein Berechtigungsproblem sein, wenn der Benutzer, der Apostroph ausführt, keine Berechtigungen hat, die er in public/modules ausführen kann. Es könnte auch sein, dass PM2 so konfiguriert ist, dass es mehr als einen Prozess für den Lastausgleich ausführt, was ich zuvor gefragt habe. Empfehlen Sie "node app apostrophe: generation" nach der Bereitstellung und vor dem Starten von Serverprozessen. Dies vermeidet eine Wettlaufsituation. –