Я разработчик iOS, поэтому у меня очень мало опыта работы с Apache и RoR, и я впервые пытаюсь использовать Mac OS X в качестве сервера.
http://rubyonrails.org/deploy рекомендует использовать Пассажир Phusion (mod_rails) с Apache. Вот чего я пытаюсь достичь, но зашел в тупик.
Вот что я сделал:
Я включил Apache (установите флажок в настройках), и при указании в моем браузере адреса localhost появляется текст «Работает!». Я также могу получить к нему доступ через свои диндны.
Я выполнил следующие команды для установки пассажира:
sudo gem install passenger
passenger-install-apache2-module
Я добавил следующие строки в /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
Затем я добавил следующее в /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>
Я перезапустил 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