UPDATE: New version for OS X Lion HERE
I choose the simple and I believe clean way to use everything from macports and passenger.
The advantage is that it’s all isolated from the OS X system and using latest cutting edge version of softwares.
I assume you have textmate, because it’s easy to edit files that need sudo access. Textmate will just ask for your password.
Try and download the 30 days trial for easy of this tutorial. http://macromates.com/
Trust me, you will love Textmate, it’s state of the art editor.
ps: I use “mate” instead of “open -a TextMate” but not everyone might have the mate symlink.
Requirements:
- Snow Leopard 10.6.4 or greater
- Xcode 3.2.3, 2.4.1 or greater
- Admin privileges on your mac.
Software preliminary:
- Mysql 5.1.49 (macports)
- Ruby 1.8.7 (macports)
- Apache 2.2.9 (part of OS X)
- Rubygems (download)
- passenger (gem)
- ImageMagick
- rmagick
1. Preparing System
If you are upgrading from Leopard to Snow Leopard, I recommend you delet your old installation.
sudo rm -rf \
/opt/local \
/Applications/DarwinPorts \
/Applications/MacPorts \
/Library/LaunchDaemons/org.macports.* \
/Library/Receipts/DarwinPorts*.pkg \
/Library/Receipts/MacPorts*.pkg \
/Library/StartupItems/DarwinPortsStartup \
/Library/Tcl/darwinports1.0 \
/Library/Tcl/macports1.0 \
~/.macports
1.1 Prepare PATH environment:
$ open -a TextMate ~/.bash_profile
Edit your ~/.bash_profile file and add these 2 line.
Check if they are not there already.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH export MANPATH=/opt/local/share/man:$MANPATH
1.2 Download and Install Xcode
http://developer.apple.com/technologies/xcode.html
1.3 Download Macports and install
Download Page: http://www.macports.org/install.php
Download Direct Link: http://distfiles.macports.org/MacPorts/MacPorts-1.9.2-10.6-SnowLeopard.dmg
You might use this guide for installing Macports:
Full Install Guide: http://guide.macports.org/#installing
1.3.1 Update macports
sudo port -v selfupdate
2. Mysql
2.1 Intall Mysql
sudo port -v install mysql5-server mysql5
2.2 Make mysql autoload on startup
sudo port load mysql5-server sudo -u mysql mysql_install_db5
3. Memcached (Optional)
sudo port -v install memcached libmemcached
3.1 Autoload memcached on startup
sudo port load memcached
4. Ruby, Rubygems, Rails, other gems
4.1 Install Ruby from macports
sudo port -v install ruby
$ ruby -v ruby 1.8.7 (2010-08-08 patchlevel 302) [x86_64-darwin10]
4.2 download rubygems from http://rubygems.org/pages/download
cd /tmp wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz tar xpf rubygems-1.3.7.tgz cd rubygems-1.3.7 sudo ruby setup.rb
4.3 Install rails, rake, rspec etc.
sudo gem install rake rails thin tzinfo capistrano ruby-debug rspec
extra:
4.4 install mysql gem
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/opt/local/lib/mysql5/bin/mysql_config
5. ImageMagick, Rmagick and mini_magick (Optional)
lets install ImageMagick with support for JPEG, TIFF, WMF, PDF, and PNG images, and for Postscript and TrueType fonts.
sudo port -v install tiff -macosx imagemagick +q8 +gs +wmf
sudo gem install mini_magick rmagick
Test rmagick
$ irb -rubygems -r RMagick >> puts Magick::Long_version This is RMagick 2.13.1 ($Date: 2009/12/20 02:33:33 $) Copyright (C) 2009 by Timothy P. Hunter Built with ImageMagick 6.6.3-0 2010-08-19 Q8 http://www.imagemagick.org Built for ruby 1.8.7 Web page: http://rmagick.rubyforge.org Email: rmagick@rubyforge.org => nil
6. Passenger
6.1 Install Passenger gem
sudo gem install passenger
6.2 Check Passenger path
passenger-config --root
-> /opt/local/lib/ruby/gems/1.8/gems/passenger-2.2.15
6.3 Build passenger for apache
follow instructions on screen
sudo passenger-install-apache2-module
6.4 Enable Passenger on apache:
open -a TextMate /etc/apache2/extra/httpd-passenger.conf
Put this on that file, change wherever necessary for your directories.
LoadModule passenger_module /opt/local/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so PassengerRoot /opt/local/lib/ruby/gems/1.8/gems/passenger-2.2.15 PassengerRuby /opt/local/bin/ruby PassengerMaxPoolSize 6 # maximum global rails servers PassengerMaxInstancesPerApp 2 # maximum rails servers per application RailsFrameworkSpawnerIdleTime 1800 RailsAppSpawnerIdleTime 600 PassengerPoolIdleTime 600 PassengerMaxRequests 1000 # after 1000 requests will restart server, to skip memory leak :) # Enabling NameBased Virtualhost NameVirtualHost *:80 # my rails app virtual host 1 <VirtualHost *:80> ServerName my-rails-app.local DocumentRoot "/Users/fred/rails/my-rails-app/public" # change this to match your folder RailsEnv "development" <Directory /Users/fred/rails/my-rails-app/public> # change this to match your folder # MultiViews must be turned off Options -MultiViews AllowOverride All Order allow,deny Allow from all </Directory> # logs are optional, change this to match your folder CustomLog "/Users/fred/rails/my-rails-app/log/access_log" combined ErrorLog "/Users/fred/rails/my-rails-app/log/error_log" </VirtualHost> # my rails app virtual host 2 <VirtualHost *:80> ServerName myapp-xyz.local DocumentRoot "/Users/fred/rails/myapp-xyz/public" # change this to match your folder RailsEnv "development" <Directory /Users/fred/rails/my-rails-app/public> # change this to match your folder # MultiViews must be turned off Options -MultiViews AllowOverride All Order allow,deny Allow from all </Directory> CustomLog "/Users/fred/rails/myapp-xyz/log/access_log" combined ErrorLog "/Users/fred/rails/myapp-xyz/log/error_log" </VirtualHost>
6.5 Enable Virtual host on apache:
open -a TextMate /etc/apache2/httpd.conf
Add this new line at the bottom:
# Include Passenger ModRails config file Include /private/etc/apache2/extra/httpd-passenger.conf
6.6 Add your .local domain to /etc/hosts/
open -a TextMate /etc/hosts
Add this line to that file and change to the name of your choosen application
You might add as many as you want, each line for each that ServerName on your VirtualHost blocks
127.0.0.1 my-rails-app.local 127.0.0.1 myapp-xyz.local
I have more than 50 .local apps in there.
5 Start Apache
first let’s test apache configuration:
apachectl configtest
if you get “Syntax OK” then you are ready to start it
sudo apachectl start
If you want Apache to autostart when you boot your computer,
then enable Web Sharing from preferences.
7. Final
go to your browser and open the url of your application http://my-rails-app.local
If it works, congratulations.
If didn’t work, let me know here in the comments.
Extras
Nokogiri
sudo port -v install libxml2 libxslt sudo gem install nokogiri -- --with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib --with-xslt-dir=/opt/local
Sqlite
sudo port install sqlite3 sudo gem install sqlite3-ruby
9. Sphinx, thinking-sphinx, sphinxsearchlogic
sudo port install sqlite3 sudo gem install thinking-sphinx sphinxsearchlogic
Update:
From the comments, some people might want to enable php and your Sites folder.
To be able to enable php and others you will have to enable another default vhost with localhost as servername.
Edit the file /etc/apache2/httpd.conf to enable vhosts
# Virtual hosts Include /private/etc/apache2/extra/httpd-vhosts.conf
then open /private/etc/apache2/extra/httpd-vhosts.conf file,
delete or comment everything from there and add this block only:
# # Use name-based virtual hosting. # NameVirtualHost *:80 # Change /Users/fred/ to your appropriate login name <VirtualHost *:80> ServerName localhost DocumentRoot /Users/fred/Sites/ RewriteEngine On DefaultType text/html <Directory "/Users/fred/Sites"> DefaultType text/html Options +ExecCGI FollowSymLinks Indexes AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
Links and Resources
http://rmagick.rubyforge.org/install-osx.html
http://wiki.github.com/tenderlove/nokogiri/what-to-do-if-libxml2-is-being-a-jerk
http://www.macports.org/install.php
http://guide.macports.org/#installing
http://distfiles.macports.org/MacPorts/MacPorts-1.9.1-10.6-SnowLeopard.dmg
http://rob.by/2009/installing-mysql-via-macports-on-snow-leopard-for-ruby-development/

Mathaba.net