Персональный блог zaqwery

Установка/ Install Git, Homebrew, Ruby Gems, Nginx, Thin, PostgreSQL на Mac OS X 10.6.2 Snow Leopard

  •  
January 22, 2010 18:140 коммент.
 
Моя Конфигурация:
 
MacBook-2.16, Intel Core 2 Duo, 4Gb 667 DDR2 SDRAM
Mac OS X version 10.6.2 - Snow Leopard
 
Предпосылки:
 
После установки нового RoR (2.3.5) приложения с MySQL подключением, WEBrick  начал выдавать ошибку после нескольких тразакций
 
WARN  TCPServer Error: Address already in use - bind(2)
 
Логичным решением было запуск приложения на отличном от 3000 порту
 
script/server -e development -p 3001


Ошибка продолжалась на любом порту, причем сервер также не запускался, когда пытался поднять его на прежнем порту еще раз
 
После некоторых консультаций с Волошиным, выяснили, что вероятноя проблема в mysql-gem, который каким-то образом блокирует работу порта. После небольших раздумий решил раз и навсегда перейти на PostgreSQL. Переход благо дело не был связан с переносом большого количества данных, поэтому прогуглив установку postgres для MacOSX - решил воспользоваться разрекламированным MacPorts.
MacPorts, Fink, Homebrew - Системы управления пакетами — набор программного обеспечения, позволяющие управлять процессом установки, удаления, настройки и обновления различных компонентов программного обеспечения.
 
через несколько часов удалил Macports, т.к. / I deleted MacPorts because a number of reasons
 
1. занимает очень много места, 
2. конфигурирование приложений происходит на лету, пожирая неоправдано много системных ресурсов
3. не использует /usr/local и уже имеющееся установленное содержимое,
4. каждый апдейт - это отдельная папка на диске, что со временем будет занимать много неоправданного места
 
Погуглив, решил попробовать Homebrew - это новая (конец 2009) система управления пакетами, активно развивающаяся
 
http://github.com/mxcl/homebrew
 
приемущества описаны в 13 пунктах которые не могут не радовать.
 
 
-------------------------------------------------------------------------------------------------------------------------------------------------

