Sinatra App 404 Ошибка в производственном режиме - PullRequest
1 голос
/ 17 октября 2011

Мои настройки производятся следующим образом:

  • Ubuntu 10.10
  • рельсы 3.1.1
  • Пассажир 3.0.9
  • Синатра 1.3.1
  • Apache 2.2.17

Я протестировал свое приложение на своей машине для разработки без проблем, но при развертывании на моем производственном сервере появляется сообщение об ошибке «Страница не найдена» (не обычная apache).

Я могу работать с помощью rackup config.ru без проблем, поэтому предположим, что это проблема apache / passenger и, возможно, связана с путем. Теперь я устал на двух разных серверах, оба выдают одну и ту же ошибку.

Мой файл 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. Которого, похоже, нет в моей файловой системе.

Просматривая журнал Синатры, я вижу, что вебрик запускается - хотя я понятия не имею, почему?

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 голосов
/ 23 октября 2011

Возможно, проблема в том, что у вас неправильно настроен пассажир.

На Apache, убедитесь, что у вас есть где-то эта строка:

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

В nginx ваш конфиг должен содержать следующую строку:

passenger_enabled on;

Обратите внимание, что вы пытаетесь запустить Sinatra с WEBRick, а не с Rassenger / Apache в примере журналов там (и этот порт недоступен). Для запуска его с Passenger вам придется написать config.ru , поскольку Passenger ничего не знает о Sinatra.

...