{"id":9027,"date":"2019-12-16T11:32:00","date_gmt":"2019-12-16T11:32:00","guid":{"rendered":"https:\/\/www.wegneronline.com\/blog\/2019\/12\/16\/ruby-passenger-mit-apache-nach-upgrade-auf-debian-buster\/"},"modified":"2024-02-22T08:37:35","modified_gmt":"2024-02-22T07:37:35","slug":"ruby-passenger-mit-apache-nach-upgrade-auf-debian-buster","status":"publish","type":"post","link":"https:\/\/www.wegneronline.com\/blog\/2019\/12\/16\/ruby-passenger-mit-apache-nach-upgrade-auf-debian-buster\/","title":{"rendered":"Ruby Passenger mit Apache nach Upgrade auf Debian Buster"},"content":{"rendered":"\n<p>Ach je, das war ein Schaff! \ud83d\ude41<\/p>\n\n\n\n<p>Auf einem unserer Server <a href=\"http:\/\/igl.uni-mainz.de\">im Institut<\/a> setzen wir Redmine als Ticketsystem ein, welches auf Ruby on Rails basiert. Das bedeutet im Umkehrschluss, dass unser freundlicher Indianer-Webserver Apache die Anwendung nicht einfach mit Bordmitteln ausgeben kann. (Nginx \u00fcbrigens auch nicht, welchen ich inzwischen aus Performance-Gr\u00fcnden bevorzuge \ud83d\ude09 )<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Der Apache wird daher um einen kleinen Web-App-Server namens &#8222;<a href=\"https:\/\/www.phusionpassenger.com\/\">Passenger<\/a>&#8220; von Phusion&nbsp;erweitert. Das ganze l\u00e4uft erstaunlich stabil, auch wenn der Passenger nach einem Reload oder Neustart von Apache tats\u00e4chlich 10-20 Sekunden ben\u00f6tigt, um wieder hochzufahren. Wenn es dann mal l\u00e4uft, l\u00e4uft es.<\/p>\n\n\n\n<p>Um den Passenger zu installieren sind mehrere Konfigurationsdateien notwendig, u.a. auch in &#8222;mods-enabled&#8220; und im &#8222;conf.d&#8220; vom Apache. Als ich nun neulich auf Debian Buster upgraden wollte, scheiterte es nach erfolgreichem Upgrade dann allerdings an der Tatsache, dass der Passenger sich konstant weigerte zu laufen.<\/p>\n\n\n\n<p>&#8230;zumindest <em>glaubte <\/em>ich das, denn der Apache war nur einen 403-Fehler mit dem Logeintrag, dass er keine Index-Datei im Verzeichnis finden konnte. An sich korrekt, wenn kein Passenger l\u00e4uft, denn im Regelfall sollte die Anfrage an den&nbsp;Passenger weitergeleitet werden, der dann den entsprechenden Output generiert (einfach ausgedr\u00fcckt).<\/p>\n\n\n\n<p>Meine Vermutung war also, dass Passenger einfach nicht l\u00e4uft. Ein Blick in die Prozessliste sagte aber, dass der Passenger fr\u00f6hlich vor sich hin l\u00e4uft und ich konnte partout keine Problemursache finden. Ich habe in meiner Verzweiflung den Passenger sogar noch mal neu kompilieren lassen &#8211; was \u00fcbrigens hundert Milliarden Jahre dauert, gef\u00fchlt.<\/p>\n\n\n\n<p>Bis ich dann irgendwann auf StackExchange (wo auch sonst) den rettenden Hinweis gefunden habe! Es gibt einen sehr versteckten Befehl der Passenger-Konfiguration:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>passenger-config validate-install<\/p>\n<\/blockquote>\n\n\n\n<p>Dieser pr\u00fcft die Installation auf m\u00f6gliche Probleme, also quasi die &#8222;Windows Fehlerbehebung&#8220;, nur in sinnvoll und n\u00fctzlich. Und was soll ich sagen: Beim Upgrade auf Debian Buster &#8211; und dem damit einhergehenden Upgrade von RoR und dem Phusion Passenger &#8211; wird eine neue Version des Passengers installier (6.x).<\/p>\n\n\n\n<p>Freundlicherweise legt der Upgrade-Installer auch einen Link in den &#8222;mods-enabled&#8220; und &#8222;conf.d&#8220; an, entfernt aber nicht den alten Eintrag. Dieser alte Eintrag wiederum st\u00f6rt Apache nicht solange der Dateipfad zur alten Version noch existiert. Ob der alte Passenger l\u00e4uft oder nicht ist dann auch egal, Apache leitet stoisch den Datenverkehr ins Nirvana. Und aus irgendwelchen Gr\u00fcnden meldet sich auch Passenger nicht, wenn zwei Versionen parallel laufen &#8211; oder eben nicht laufen.<\/p>\n\n\n\n<p>So kam es also, dass Apache den Passenger 5.3.7 ansteuern wollte, in der Realit\u00e4t aber nur der Passenger 6.0.4 lief. Die beiden Anwendungen redeten also unbemerkt aneinander vorbei.<\/p>\n\n\n\n<p>Durch den o.g. Validate-Befehl wurde mir dann aber der richtige Hinweis gegeben, n\u00e4mlich dass zwei Konfigurationsdateien f\u00fcr Passenger existieren und ich m\u00f6ge mich doch bitte f\u00fcr eine entscheiden, wenn ich nicht zwei Versionen parallel laufen habe.&nbsp;<\/p>\n\n\n\n<p>Nichts leichter als das!<\/p>\n\n\n\n<p>Alle Konfigurationsdateien, v.a. im Apache-Verzeichnis, vom 5.x gel\u00f6scht und sicherheitshalber noch mal die Configs vom 6.x gepr\u00fcft &#8211; zack, l\u00e4uft. \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ach je, das war ein Schaff! \ud83d\ude41 Auf einem unserer Server im Institut setzen wir Redmine als Ticketsystem ein, welches auf Ruby on Rails basiert. Das bedeutet im Umkehrschluss, dass unser freundlicher Indianer-Webserver Apache die Anwendung nicht einfach mit Bordmitteln ausgeben kann. (Nginx \u00fcbrigens auch nicht, welchen ich inzwischen aus Performance-Gr\u00fcnden bevorzuge \ud83d\ude09 )<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-9027","post","type-post","status-publish","format-standard","hentry","category-5-informatik"],"_links":{"self":[{"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/posts\/9027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/comments?post=9027"}],"version-history":[{"count":2,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/posts\/9027\/revisions"}],"predecessor-version":[{"id":9124,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/posts\/9027\/revisions\/9124"}],"wp:attachment":[{"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/media?parent=9027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/categories?post=9027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/tags?post=9027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}