我已经安装了所需的工具,并遵循了几个试图让乘客做出响应的教程。
我可以访问公共文件夹(public/500.html 或 422.hml)中的静态文件。昨天我通过虚拟主机进入,发现一些乘客错误。但过了一段时间,主机重新启动了服务,从那以后我就再也无法访问 rails 应用程序了。
这些是我用来配置服务器的一些链接。我也读过这可能是一个许可问题;我已经检查过了,但我不确定它是否正常。
首先检查您的错误日志。默认情况下,它放置在/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>
对我来说,这意味着我正在运行 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 客运代理启动!
所以基本上使用乘客 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 文件”
在我的 Mac OS 10.9(类 Unix 系统)上,我在 apache 中使用乘客的 rails 时也遇到了 403 错误。这里有一些提示:
问题:权限被拒绝:访问/被拒绝(文件系统路径'path_apache_access'),因为路径的组件上缺少搜索权限。
通过 CLI 检查 'path_apache_access': ls -ld 'path_apache_access' 并使用 chmod +x 更改路径权限。
问题:配置错误:无法执行身份验证。未设置 AuthType!.
问题:客户端被服务器配置拒绝。
转到 /etc/apache2/httpd.conf 并查看 <Directory> 标记。
通过 CLI 检查 apache 版本:apachectl -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>
答案是乘客给了我 403,因为我必须将 apache 配置上的环境变量“RackEnv”设置为“开发”(在我的情况下)。