Я на виртуальном частном сервере Dreamhost.Я никогда прежде не писал приложение для Sinatra или любое другое приложение Rack.Я просто пытаюсь запустить приложение Hello World, но у меня продолжает появляться страница с ошибкой Пассажира с ошибкой:
no such file to load -- rack
Я создал public/
и tmp/
в корневом каталоге домена / приложения.
Также в корне приложения находится это config.ru
:
require 'rubygems'
require 'sinatra'
require 'myapp'
run Sinatra::Application
, которое я извлек из Пассажира в документах Nginx, раздел Синатры .
Наконец, это myapp.rb
, который я вытащил с верха Синатры Intro doc .
# myapp.rb
require 'sinatra'
get '/' do
'Hello world!'
end
Как мне заставить это работать?
РЕДАКТИРОВАТЬ
Вот три верхние строки трассировки стека, приведенные на странице ошибок Пассажира:
0 /usr/lib/ruby/1.8/rubygems/custom_require.rb 31 in `gem_original_require'
1 /usr/lib/ruby/1.8/rubygems/custom_require.rb 31 in `require'
2 /dh/nginx/passenger/lib/phusion_passenger/rack/application_spawner.rb 145 in `load_rack_app'
ОБНОВЛЕНИЕ
Я подозреваю, что обнаружил , почему Пассажир не может найти стойку, но я до сих пор не нашел решения.Вверху моей nginx.conf
находится эта строка:
user dhapache;
Казалось бы, Пассажир ищет драгоценные камни либо как dhapache
, либо как root
, и я не уверен, что этона основе списка процессов, указанного в ps aux | less
:
root PassengerNginxHelperServer /dh/nginx/passenger ruby 3 4 0 6 0 300 1 nobody 999 150 /tmp/passenger.19012
root Passenger spawn server
dhapache nginx: worker process
dhapache nginx: worker process
root nginx: master process /dh/nginx/bin/nginx-be -c /dh/nginx/servers/httpd-ps77303/nginx.conf -p /dh/nginx/servers/httpd-ps77303/var/
Однако, в любом случае пути драгоценных камней, перечисленные в gem env
, указывают только на места, где нет драгоценных камней.Если Пассажир ищет драгоценные камни в этих местах, он не найдет.
Пути драгоценных камней из sudo -u dhapache gem env
/var/lib/gems/1.8
/root/.gem/ruby/1.8
Пути драгоценных камней из sudo -u root gem env
/var/lib/gems/1.8
/dh/apache/.gem/ruby/1.8
В обоих случаях первый (идентичный) каталог пуст, а второй каталог в списке не существует.
В этой настройке сервера приложения размещаются в /home/[username]/[domain]/
, а локальные гемы находятся в /home/[username]/.gems/
.Запуск gem env
, когда пользователь приложения показывает локальный путь к драгоценным камням.
Как заставить Пассажира находить мои локальные драгоценные камни?