Phusion Passenger: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
 
(18 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Phusion Passenger ist ein Apache-Plugin zur Integration von Apps auf Domain (vhost) Ebene.
Phusion Passenger ist ein Apache-Plugin zur Integration von Apps auf Domain (vhost) Ebene.
Dabei kann es sich z.B. um [[NodeJS]], [[Etherpad installieren|Etherpad]], [[RubyOnRails]] und weiteren Laufzeitumgebungen handeln.
Dabei kann es sich z.B. um [[NodeJS]], [[RubyOnRails]], [[Django|Django]] oder weitere Laufzeitumgebungen handeln.


== Aktivierung / Deaktivierung ==
== Aktivierung / Deaktivierung ==


Sobald im Verzeichnis app bzw. app-ssl unter der aufgeschalteten Domain eine App existiert,
Das Passenger-Modul wird über eine Domain-Option in HSAdmin aktiviert. Nach der Aktivierung werden Anwendungen im Verzeichnis "app" bzw. "app-ssl" unter der aufgeschalteten Domain im Phusion Passenger ausgeführt
wird dies von Phusion Passenger ausgefürt


Phusion Passenger ist immer für die gesamte aufgeschaltete Domain aktiviert,
Phusion Passenger ist immer für die gesamte aufgeschaltete Domain aktiviert,
die Bereitstellung einer App wirkt also auch auf Subdomains im Verzerichnis 'subs'.
die Bereitstellung einer App wirkt also auch auf Subdomains im Verzeichnis 'subs'.
Insbesondere wird damit PHP für die jeweilige Domain deaktiviert.
Insbesondere wird damit PHP für die jeweilige Domain deaktiviert.
Statischen Dateien (z.B. index.html) aus htdocs* und subs* sind davon nicht betroffen.
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.
Idealerweise wird 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.  
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 nicht mehr ausgewertet wird.
Ä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 geslöscht werden.
Zum Deaktivieren einer App muss diese im app und app-ssl Verzeichnis gelöscht werden.


== Konfiguriation ==
== Konfiguration ==


Das Plugin ist zwar unabhängig von Einträgen in der .htaccess aktiv,
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.
kann aber über die .htaccess Datei im jeweiligen Domain-Verzeichnis konfiguriert werden,
z.B. in "/home/pacs/xyz00/users/example/doms/example.com/.htaccess":


    PassengerNodejs /home/pacs/xyz00/users/example/.nvm/versions/node/v6.11.2/bin/node
Die Voreinstellungen sind:
<syntaxhighlight lang=apache>
PassengerPython /usr/bin/python3


PassengerRuby /usr/bin/ruby
PassengerNodejs /usr/bin/node
</syntaxhighlight>
Eigene Konfigurationen wären zum Beipiel (Für den Webspace "xyz00" und den User "xyz00-example"):
<syntaxhighlight lang=apache>
PassengerNodejs /home/pacs/xyz00/users/example/.nvm/versions/node/v20.11.0/bin/node
</syntaxhighlight>
oder
<syntaxhighlight lang=apache>
PassengerRuby /home/pacs/xyz00/users/example/.rbenv/shims/ruby
</syntaxhighlight>
oder
<syntaxhighlight lang=apache>
PassengerPython /home/pacs/xyz00/users/example/my_venv/bin/python
</syntaxhighlight>
(Nähere Informationen bitte den jeweiligen Wiki-Seiten über die spezifischen Laufzeitumgebungen entnehmen.)
(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 ==
== Neueinlesen der Konfiguration / Restart der App ==
<strong>Über den <code>passenger-config</code>-Befehl:</strong><br>
⚠️ <strong>Hinweis:</strong> sudo -u reicht hier nicht aus. Beispielsweise su - xyz00-anwendung verwenden damit die App erkannt wird. ⚠️
<syntaxhighlight lang=output>
xyz00-anwendung@host:~$ passenger-config restart-app
Please select the application to restart.
Tip: re-run this command with --help to learn how to automate it.
If the menu doesn't display correctly, press '!'
‣  /home/doms/anwendung.domain/app-ssl/ (production)
    Cancel
</syntaxhighlight>
Die gewünschte Anwendung jetzt nurnoch mit <code>Enter</code> bestätigen.
<strong>Über eine Trigger-Datei:</strong>


Passenger Apps werden wir folgt neu gestartet oder neu geladen:
Passenger Apps werden wir folgt neu gestartet oder neu geladen:
<syntaxhighlight lang=shell>
    mkdir app(-ssl)/tmp
mkdir app(-ssl)/tmp
    touch app(-ssl)/tmp/restart.txt
touch app(-ssl)/tmp/restart.txt
 
</syntaxhighlight>
Das führt nach einer Weile zu einem graceful Restart der App.  
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.  
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.  
Im Rahmen dieses Restarts sollten geänderte .htaccess Direktiven Wirkung entfalten.  
Entsprechendes gilt für Änderungen an der Applikation selbst.
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: [https://lists.hostsharing.net/archiv/support/2015-January/066080.html]
----
[[Kategorie:HSDoku]]
[[Kategorie:Passenger]]

Aktuelle Version vom 28. Juni 2024, 16:23 Uhr

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

Das Passenger-Modul wird über eine Domain-Option in HSAdmin aktiviert. Nach der Aktivierung werden Anwendungen im Verzeichnis "app" bzw. "app-ssl" unter der aufgeschalteten Domain im 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 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 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

Über den passenger-config-Befehl:
⚠️ Hinweis: sudo -u reicht hier nicht aus. Beispielsweise su - xyz00-anwendung verwenden damit die App erkannt wird. ⚠️

xyz00-anwendung@host:~$ passenger-config restart-app
Please select the application to restart.
Tip: re-run this command with --help to learn how to automate it.
If the menu doesn't display correctly, press '!'

 ‣   /home/doms/anwendung.domain/app-ssl/ (production)
     Cancel

Die gewünschte Anwendung jetzt nurnoch mit Enter bestätigen.

Über eine Trigger-Datei:


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

Links

  • weitere Tipps und Beispiel für die Programmiersprachen Python und Ruby in der Support Mailingliste: [1]