生产模式中的Sinatra App 404错误

时间:2011-10-16 21:14:57

标签: apache sinatra passenger

我的作品设置如下:

  • Ubuntu 10.10
  • rails 3.1.1
  • Passenger 3.0.9
  • Sinatra 1.3.1
  • Apache 2.2.17

我已经在我的开发计算机上测试了我的应用程序没有问题但是当我部署到我的生产服务器时,我显示了一个未找到Page Not Found错误(不是通常的apache)。

我可以运行使用rackup config.ru没有问题所以假设它必须是一个apache /乘客问题,并且可能与路径相关。我现在已经厌倦了两个不同的服务器,都给出了同样的错误。

我的config.ru文件如下:

require 'rubygems'
require 'sinatra'

use Rack::ShowExceptions

#set :public_folder, File.expand_path(File.dirname(__FILE__) + "/public")
#set :views, File.expand_path(File.dirname(__FILE__) + "/views")

root_dir = File.dirname(__FILE__)
set :root,        root_dir
disable :run

FileUtils.mkdir_p 'log' unless File.exists?('log')
log = File.new("log/sinatra.log", "a")
$stdout.reopen(log)
$stderr.reopen(log)

#use Rack::ShowExceptions

require File.dirname(__FILE__) + "/bin/hsloginapp"
run Sinatra::Application

我的虚拟主机文件:

<VirtualHost *:4090>
    ServerName sinatra-demo.xxxxxxx.net
    DocumentRoot "/var/www/html/hsloginapp/production/current/public"
    <Directory /var/www/html/hsloginapp/public>
        Order allow,deny
        Allow from all
        Options FollowSymLinks
    </Directory>
</VirtualHost>

我的应用程序有点太复杂了,无法粘贴所有内容,但如果需要,我很乐意粘贴部件。

我对简单的sinatra应用程序没有任何问题,因此感觉好像运行正常。现在已经花了四天时间 - 它正在推动我的破解者。

甚至不能确定这404来自哪里。我在sinatra.log中可以看到的只有:

[16/Oct/2011 20:55:41] "GET / " 404 18 0.0008

我的公共文件夹中没有索引文件 - 虽然我的其他乘客/导轨应用程序中没有索引文件...

任何建议都非常感谢!!

- 更新 -

认为我的apache配置可能已被填充,我安装了nginx并获得了相同的Not Found页面。在我的文件系统中,它似乎不存在。

通过我的sinatra日志,看起来像webrick的开始 - 我不知道为什么呢?

2011-10-22 15:13:12] INFO  WEBrick 1.3.1
[2011-10-22 15:13:12] INFO  ruby 1.8.7 (2010-08-16) [x86_64-linux]
[2011-10-22 15:13:17] WARN  TCPServer Error: Address already in use - bind(2)
== Someone is already performing on port 4990!
94.194.200.254 - - [22/Oct/2011 15:13:17] "GET / " 404 18 0.0636
94.194.200.254 - - [22/Oct/2011 15:13:18] "GET /favicon.ico " 404 18 0.0012

我想这就是问题?!需要帮助:)

- 更新2 -

刚刚在我的nginx错误日志中注意到系统正在尝试加载public / index.html

*9 "/var/www/html/hotspotlogin/public/index.html" is not found (2: No such file or directory)

乘客/ nginx不应该知道该怎么做??!

1 个答案:

答案 0 :(得分:0)

问题可能是您没有正确设置乘客。

在Apache上,确保你在某个地方有这条线:

LoadModule passenger_module /somewhere/passenger-x.x.x/ext/apache2/mod_passenger.so

在nginx上,您的配置应该包含以下行:

passenger_enabled on;

请注意,您正在尝试使用WEBRick运行Sinatra,而不是使用日志示例中的Rassenger / Apache(并且该端口不可用)。要使用Passenger运行它,您必须写一个config.ru,因为Passenger对Sinatra不了解。