web-dev-qa-db-ja.com

Apache + PassengerがSinatraアプリケーションのルートを提供していません

前回のFusionPassengerの更新以降、すべてのSinatraアプリケーションが次の環境で動作を停止しました:Apache(2.4.17)、Phusion Passenger(5.0.21)。パッセンジャーミドルウェアを更新する前は、すべてが期待どおりに機能していました。

問題は、仮想ホストのURL( https://myapp.ch )を要求しているときに、Apacheディレクトリがパブリックディレクトリのリストに移動しようとしていることです。

ODD部分:Sinatraコントローラーで定義されたルートが要求された場合(例: https://myapp.ch/infos )、乗客が開始され、要求されたページは期待どおりに配信されます。

仮想ホストの部分は次のとおりです。

<VirtualHost *:443>
  DocumentRoot /home/user1/sinatra/app1/public
  ServerName myapp.ch

  <Directory /home/user1/sinatra/app1/public>
      AllowOverride all
      Order allow,deny
      Allow from all
      Options -MultiViews
      Require all granted
  </Directory>

Config.ru

# encoding: UTF-8

require 'rubygems'
require 'sinatra'

require File.expand_path '../start.rb', __FILE__

run Sinatra::Application

Sinatraアプリのルートを要求するときのApacheログエラー(/):

[Mon Oct 26 22:10:30.728795 2015] [autoindex:error] [pid 3535:tid 140103510914816] [client 176.127.182.162:50956] AH01276: Cannot serve directory /home/user1/sinatra/app1/public/: No matching DirectoryIndex (none) found, and server-generated directory index forbidden by Options directive

Apacheはディレクトリのリストを作成しようとしています(構成により無効になっています)。

誰かが同じ問題を経験しましたか? Apacheにパッセージャーを起動させ、Sinatraアプリのルートを提供する方法は?

5
Kami

どうやら Apache 2.4.17には バグ があります。

モジュールの自動インデックスを無効にする(これは間違った動作の原因です)と、エラーが防止されます。

#LoadModule autoindex_module modules/mod_autoindex.so

Phusionは、Apache 2.5.0がリリースされる前にPassenger 5.0.22の領域でこの問題に対処します。

7
Kami