Как развернуть приложение Sinatra с помощью Nginx и Passenger? - PullRequest
2 голосов
/ 25 января 2012

Я на виртуальном частном сервере 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, когда пользователь приложения показывает локальный путь к драгоценным камням.

Как заставить Пассажира находить мои локальные драгоценные камни?

1 Ответ

0 голосов
/ 23 марта 2012

Используйте Bundler's Gemfile . Используйте RVM .

...