#apache #sinatra #passenger
#Apache #Sinatra #пассажир
Вопрос:
Мои производственные настройки следующие:
- Ubuntu 10.10
- Rails 3.1.1
- Пассажир 3.0.9
- Sinatra 1.3.1
- Apache 2.2.17
Я протестировал свое приложение на своей машине для разработки без проблем, но при развертывании на своем рабочем сервере отображается ошибка «Страница не найдена» (не обычная ошибка apache).).
Я могу работать с помощью rackup config.ru без проблем, поэтому предположим, что это должна быть проблема apache / passenger и, возможно, связанная с path. Теперь я устал на двух разных серверах, оба выдают одну и ту же ошибку.
Мой 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
У меня нет индексного файла в моей общей папке, хотя у меня его нет в других моих пассажирских / rails-приложениях…
Любые предложения приветствуются!!
— ОБНОВИТЬ —
Думая, что моя конфигурация 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)
Разве passenger / nginx не должен знать, что здесь делать ??!
Комментарии:
1. Нужно проверить одну вещь: есть ли у пользователя apache разрешения на чтение и выполнение для всех каталогов над каталогом развертывания ваших приложений?
2. Привет @matt — просто буквально попробовал это. Измените все файлы, включая корень apache, на 777, чтобы увидеть. Все еще нет радости. Спасибо за помощь 🙂
3. Могу ли я заметить, что ваши DocumentRoot и правила каталогов отличаются? Или это просто вопрос
4. Привет @matt. Они такие же на моем рабочем сервере, но я сократил, поскольку у них был домен компании. Хорошо замечено, хотя 😉
5. Где вы настроили passenger или прокси?
Ответ №1:
Вероятно, проблема в том, что у вас неправильно настроен пассажир.
В 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 , поскольку Пассажир ничего не знает о Синатре.
Комментарии:
1. Привет. Я опубликую свой config.ru завтра утром. Не думайте, что он пытается работать с webrick, хотя в журналах указано использование для резервного копирования. Любое пустое приложение sinatra работает просто отлично: (кроме того, у меня загружены пассажирские файлы в другом месте, но я могу попробовать на этом виртуальном хосте. У Nginx есть это в server conf. J