John's Sensu Book

John's Drupal Books

Installing Drupal on Mac OS X 10.5 Leopard

Submitted by John on Wed, 2007-11-07 16:00

I thought I'd write up the steps I took to get Drupal running on a stock Leopard installation. You may wish to save some time and install MAMP instead. Especially if you need GD support (i.e., you're going to have Drupal do image resizing). Update 17-Dec-2007: In fact, I recommend using MAMP instead.

Step 1: Enable PHP

Uncomment line 114 in /etc/apache2/httpd.conf to enable Leopard's built-in PHP:

LoadModule php5_module libexec/apache2/libphp5.so

Start Apache 2 by using the Sharing panel in Preferences or at the command line with the following:

sudo apachectl start

(If Apache was already running, use restart instead of start.)

Place a test document into the default htdocs root to see if php is running. I created /Library/WebServer/Documents/phpinfo.php with the following content:

<?php phpinfo(); ?>

Now going to http://localhost/phpinfo.php shows me the info page for PHP 5.2.4. Yay!

Step 2: Friendly Virtual Hosts in Apache

I don't like keeping my websites in /Library/WebServer/Documents. It's a cumbersome place; I'd much rather keep them in /Users/john/Sites. That's right in my home directory and when I copy or sync my home directory I get the sites I'm working on, too. But using Leopard's built-in URL support for my home directory is verbose, too:

http://localhost/~john/sitename

I'd much rather use a nice short URL like http://dev/sitename. So first I assigned the name dev to my computer by adding a line to /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 dev127.0.0.1 localhost255.255.255.255 broadcasthost...

Since Leopard caches DNS queries, we force it to reread /etc/hosts by using dscacheutil which replaces the lookupd utility that was in OS X 10.4.

You can test that everything works and you didn't make any typos by using

sudo apachectl configtest

which should tell you that the syntax of your Apache configuration files is OK (it will point you to the line containing the error otherwise). If all is OK, restart Apache to effect the changes:

sudo apachectl restart

Now you should be able to go to http://dev/ in your browser, and the file at /Users/john/Sites/index.html should be displayed.

Installing MySQL

There was no friendly installer for OS X 10.5 so I used the OS X package for 10.4. It ran fine.

It was unclear from my web searches whether the startup item for MySQL is working on Leopard. So I created the following file at /Library/LaunchDaemons/com.mysql.mysqld.plist to autostart MySQL (thanks Joannou Ng):

Rejoicing

Now I've got an easy setup where I can create my Drupal sites under /Users/john/Sites and refer to them with short names like http://dev/foo. MySQL is running nicely. Public access to my dev sites is disabled by Apache. Life is good.

Hey John. Thank you so much for this excellent tutorial. Everything went very smoothly.

If you haven't already, i'd appreciate you expanding a bit on why you prefer MAMP over this method. I, for one, don't see the value of downloading and installing a 127MB framework to do something that is already supported (semi) natively. I recognize this is a naive viewpoint, and i'd love to hear more on this issue.

Leopard's built-in PHP does not support dynamic extensions or PECL. So when you want to use APC for caching, or memcache, or other interesting PHP extensions that Apple does not provide you are in for a lot of pain and wasted time and effort. With MAMP it's simple. Also, with MAMP you have ownership of the conf files, so editing settings for PHP or Apache is quick and simple without a stop for authentication every time. (Of course, you want to set up your environment securely if you are on the internet.) Just for comparison, it took me about a day, off and on, to write the instructions in this blog post. By comparison, MAMP took less than an hour. Your time is worth a lot. Also, note that MAMP is for a development environment, not a production server.

This is a great blog piece. I am very happy about finding it. I'm hosting a web site on a Mac Mini and I don't want to use MAMP for production. I have everything working except for GD so I'm still looking. You've solved my MySQL startup problem which I appreciate greatly.

Great tutorial, John. Your wording helped me a lot but I am still hung up on something that must be missing. I'm using Leopard. There was no "Sites" in my user directory (I think I deleted it long before ago). So I copied the one from the "Guest" user. There were also no files at all in the /private/etc/apache2 directory so I copied yours into it changing the John to my user name (david). I then ran the configtest and got the following error message: "David-Crellens-Computer:/ david$ sudo apachectl configtest
Syntax error on line 2 of /private/etc/apache2/users/david.conf:
Invalid command '\xca', perhaps misspelled or defined by a module not included in the server configuration".

I removed all content of the file and saved it as a blank file. configtest passed the test and server worked as before I started this. I then put just a commented line in the file and saved it. configtest failed with same error msg as above. I tried searching on the '\xca' command and got no results. Any ideas?

I'm leery about implementing MAMP because I've already updated PHP from MAMP's version and I already have an up and running MySQL that I'd hate to replace.

In search of solving Web Serving problems with Leopard I learned that Leopard installs Apache2 in place of Apache1. Apache2 does some things slightly different but also in searching I found a shell script that is the cat's meow. It sets up virtual hosts for you in almost the Mac way, i.e., little hastle. Here is the info:
Go to Patrick Gibson's website: phttp://patrickgibson.com/news/andsuch/000091.php and download the script: virtualhost.sh
Use it in terminal like this:
sudo /users/david/-sites/virtualhost.sh crellen

It takes care of everything. Basically, after taking care of the httpd.conf prerequisites, it sets up a new file for each new host in /private/etc/apache2/virtualhosts/ and even creates the host directory if you didn't do that yet.

this is really very helpful tutorial indeed. At the same time I got a problem after initial installation of MySQL everything was just fine until I wanted to call from command line mysql. It did not start. Neither mysql_secure_installation. What I found is that neither of this appeared in /usr/bin directory. SO, if type ./bin/mysql it works just fine. What I suppose to do make this thing working? Thanks.

Wonderful tutorial. Just happened to stumble upon it. I followed the instructions step-by-step and it worked great. Just wanted to let you know that right before the wonderfully named "Rejoicing" section, in the "Installing Drupal" section, the full file name and location whose write permissions need changing is (at least on my version of Drupal, 6.9): drupal/sites/default/default.settings.php, as opposed to drupal/sites/default/settings.php.

Otherwise I cannot get Drupal to install on a Mac at all. When I run the install.php it offers me the first screen, I ask it to install in English then I get a blank screen. Tracing through the code it is clear that it can't access the database it hasn't installed! Still can't figure out what permissions are wrong.

It would be so much simpler if Drupal came with a default database for the basic system that could be installed through phpMyAdmin or somesuch.

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, you@example.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.