10

我已经安装了所需的工具,并遵循了几个试图让乘客做出响应的教程。

我可以访问公共文件夹(public/500.html 或 422.hml)中的静态文件。昨天我通过虚拟主机进入,发现一些乘客错误。但过了一段时间,主机重新启动了服务,从那以后我就再也无法访问 rails 应用程序了。

关联

关联

关联

这些是我用来配置服务器的一些链接。我也读过这可能是一个许可问题;我已经检查过了,但我不确定它是否正常。

4

4 回答 4

17

首先检查您的错误日志。默认情况下,它放置在/var/log/apache2/.

如果您有client denied by server configuration问题,请检查您的站点 conf 文件/etc/apache2/sites-available/your-site.conf。它必须符合Phusion 乘客用户指南。看看Require all granted

<Directory "/home/user/folder">
    Require all granted 
    Options FollowSymLinks
    # This relaxes Apache security settings.
    AllowOverride None
    # MultiViews must be turned off.
    Order allow,deny
    Allow from all
</Directory>
于 2013-10-26T16:19:39.150 回答
5

对我来说,这意味着我正在运行 rails 2.3 并使用 Phusion Passenger 5.x

显然 5.x 根本不适用于 2.2,而 2.3 要求您首先复制 config.ru 文件(这样 rails 将使用 rack 作为后端)。

2.3 的示例 config.ru 文件:

# Rack Dispatcher

# Require your environment file to bootstrap Rails
require File.dirname(__FILE__) + '/config/environment'

# Dispatch the request
run ActionController::Dispatcher.new

我不明白为什么似乎没有任何咒语起作用,就像Passenger 忽略了我的rails 应用程序。

在我的 /var/log/apache2/error.log 文件中,我有这个:

[2015 年 5 月 11 日星期一 15:47:00.397891] [autoindex:error] [pid 17490:tid 3058694976] [client 216.49.181.251:49248] AH01276:无法提供目录 /home/x/y/railsapp/public/:无匹配找到 DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm),并且服务器生成的目录索引被 Options 指令禁止,引用者:https ://www.google.com /

这让我很困惑,显然意味着“乘客没有在那个虚拟主机上运行”。

如果我创建了一个 public/index.html 文件,apache 服务就很好,所以这不是权限问题。

我也看到了这个,这意味着乘客可以正常启动:

[ 2015-05-11 18:23:53.9594 4964/b7415700 代理/Watchdog/Main.cpp:728 ]:所有 Phusion 客运代理启动!

另请参阅https://www.phusionpassenger.com/documentation/Users%20guide%20Apache%204.0.html#_i_get_a_403_forbidden_​​error

所以基本上使用乘客 5.x(在发行说明中说不支持 rails 2.2,只有在您的 rails 应用程序的根目录中创建“config.ru”文件时才支持 2.3 。它适用于旧版本像 rails 2.3 一样需要机架,只需删除较新的机架 gem 并安装 1.1.6 或其他什么,如果有的话,删除供应商的机架 gem。GL!

另外作为旁注,此消息:

[2015 年 5 月 11 日星期一 18:25:10.235574] [core:alert] [pid 5263:tid 3017780032] [client 127.0.0.1:56737] /home/rdp/dev/prod_flds/public/.htaccess:无效命令“RewriteEngine” ,可能拼写错误或由未包含在服务器配置中的模块定义

意思是“删除乘客通常不需要的公共/.htaccess 文件”

于 2015-05-12T03:59:31.203 回答
2

在我的 Mac OS 10.9(类 Unix 系统)上,我在 apache 中使用乘客的 rails 时也遇到了 403 错误。这里有一些提示:

  1. 您可以检查 apache 日志目录并查看发生了什么。目录:/var/log/apache2/error_log
  2. 问题:权限被拒绝:访问/被拒绝(文件系统路径'path_apache_access'),因为路径的组件上缺少搜索权限

    通过 CLI 检查 'path_apache_access': ls -ld 'path_apache_access' 并使用 chmod +x 更改路径权限。

    另外,请注意:Httpd Wiki - (13) Permission Denied-

  3. 问题:配置错误:无法执行身份验证。未设置 AuthType!.

    问题:客户端被服务器配置拒绝

    转到 /etc/apache2/httpd.conf 并查看 <Directory> 标记。

    通过 CLI 检查 apache 版本:apa​​chectl -v,如果 Apache < 2.4,请不要取消注释“要求所有已授予”。

    <Directory "rails_app_directory/public">
          # This relaxes Apache security settings.
          AllowOverride all
          # MultiViews must be turned off.
          Options -MultiViews
          # Uncomment this if you're on Apache >= 2.4:
          # Require all granted
          Options FollowSymLinks
          Order allow,deny
          Allow from all
    </Directory>
    
于 2015-03-11T12:32:49.497 回答
1

答案是乘客给了我 403,因为我必须将 apache 配置上的环境变量“RackEnv”设置为“开发”(在我的情况下)。

于 2014-06-04T02:02:06.917 回答