Phusion Passenger
Phusion Passenger ist ein Apache-Plugin zur Integration von Apps auf Domain (vhost) Ebene. Dabei kann es sich z.B. um NodeJS, RubyOnRails, Django oder weitere Laufzeitumgebungen handeln.
Aktivierung / Deaktivierung
Sobald im Verzeichnis app bzw. app-ssl unter der aufgeschalteten Domain eine App existiert, wird dies von Phusion Passenger ausgeführt
Phusion Passenger ist immer für die gesamte aufgeschaltete Domain aktiviert, die Bereitstellung einer App wirkt also auch auf Subdomains im Verzeichnis 'subs'. Insbesondere wird damit PHP für die jeweilige Domain deaktiviert. Statischen Dateien (z.B. index.html) aus htdocs* und subs* sind davon nicht betroffen. Idealerweise wird daher für jede App eine eigene Subdomain mit HSAdmin aufgeschaltet.
Sobald eine App einmal geladen ist, sind die Settings und Mappings Bestandteil der transienten Apache vhost-Konfiguration. Änderungen an .htaccess-Settings bzgl. Passenger kommen dann nicht mehr direkt zum Tragen, weil die .htaccess zu Gunsten der Effizienz dann nicht mehr ausgewertet wird.
Zum Deaktivieren einer App muss diese im app und app-ssl Verzeichnis gelöscht werden.
Konfiguration
Die Auswahl des Interpreters für die Skriptsprachen Python, Ruby und JavaScript (NodeJS) für die Ausführung Apache-Passenger-Modul erfolgt über Variablen "PassengerPython", "PassengerRuby" und "PassengerNodejs" in der Apache-VHost-Definition für die Domain. Der Inhalt dieser Variablen wird über HSAdmin im Dialog "Domain ändern" gesteuert.
Die Voreinstellungen sind:
PassengerPython /usr/bin/python3
PassengerRuby /usr/bin/ruby
PassengerNodejs /usr/bin/node
Eigene Konfigurationen wären zum Beipiel (Für den Webspace "xyz00" und den User "xyz00-example"):
PassengerNodejs /home/pacs/xyz00/users/example/.nvm/versions/node/v20.11.0/bin/node
oder
PassengerRuby /home/pacs/xyz00/users/example/.rbenv/shims/ruby
oder
PassengerPython /home/pacs/xyz00/users/example/my_venv/bin/python
(Nähere Informationen bitte den jeweiligen Wiki-Seiten über die spezifischen Laufzeitumgebungen entnehmen.)
Die Einstellung "PassengerFriendlyErrorPages on" kann ebenfall in HSAdmin als Domain-Option aktiviert werden. Nach dem Abschluss des Debugging sollte die Option wieder abgeschaltet werden!
Neueinlesen der Konfiguration / Restart der App
Passenger Apps werden wir folgt neu gestartet oder neu geladen:
mkdir app(-ssl)/tmp touch app(-ssl)/tmp/restart.txt
Das führt nach einer Weile zu einem graceful Restart der App. D.h. die einzelnen Prozesse werden sukzessive zwischen der Bedienung von HTTP-Requests neu gestartet. Im Rahmen dieses Restarts sollten geänderte .htaccess Direktiven Wirkung entfalten. Entsprechendes gilt für Änderungen an der Applikation selbst.
Minimale Programme für Tests von Passenger
- Python: siehe Eigenes_Python_installieren#Python_Web_Applikation_mit_Passenger
- Node: siehe NodeJS#NodeJS_Web-Applikation
- Ruby: siehe RubyRBEnv#Ruby_Web_Applikation_mit_Passenger
Links
- weitere Tipps und Beispiel für die Programmiersprachen Python und Ruby in der Support Mailingliste: [1]