У меня есть приложение на основе Sinatra, которое отлично работает локально.
Я переместил его на сервер nginx с Passenger, и теперь все мои ссылки на файлы в моих приложениях /public
возвращают 404 ошибки. Основное приложение работает, имеет возможность доступа к шаблонам HAML в /view
, которые отображаются правильно. Файлы существуют, и разрешения правильны; Я могу открывать и редактировать их, чтобы я знал, что они там.
В моих шаблонах HAML я имею в виду файлы, к которым у меня нет доступа, вот так:
%script{ :src => 'js/jquery.js' }
%link{ "rel" => "stylesheet", "href" => "styles/input.css" }
Мой config.ru
претерпел множество мутаций, пока я пытаюсь найти проблему. В настоящее время у меня есть:
require 'sinatra'
require './peering_template.rb'
root_dir = File.dirname(__FILE__)
# disable :run
# set :root, root_dir
# set :views, File.join(File.dirname(__FILE__), 'views')
# set :environment, (ENV['RACK_ENV'] ? ENV['RACK_ENV'].to_sym : :development)
run Sinatra::Application
Приложение существует в /home/apps/peering_template
.
Веб-пространство /home/webapps
.
В /home/webapps
есть софт-ссылка, например: peering_template -> /home/apps/peering_template/public/
.
/home/webapps/
`-- peering_template -> /home/apps/peering_template/public/
Соответствующая часть nginx.conf для этого конфига:
server {
listen 3000;
server_name my_servers_name;
root /home/webapps;
passenger_enabled on;
passenger_base_uri /peering_template;
}
Очевидно, что имя моего сервера другое.
Соответствующая часть из nginx 'error.log выглядит так:
"/home/webapps/js/jquery.js" failed (2: No such file or directory), request: "GET /js/jquery.js HTTP/1.1"
Насколько я могу судить, это соответствует указаниям для " nginx и конфигурации пассажира с использованием под-URI ". Чего мне не хватает?
/home/apps/peering_template/
|-- config.ru
|-- lib
| |-- bgp-config.rb
| |-- ios-xr-config.rb
| |-- ipv4_ipv6_grammar.rb
| `-- ipv4_ipv6_grammar.treetop
|-- nginx.conf
|-- peering_template.rb
|-- public
| |-- js
| | |-- jquery-1.6.min.js
| | |-- jquery-ui-1.8.12.custom.zip
| | |-- jquery.js -> jquery-1.6.min.js
| | `-- scripts.js
| |-- peering_template_tool.htm
| `-- styles
| `-- input.css
|-- spreadsheets
| |-- Peering Template-AMS-IX.xlsx
| `-- Peering Template-IOS-XR-ASH1.xlsx
|-- tmp
| `-- always_restart.txt
`-- views
|-- index.haml
`-- output.haml
Я не уверен, имеет ли это значение, но это на хосте CentOS release 5.3 (Final)
, работающем с nginx/1.0.0
и passenger (3.0.7)
.