Running Drupal on OS X 10.5 was a pretty huge pain in the ass. It's much easier in in 10.6 since it includes PHP 5.3 with GD and the PDO out of the box. And Drupal 6.14 resolves the PHP 5.3 incompatibilities.
In this guide I'll walk through the process I used for reinstalling OS X, then installing MacPorts and using it to install MySQL.
Note: I've shortened this up a bunch since it was first posted (originally it was using PHP 5.2 from MacPorts). I also want to make it clear that I am familiar with MAMP but would rather punch myself myself in the face than use it. If you'd like to, go right ahead since it's probably easier—and as evidenced by the commenters below—you're in good company. But I'm going to continue to compile my own so I know where everything ends up.
A Note for Those Upgrading From 10.5
One thing to note before we start. These instructions assume a clean installation. Apple doesn't come right out and say it but the $29 10.6 disc can be used for new installations or upgrades.
If you followed my previous guides for compiling PHP and Apache I'd recommend the following upgrade procedure. I want to be very clear that this worked fine for me on two computers but I won't take any responsibility if it doesn't work as well for you. Consider yourself warned.
- Use something like SuperDuper to make a bootable back up of your system to an external drive.
- Boot off the external drive (holding down the option key will let you choose the boot volume) and ensure that everything works correctly.
- Unplug your backup drive.
- Insert the OS X DVD and boot into the installer.
- Use the Disk Utility to erase your computer's hard drive.
- Install OS X
- After the reboot re-attach your hard drive and use the Migration Assistant to restore your Users, Applications and Settings but uncheck the Other files and folders option.
- Manually move any of the other files which may include MySQL databases in
At this point you should have a clean installation with the majority of your data migrated. I'd suggest keeping the backup drive around for a while incase you find that you've missed something.
Install the XCode package from Optional Installs directory on the install DVD.
Follow the directions to install Mac Ports. As of early November 2010, due to dependency issues, you'll need to install the Java for Mac OS X 10.6 Update 3 Developer Package before you can install most ports.
To follow these instructions you need to be running as the root user using the default
sh shell. If you've got administrator permissions you can open up a Terminal window and switch users using the
sudo command then provide your password.
amorton@minivac:~% sudo su
port to install MySQL:
/opt/local/bin/port install mysql5-server
You'll need to create the databases:
Let launchd know it should start MySQL at startup.
/opt/local/bin/port load mysql5-server
Secure the server and set a new admin password:
Create a configuration file:
cp /opt/local/share/mysql5/mysql/my-large.cnf /etc/my.cnf
/etc/my.cnf using your editor of choice and make the following changes to the
- Change the maximum packet size to 16M:
max_allowed_packet = 16M
- Enable network access by ensuring the first line is commented out but add the second to limit access to the localhost with the second line:
bind-address = 127.0.0.1
Restart MySQL to have the settings changes take effect:
A last, optional, step is to create a symlink for the
mysql5 executable so can be invoked as
ln -s /opt/local/bin/mysql5 /opt/local/bin/mysql
ln -s /opt/local/bin/mysqldump5 /opt/local/bin/mysqldump
You need to create a
if ( ! test -e /private/etc/php.ini ) ; then cp /private/etc/php.ini.default /private/etc/php.ini; fi
/private/etc/php.ini and set the correct location for MySQL's socket by finding:
mysqli.default_socket = /var/mysql/mysql.sock
And changing it to:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Repeat for both
While you're editing
php.ini you might as well set the timezone to avoid warnings. Locate the
date.timezone setting uncomment it (by removing the semi-colon at the beginning of the line) and fill in the appropriate timezone:
date.timezone = America/New_York
Enable PHP by opening
/private/etc/apache2/httpd.conf in the editor of your choice and making the following changes.
Uncomment this line:
#LoadModule php5_module libexec/apache2/libphp5.so
- Find and change this one:
DirectoryIndex index.php index.html
Then restart Apache:
Totally optional steps here.
pecl to install XDebug.
pecl install xdebug
You'll need to edit your
/etc/php.ini (you'll need to copy one of the sample .ini files) and add the following lines:
xdebug.profiler_enable_trigger = 1
My VirtualHost Setup
I like being able to have multiple Drupal sites a few keystrokes away so I create virtual hosts for d5, d6 and d7 using the following procedure.
/etc/apache2/users/amorton.conf and add a VirtualHost to the Apache config:
# This should really be in httpd.conf but i'm keeping it simple by doing it here:
Obviously you'd want to replace
amorton with your username.
Add an entries to the