Прежде чем продолжать вам потребуется
 
  1. Mac OS X 10.6 Snow Leopard
  2. Xcode совместимый с Snow Leopard. Xcode — это пакет инструментов для разработки приложений под Mac OS X и iPhone OS, разработанный Apple. Последняя версия Xcode 3.2, бесплатно поставляется на дистрибутивном диске Mac OS X Install DVD вместе с операционной системой Mac OS X 10.6, хотя и не устанавливается по умолчанию. ( http://developer.apple.com/technology/xcode.html )
  3. Уверенность в запуске UNIX команд используя Terminal

-------------------------------------------------------------------------------------------------------------------------------------------------
 
Шаг 1. Устанавливаем PATH / Set the PATH
 
Запускаем Terminal из папки /Applications/Utilities
 
Воспользуйтесь предпочитаемым текстовым редактором (в моем случае это TextMate с установленной командой 'mate') 
 
mate ~/.bash_profile
 
в конце это файла вставляем
 
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
 
Закройте и сохраните файл и запустите команду чтобы изменения вступили в силу
 
source ~/.bash_profile
 
Убедимся что путь обновлен, запуском команды
 
echo $PATH
 
Вы должны увидеть /usr/local/bin в начале строки возвращенной системой
 
 

Шаг 2. Установка GIT / Installing GIT
 
Создадим папку для храниения исходных инсталляций
 
mkdir ~/src
cd ~/src
 
Загрузим, распакуем и установим git в /usr/local
 
curl -O http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.gz
tar xzvf git-1.6.6.1.tar.gz
cd git-1.6.6.1
./configure --prefix=/usr/local
make
sudo make install
cd ..
 
Установка завершена, убедимся что git находится в /usr/local
 
which git
 
должны получить  /usr/local/bin/git
 
 

Шаг 3. Установим Homebrew используя GIT / Install Homebrew using GIT
 
cd /usr/local
git init
git remote add origin git://github.com/mxcl/homebrew.git
git pull origin master
 
Установка Homebrew завершена, теперь можно устанавливать программные пакеты используя команду brew
 
Команды
brew search -  выдаст список возможных рецептов для установки
brew list - список установленных компонентов
brew update - обновит Homebrew
 
 

Шаг 4. Установка RubyGems / Install RubyGems
 
cd ~/src
curl -O http://files.rubyforge.vm.bytemark.co.uk/rubygems/rubygems-1.3.5.tgz
tar xzvf rubygems-1.3.5.tgz
cd rubygems-1.3.5
sudo /usr/bin/ruby setup.rb
cd ..
 
 

Шаг 5. Уходим от постоянного sudo при установки джемов и указываем им путь /Cellar/gems/1.8  / Change ownership in order to get rid of 'sudo' everytime installing gems and setting Homebrew parent path.
 
sudo chown -R $USER /Library/Ruby /Library/Perl /Library/Python
sudo chown -R $USER /usr/local
 
echo export GEM_HOME="$(brew --prefix)/Cellar/Gems/1.8" >> ~/.bash_profile
echo export GEM_PATH="$(brew --prefix)/Cellar/Gems/1.8:/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/lib/ruby/gems/1.8/gems" >> ~/.bash_profile
echo "export GEM_HOME='$(brew --prefix)/Cellar/gems/1.8'" >> ~/.bashrc
source ~/.bashrc ~/.bash_profile
 
 
 

Шаг 6. Присоединияем  Gems / Linking Gems
 
gem install brewbygems
 
Brewbygems - джем который позволяет устанавливаеть весть джем в папку Homebrew’s Cellar (Cellar/Gems/1.8/) 
 
Для того чтобы система отрабатывала установленные джемы необходимо запусть команду
 
brew link gems
 
устанавливаем любой джем, например ROR
 
gem install rails
 
 

Шаг 5. Устанавливаем Nginx c модулем Passenger / Install Nginx with Passenger
 
brew install nginx --with-passenger
 
вы можете стартовать nginx командой sudo nginx и останавливать его командой
 
sudo nginx -s stop
 

Шаг 7. Устанавливаем PostgreSQL / Install PostgreSQL
 
brew install postgresql
 
В конце инсталляции будут инструкции как инициализировать БД, Запустить сервер, запустить сервир при входе, и установка postgres gem - сделайте это все
 
 

Шаг 8. Конфигурируем сервер / Configure server
 
a. Открываем файл
/usr/local/Cellar/nginx/0.7.62/conf/nginx.conf 
(вероятно со временем будет другой префикс версии)
 
 user your_user;
worker_processes 1;
 
error_log logs/error.log;
 
events {
  worker_connections  1024;
}
 
http {
  include mime.types;
  default_type application/octet-stream;
  
  # Passenger
  # passenger_root - будет менятся с вашей версией passenger
  # вы можете получить текущий путь используя команду passenger-config --root
  passenger_root /usr/local/Cellar/Gems/1.8/gems/passenger-2.2.9;
  # passenger_ruby - скрипт который фиксит переменные среды
  passenger_ruby /usr/local/bin/gem_ruby;
  passenger_default_user your_user;
 
  sendfile on;
  keepalive_timeout 65;
  
  # Include virtual host configurations
  include your_user.conf;
}
 
 
Создаем файл 
mate gem_ruby.sh
 
#!/bin/bash
export GEM_PATH=/usr/local/Cellar/Gems/1.8:/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/lib/ruby/gems/1.8/gems
export GEM_HOME=/usr/local/Cellar/Gems/1.8
 
/usr/bin/ruby $*
 
cохраняем его 
в /usr/local/bin
 
Создаем файл 
mate your_user.conf
 
server {
  listen 80;
  server_name your_user.local;
  root /Users/your_use/path/to/public;
 
  rails_env development;
  passenger_enabled on;
 
  charset utf-8;
}
 
Изменяем файл /etc/hosts
mate /etc/hosts
 
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0 localhost
127.0.0.1 your_user.local
 
 
9. Устанавливаем Thin / Install Thin
 
Thin - быстрый и простой ruby вэб сервер
Более подробно http://code.macournoyer.com/thin/
 
gem install thin
 
теперь вместо команды script/server можем использовать команду thin start для запуска приложения
 
10. Конечно же конфигурируем наш database.yml для PostgreSQL / Configure PostgreSQL connection
 
development:
  adapter: postgresql
  database: samsoffes_development
  encoding: utf8
  username: your_user
  password:
  host: localhost
 
production:
  adapter: postgresql
  database: samsoffes_production
  encoding: utf8
  username: your_user
  password:
  host: localhost
  
test:
  adapter: postgresql
  database: samsoffes_test
  encoding: utf8
  username: your_user
  password:
  host: localhost
 
 
или создаем новый Rails проект
 
rails projectname -d postgresql
 
 
Заходим в PostgreSQL prompt и создаем пользователя и БД
 
$ psql  postgres
# CREATE USER your_user SUPERUSER;
# CREATE DATABASE projectname_development OWNER your_user;
# CREATE DATABASE projectname_test OWNER your_user;
# CREATE DATABASE projectname_production OWNER your_user;
# \q
 
 
Если нужно чтобы юзер был суперюзером для того чтобы тесты запускались корректно, см. http://blogs.law.harvard.edu/djcp/2009/01/rails-22-postgres-and-testing/comment-page-1/
 
 
-------------------------------------------------------------------------------------------------------------------------------------------------
 
Надеюсь найдется пользователь Mac OSX в наших краях, которому это будет полезно.

 
 

 

, , , , , , , , , , , , , , , , , , , , , , , , ,
Зарегистрируйтесь для добавления сообщений