Как стать автором
Обновить

Rails 2.3.5 + mod_rails + MAMP на OSX Tiger

Время на прочтение3 мин
Количество просмотров628
Странно но я не нашел в сети ни одного внятного мануала по установке на OS X рельсов с mod_rails — нового (относительно) модуля для Апача, избаляющего от головной боли при деплое. Все мануалы какие-то устаревшие, то Mongrel, то FastCGI. Как ни странно, в этом не оказалось ничего сложного — получился эдакий зомби из старых туториалов и пары новых действий.

Для работы понадобится XCode (для тигра последний 2.5) — он не установлен по умолчанию, но может быть найден на установочном диске Mac OS X или скачан с сайта Apple's Developer Connection developer.apple.com. Все команды нужно набирать в терминале — его можно найти в /Программы/Служебные программы (/Applications/Utilities). Так же я пользуюсь Textmate для редактирования файлов (команда mate в консоли), он тоже не стоит по дефолту так что можно пользоваться vi или pico.

Отмечу два момента:

1) Я все ставил на OSX 10.4, думаю особых отличий от Леопардов быть не должно, но замечу что REE 1.8.7.xxx у меня работать отказался (из-за бага в MRI: redmine.ruby-lang.org/issues/show/405)

2) Я специально ставил mod_rails параллельно с php чтобы убедиться что они могут спокойно жить рядом друг с другом
 
 
 
 

Часть I. Подготовка обычного MAMP Environment



1) Ставим macports.
www.macports.org/install.php
Скачиваем и устанавливаем через gui по ссылке, дальше в консоли:

sudo port selfupdate
 

2) Ставим апач

sudo port install apache2
sudo ln -s /opt/local/apache2/bin/apachectl /opt/local/bin/apache2ctl

 

3) Меняем DocumentRoot в httpd.conf чтобы он указывал на нужную нам папку.
Я создал папку Rails в домашней директории, в ней public_html в качестве document root.
Все приложения я создаю в ~/Rails и линкую в public_html.

sudo mate /opt/local/apache2/conf/httpd.conf

# --- httpd.conf --- #

DocumentRoot "/Users/ikido/Rails/public_html"
<Directory "/Users/ikido/Rails/public_html">

# --- httpd.conf --- #

 

4) Cтавим mysql

sudo port install mysql5-server
sudo -u mysql mysql_install_db5
sudo ln -s /opt/local/bin/mysql5 /opt/local/bin/mysql

# Запускаем Mysql
/opt/local/lib/mysql5/bin/mysqld_safe &

# Ставим пароль, закрываем рутовый доступ из сети итд
/opt/local/lib/mysql5/bin/mysql_secure_installation

 

5) Ставим php5

sudo port install php5 +apache2 +mysql5

cd /opt/local/apache2/modules
sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so # активируем модуль php5

 

6) Правим httpd.conf:

sudo mate /opt/local/apache2/conf/httpd.conf

# --- httpd.conf --- #

<IfModule mime_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

<IfModule dir_module>
DirectoryIndex index.html index.php

# --- httpd.conf --- #
 

7) Проверяем что все работает:

echo "<? phpinfo(); ?>" > /Users/ikido/Rails/public_html/index.php
sudo apache2ctl start


проверяем браузером localhost, должна быть страница phpinfo

 
 
 
 

Часть II. Теперь ставим Ruby Environment



1) Cтавим ruby

sudo port install ruby
 

2) Cтавим rubygems
в macports старая версия, поэтому ставим из исходника
docs.rubygems.org/read/chapter/3

mkdir -p /opt/src/
cd /opt/src/
curl -O files.rubyforge.vm.bytemark.co.uk/rubygems/rubygems-1.3.5.tgz
tar zxf rubygems-1.3.5.tgz
cd rubygems-1.3.5
sudo ruby setup.rb

 

4) Cтавим rails

sudo gem install rails --include-dependencies
 

5) Ставим связку с mysql

sudo gem install mysql -- --with-mysql-dir=/opt/local/lib/mysql5/
 

6) Cтавим mod_rails
www.modrails.com/install.html

sudo gem install passenger
sudo passenger-install-apache2-module --apxs2-path /opt/local/apache2/bin/apxs

 

7) Правим httpd.conf, вставляем то что нам выдал инсталлер:
www.modrails.com/documentation/Users%20guide%20Apache.html

sudo mate /opt/local/apache2/conf/httpd.conf

# --- httpd.conf --- #

LoadModule passenger_module /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger.so
PassengerRoot /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-2.2.9
PassengerRuby /opt/ruby-enterprise/bin/ruby

# --- httpd.conf --- #

 

8) Правим httpd.conf, для каждого приложения прописываем RailsBaseUri после указания DocumentRoot (Соответственно директива работает и для vhosts), причем насколько я понимаю рельсы могут быть в любой подпапке. Railsenv — необязательно, здесь указываем какое окружение использовать по умолчанию.

# --- httpd.conf --- #

DocumentRoot "/Users/ikido/Rails/public_html"
RailsBaseURI /testapp
RailsBaseURI /someotherapp
RailsEnv development

# --- httpd.conf --- #

 

8) Проверяем что мы на рельсах — создаем тестовое приложение

cd ~/Rails
rails -d mysql testapp
ln -s /Users/ikido/Rails/testapp/public/ public_html/testapp
cd testapp
mate config/database.yml # вписываем пароль mysql
rake db:create
script/generate scaffold test
rake db:migrate
sudo apache2ctl restart


Теперь можно зайти браузером на localhost/testapp/tests, порадоваться (надеюсь) и убедиться что все отлично работает
Теги:
Хабы:
Всего голосов 8: ↑7 и ↓1+6
Комментарии6

Публикации