Назад | Перейти на главную страницу

Как настроить Apache с Passenger (mod_rails) на Mac OS X?

Я разработчик iOS, поэтому у меня очень мало опыта работы с Apache и RoR, и я впервые пытаюсь использовать Mac OS X в качестве сервера.

http://rubyonrails.org/deploy рекомендует использовать Пассажир Phusion (mod_rails) с Apache. Вот чего я пытаюсь достичь, но зашел в тупик.

Вот что я сделал:

  1. Я включил Apache (установите флажок в настройках), и при указании в моем браузере адреса localhost появляется текст «Работает!». Я также могу получить к нему доступ через свои диндны.

  2. Я выполнил следующие команды для установки пассажира:

    sudo gem install passenger
    passenger-install-apache2-module
    
  3. Я добавил следующие строки в /etc/apache2/httpd.conf:

    LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
    PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-3.0.7
    PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
    
  4. Затем я добавил следующее в /etc/apache2/extra/httpd-vhosts.conf:

    <VirtualHost *:80>
       ServerName my.dyndns.org
       DocumentRoot /Users/Shared/rails/project/public    # <-- be sure to point to 'public'!
       <Directory /Users/Shared/rails/project/public>
          AllowOverride all              # <-- relax Apache security settings
          Options -MultiViews            # <-- MultiViews must be turned off
       </Directory>
    </VirtualHost>
    
  5. Я перезапустил Apache, используя:

    sudo /usr/sbin/apachectl restart
    

У меня есть рабочее приложение rails на /Users/Shared/rails/project, т.е. бегущий rails server работает. Это просто "Добро пожаловать на борт, вы едете на Ruby on Rails!" страницу, но это работает.

Проблема в том, что я не понял, как получить доступ к этой странице через Apache и Passenger. Я не знаю, как настроить виртуальный хост, и почти не знаю, что это такое. Может ли кто-нибудь объяснить мне, что я делаю не так и как это исправить?

РЕДАКТИРОВАТЬ: Просто быть чистым. я хочу my.dyndns.com/project быть общедоступным в Интернете. Я получаю следующее: «Запрошенный URL / проект не найден на этом сервере».

РЕДАКТИРОВАТЬ 2: Виртуальных хостов вроде нет:

$ sudo /usr/sbin/apachectl -S
VirtualHost configuration:
Syntax OK

Есть ли что-нибудь еще, что нужно сделать, кроме добавления виртуального хоста в /etc/apache2/extra/httpd-vhosts.conf?

Недавно мне был вручен значок популярного вопроса за этот вопрос, поэтому я подумал, что пора опубликовать ответ. Я просто отправлю соответствующие части моих файлов conf.

Так что в /etc/apache2/httpd.conf Имею следующее:

LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-3.0.7
PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

Также не забудьте раскомментировать следующую строку:

Include /etc/apache2/extra/httpd-vhosts.conf

Затем в /etc/apache2/extra/httpd-vhosts.conf Имею следующее:

NameVirtualHost *:80

<VirtualHost *:80>
   ServerName example.dyndns.org
   DocumentRoot "/Users/Shared/rails/project/public"
   <Directory /Users/Shared/rails/project/public>
      AllowOverride all
      Options -MultiViews
      Order allow,deny
      Allow from all
   </Directory>
</VirtualHost>

После сегодняшнего дня у меня не будет доступа к этому серверу. Мы его больше не используем. Вместо этого мы используем Heroku. Так что, если по какой-то причине у вас не работает или я забыл какую-то важную часть конфигурации, я не смогу вам помочь. Возможно, он устарел, и я не знаю, работает ли он с более новыми версиями пассажира. Кроме того, на сервере использовалась Mac OS X Snow Leopard, поэтому он может не работать с другими версиями OS X. Однако я предполагаю, что он не сильно изменился, и что большая часть этого все еще действует.

Я также хочу еще один отказ от ответственности. Возможно, это не самая безопасная конфигурация. Я не понимаю всех вариантов, но мне кажется, что это позволяет. Коллега помог мне с конфигурацией, и это просто первая версия конфигурации, с которой мы работали. Мы не особо заботились о безопасности, поскольку это был только сервер разработки, а не производственный.

Если у вас есть предложения по улучшению конфигурации, не стесняйтесь публиковать их. Даже если они мне не пригодятся, другие могут. В конце концов, это популярный вопрос.

https://github.com/Fingertips/passengerpane

Я бы попробовал загрузить панель предпочтений пассажира и использовать ее для настройки среды разработки. В противном случае, если вы действительно любите приключения, попробуйте http://pow.cx. Я сам использую Pow для разработки на Rails.

Если вы все же используете Pow, я рекомендую порошковый самоцвет вместе с ним для управления вашей установкой Pow. Это должно быть так просто, как:

gem install powder

Который должен будьте всем, что вам нужно сделать, а затем прочитайте о порошке здесь: https://github.com/Rodreegez/powder