Вопрос

Я пытаюсь настроить Ruby на сервере Rails на Ubuntu10.10 с Apache2 и Mod_Rails (Phusion Passenger).

Я уже установил Ruby 1.9.2-P0 и Rails 3.0.8 и установил пассажир с пассажиром-модулем APACHE2 и пассажирским драгоценным камнем (v3.0.7).

Затем он говорит мне добавить 3 строки в мой файл конфигурации Apache. Поэтому я добавил эти строки в '/etc/apache2/apache2.conf':

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7
PassengerRuby /usr/local/bin/ruby

И я отредактировал свой '/etc/apache2/httpd.conf' и добавил:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName 192.168.0.2
DocumentRoot /var/www/webop/public

<Directory /var/www/webop/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>

Я также обнаружил, что файл mod_passenger.so in /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/ фактически не существует, его имя-mod_passenger.c. Но я не получаю от этого ошибок.

Сервер должен быть доступен только через локальную сеть. Когда я получаю доступ к серверу, я вижу все файлы и каталоги в публичной папке моего приложения, но само приложение не начинается.

Когда я перезапускаю Apache, это говорит мне, что MOD_RAILS уже загружен, поэтому я думаю, что пассажир работает, но я не могу понять, почему он не запускает мое приложение!

Заранее спасибо!

Это было полезно?

Решение 2

Я наконец понял, в чем проблема: я испортил свою инсталляцию Ruby.

В/usr/local/у меня был установлен Ruby1.9.2-P0 (что была версия, которую я хотел использовать), но в/usr/у меня был установлен Ruby1.8.7.

Пассажир был запутан, какую версию Ruby использовать, поэтому я изменил пути LoadModule, PassengerRoot и PassengerRuby в пределах Apache2/Mods с поддержкой/пассажир. Оба файла были созданы автоматически, что также вызвало проблему переосмысления: при запуске Apache было предупреждение «mod_passenger уже загружен». Итак, я удалил

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7
PassengerRuby /usr/local/bin/ruby

Из конфигурации Apache и предупреждения исчезли!

Наверное, когда -нибудь это поможет кому -нибудь еще!

Другие советы

Причина mod_passenger.so не существует, заключается в том, что вы не установили модуль Apache. Выполнять:

passenger-install-apache2-module

Это создаст файл mod_passenger.so в вашем каталоге GEM и даст вам три строки для копирования в вашем файле apache2.conf.

Пассажирский модуль установлен в вашей текущей Gemset, поэтому вы не должны получать никаких конфликтов между проектами. Вы можете использовать любую совместимую версию Ruby, и любой, который вам нравится, через RVM и, возможно, также RBENV. Это делает приятный легкий путь обновления от одной версии Ruby до другой.

Я сегодня наткнулся на более чистое решение. Это может помочь будущим пользователям. Команда -

passenger-install-apache2-module

говорит мне поместить эти три строки в файл конфигурации Apache.

LoadModule passenger_module /home/anwar/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.59/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/anwar/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.59
     PassengerDefaultRuby /home/anwar/.rvm/gems/ruby-2.2.0/wrappers/ruby
   </IfModule>

Но где этот файл конфигурации? Ответ Файлы конфигурации разделены на многие части и они живут в /etc/apache2/mods-available.

Итак, вы должны делать три вещи -

  1. Создать файл, заканчивающийся с .load в /etc/apache2/mods-available папка. я использовал passenger.load.

  2. Вставьте три строки в этом файле и сохраните файл.

  3. Теперь в терминальном использовании sudo a2enmod <module-conf-filename> Чтобы включить модуль. В моем случае файл был, passenger.load. Анкет Итак, я использовал

    sudo a2enmod passenger
    

Теперь перезапустите сервер и используйте команду apache2ctl -M Чтобы найти это passenger модуль включен.

Я думаю, что они хотят, чтобы вы поместили эти три строки в свой файл httpd.conf, а не в вашем Apache2.conf. По крайней мере, так я всегда это делал.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top