Ich benutze Sails.js 0.10.5 auf Knoten 0.10.33 auf Ubuntu Trusty. Ich möchte den Knotenprozess als Nicht-Root-Benutzer mit den geringstmöglichen Rechten in der Produktionsumgebung ausführen. Ich bin mit den verschiedenen Optionen für die Bindung an Ports unter 1024 vertraut, aber ich bin mehr mit Verzeichnisberechtigungen beschäftigt.
Im Idealfall würde ich bevorzugen, dass der Knotenprozess nur Schreibzugriff auf seine Protokolldateien hat und sonst nichts. Es sollte nur Lesezugriff auf das Verzeichnis mit app.js und darunter haben.
Im Moment musste ich Schreibzugriff auf das ./.tmp-Verzeichnis und auch auf das ./views-Verzeichnis gewähren, da die Grunt-Tasks beim Start ausgeführt werden. Ich würde die Grunt-Tasks zur Bereitstellungszeit lieber als einen anderen Benutzer als zur Laufzeit ausführen. Der Befehl sails www
erschien vielversprechend, aber ich konnte nicht das gewünschte Ergebnis erzielen.
Kann mir jemand bitte die richtige Richtung zeigen, um Sails.js mit null Schreibzugriff auf seine Assets, Views usw. auszuführen?
Die einfachste Lösung für mich scheint zu sein, die grunt-Aufgaben, die die erhöhten Rechte benötigen, in eine separate Datei zu trennen, die Sie mit einem anderen Benutzer bei der Bereitstellung aufrufen können. Dann müssen die Segel nichts mehr tun und können nur gelesen werden.
Verwenden Sie sails www
, um statische Elemente zu erstellen
chmod -R Alle Dateien und Verzeichnisse, damit Ihr Benutzer und der Webserver (Gruppe) auf die Dateien zugreifen können.
Verwenden Sie nginx / apache, um einen Webserver auf Port 80/443 und Proxy-Anfragen an Segel zu hosten (die auf einem eigenen Port oder über einen Unix-Socket laufen).
Führen Sie Segel mit PM2 aus, um es in Betrieb zu halten und Logs verwalten / sammeln zu lassen.
Sails werden zwar angehoben, können aber ihr .tmp-Verzeichnis nicht schreiben, was nicht einmal nötig sein sollte, da all Ihre statischen Dateien über nginx / apache an das www-Verzeichnis weitergeleitet werden.
EDITED: Ich benutze PM2 mit Apache als Proxy (mit Mod WS).
Sie können einen Proxy wie Apache verwenden, um von Port 80 zu anderen internen Serverports auf Hostbasis zu routen.
Auf diese Weise können Sie mehrere Apps auf demselben Server ausführen.
Es hat viele nützliche Funktionen wie sehen Sie die Protokolle, wie viele Apps im Terminal, starten und protokollieren Sie abgestürzte Apps, führen Sie App als Benutzer, App-Status ... etc.
Pm2-Link: Ссылка
PM2-Konfigurationen: Ссылка
Tags und Links javascript gruntjs node.js ubuntu sails.js