与乘客一起部署 - 服务器回答 403 Forbidden 或(通过 HTTPS)提供目录索引

Deploying with passenger - server answers 403 Forbidden or (over HTTPS) serves the directory index

我在部署名为 "PoolShifts" 的第一个 rails 应用程序时遇到了一些问题。我的服务器在家里,只有一个域 no-ip.org。因此,我在 "subdirectories" 中设置了所有不同的服务器(如 owncloud、phpmyadmin...),并将其别名为正确的位置。我的服务器运行 Debian 7 和 Apache 2.2.22。我已经安装了 passenger 4.0.8 并且 mod 文件 passenger.conf 设置为:

<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rvm/gems/ruby-2.1.2/gems/passenger-4.0.8
  #PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-2.1.2/ruby
  PassengerDefaultRuby /usr/local/rvm/rubies/ruby-2.1.2/bin/ruby
</IfModule>

和passenger.load设置为:

LoadModule passenger_module /usr/local/rvm/gems/ruby-1.1.2/gems/passenger-4.0.8/buildout/apache2/mod_passenger.so

正如乘客安装推荐的那样。 a2enmod passenger 启用了 apache2 mod化。注释掉的部分是安装给出的,但是403 Forbidden on Rails app建议将其设置为which ruby的结果,所以我试了一下,没有成功。我的用户名为 "matze",我已将我的应用程序复制到 /home/matze/PoolShifts。该站点已启用并且文件 /etc/apache2/sites-available/poolshifts 包含:

Alias /poolshifts "/home/matze/PoolShifts/public/"
<VirtualHost *:80>
  ServerName localhost
  RailsEnv development
  DocumentRoot /home/matze/PoolShifts/public/
  <Directory /home/matze/PoolShifts/public>
    AllowOverride all
    Options -MultiViews
    Require all granted
    Options FollowSymLinks
    Order allow,deny
    Allow from all
    Options +Includes -Indexes
  </Directory>
</VirtualHost>

<VirtualHost *:443>
  ServerName localhost
  RailsEnv development
  DocumentRoot /home/matze/PoolShifts/public/

  <Directory /home/matze/PoolShifts/public>
    AllowOverride all
    Options -MultiViews
    Require all granted
    Options FollowSymLinks
    Order allow,deny
    Allow from all
    Options +Includes -Indexes
  </Directory>

  SSLEngine on
  SSLCertificateFile /root/server.crt
  SSLCertificateKeyFile /root/server.key
</VirtualHost>

所有其他虚拟主机都工作得很好(使用和不使用 SSL 加密)但是如果我通过 HTTP 请求 /poolshifts 我得到 403 Forbidden 错误和 [=21= 的目录索引] 通过 HTTPS。我只是很沮丧,因为几天来我一直在搜索和尝试我找到的所有不同的解决方案。似乎没有 passenger 实例 运行 因为 passenger-status 给我:

Version : 4.0.8
Date    : 2015-08-12 16:52:14 +0200
Instance: 26551
----------- General information -----------
Max pool size : 6
Processes     : 0
Requests in top-level queue : 0

----------- Application groups -----------

我可以启动应用程序服务器 WebRick,应用程序工作正常。你知道我在这里做错了什么吗?

两周后,我找到了让它工作的方法。别名 rails 服务器未被乘客排除。解决方案是使用完整域作为服务器名称,并将所有其他服务器切换为别名。我不知道它为什么起作用,但它确实起作用了!