{"id":8397,"date":"2015-03-01T19:06:46","date_gmt":"2015-03-01T19:06:46","guid":{"rendered":"https:\/\/wp.okra.host\/article\/passenger-application-layout\/"},"modified":"2021-03-07T14:08:46","modified_gmt":"2021-03-07T13:08:46","slug":"passenger-application-layout","status":"publish","type":"ht_kb","link":"https:\/\/kb.okra.host\/de\/article\/passenger-application-layout\/","title":{"rendered":"Layout der Fahrgastanwendung"},"content":{"rendered":"<h2 id=\"overview\" >\u00dcbersicht<\/h2>\n<p>All Passenger <a title=\"Passenger-supported Apps\" href=\"https:\/\/kb.okra.host\/de\/cgi-passenger\/passenger-supported-apps\/\">applications<\/a>\u00a0require a\u00a0compatible filesystem layout to launch and manage a Passenger-backed application. A layout consists of 4 features:<\/p>\n<ol>\n<li>Startup file\n<ul>\n<li>Passenger loads this file to start the application<\/li>\n<li>Startup file names differ by\u00a0application type (<em>Python, Ruby, Node.js, Meteor<\/em>)<\/li>\n<\/ul>\n<\/li>\n<li><a title=\"Von wo aus werden die Inhalte der Website bereitgestellt?\" href=\"https:\/\/kb.okra.host\/de\/web-content\/where-is-site-content-served-from\/\">Document root<\/a> folder called <code>\u00f6ffentlich\/<\/code>\n<ul>\n<li>all static content goes here (images, JavaScript, CSS)<\/li>\n<\/ul>\n<\/li>\n<li>Apache configuration file named <code>.htaccess<\/code>\n<ul>\n<li><a title=\".htaccess-Leitfaden\" href=\"https:\/\/kb.okra.host\/de\/guides\/htaccess-guide\/\">htaccess rules<\/a> instruct the web server to treat this as a Passenger app<\/li>\n<\/ul>\n<\/li>\n<li><code>tmp\/<\/code> folder for miscellany\n<ul>\n<li>tmp\/ is used primarily to control Passenger process <a title=\"Neustart von Passagierprozessen\" href=\"https:\/\/kb.okra.host\/de\/cgi-passenger\/restarting-passenger-processes\/\">restarts<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>This is an example layout for \/var\/www\/nodejs, a sample Node.js application:<\/p>\n<pre>+-- app.js        &lt;-- startup file\r\n+-- public        &lt;-- html-accessible document root\r\n\u00a6\u00a0\u00a0 +-- .htaccess &lt;-- apache configuration \r\n+-- tmp           &lt;-- miscellaneous folder<\/pre>\n<h3 id=\"application-startup-files\" >Application startup files<\/h3>\n<p>Of the startup files expected by Passenger, only legacy Ruby on Rails applications expect the startup file to be located a directory down in <code>config\/<\/code>. Every other\u00a0application type expects the startup file to be one level below <code>\u00f6ffentlich\/<\/code>.<\/p>\n<table class=\"tableblock frame-all grid-all\">\n<colgroup>\n<col \/>\n<col \/><\/colgroup>\n<thead>\n<tr>\n<th class=\"tableblock halign-left valign-top\">Application Type<\/th>\n<th class=\"tableblock halign-left valign-top\">Startup File<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">Ruby on Rails &gt;= 3.0, Ruby Rack<\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">config.ru<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">Ruby on Rails 1.x and 2.x<\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">config\/environment.rb<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">Python<\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">passagier_wsgi.py<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">Node.js, Meteor<\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">app.js<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>","protected":false},"excerpt":{"rendered":"<p>Overview All Passenger applications\u00a0require a\u00a0compatible filesystem layout to launch and manage a Passenger-backed application. A layout consists of 4 features: Startup file Passenger loads this file to start the application Startup file names differ by\u00a0application type (Python, Ruby, Node.js, Meteor) Document root folder called public\/ all static content goes here&#8230;<\/p>","protected":false},"author":1,"comment_status":"close","ping_status":"closed","template":"","format":"standard","meta":{"footnotes":""},"ht-kb-category":[55],"ht-kb-tag":[],"class_list":["post-8397","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-cgi-passenger"],"_links":{"self":[{"href":"https:\/\/kb.okra.host\/de\/wp-json\/wp\/v2\/ht-kb\/8397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kb.okra.host\/de\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/kb.okra.host\/de\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/kb.okra.host\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kb.okra.host\/de\/wp-json\/wp\/v2\/comments?post=8397"}],"version-history":[{"count":1,"href":"https:\/\/kb.okra.host\/de\/wp-json\/wp\/v2\/ht-kb\/8397\/revisions"}],"predecessor-version":[{"id":8398,"href":"https:\/\/kb.okra.host\/de\/wp-json\/wp\/v2\/ht-kb\/8397\/revisions\/8398"}],"wp:attachment":[{"href":"https:\/\/kb.okra.host\/de\/wp-json\/wp\/v2\/media?parent=8397"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/kb.okra.host\/de\/wp-json\/wp\/v2\/ht-kb-category?post=8397"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/kb.okra.host\/de\/wp-json\/wp\/v2\/ht-kb-tag?post=8397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}