I recently got a new Mac and needed to configure it as a local web server for the many Drupal sites I work on. I used to use MAMP for this, but lately have been using the built-in functionality that comes on a Mac instead. MAMP is easy to install, but it creates a duplicate version of PHP and a duplicate version of Apache. That takes up space on my machine and occasionally causes trouble when some operation uses the wrong version of PHP because of confusion about which installation should take precedence. Setting up a Mac without MAMP used to be sort of complicated, but it's been getting easier and easier with every version of Mac OS, and it's not that hard any more. I thought I'd share the process I'm using now.
Helper Apps and Terminal Window
To start with, I install a couple of apps that make all of this much easier to do. Pathfinder
is a replacement for Mac's Finder that adds a number of nice improvements. The most important feature is that you can view invisible files with it. Once installed, go to the View
option in the menu bar at the top of the page, and check the option to view invisible files.
The other handy app I depend on is Text Wrangler
. The thing I especially like about that is that it makes it easy to edit protected files. When I try to edit a protected file using Text Wrangler it asks if I want to unlock the file. If I say yes, the file is unlocked while I make my changes, then reset to its previous permissions. Without this tool I would either have to edit it in my terminal window using sudo, or keep changing the permission on the file before I edit and then change it back again afterward.
You need to use the terminal window for many of these steps. To find that, click on the Launchpad
icon in the dock, then choose Others
and then Terminal
Next install PHP. This is easy, it's already installed! To confirm that type the following to see where it is located:
And type the following to see what version is installed:
Set up php.ini, if it doesn't already exist, by copying php.ini.default:
sudo cp /etc/php.ini.default /etc/php.ini
You may need to edit it to do things like increase memory.
Apache is also already installed. There is a default web root located at
You can put a web root in other places, but that makes configuration more complicated, so I've been leaving that alone.
To start Apache, using the terminal type:
sudo apachectl start
To stop Apache:
sudo apachectl stop
To restart Apache:
sudo apachectl restart
To test this, start Apache and go to http://localhost
in a browser.
You should see 'It works!'
You'll be dropping our Drupal files in the web root, so add a bookmark to that using Pathfinder. Go to
Then choose Go
from the menu at the top, then Favorites
and Add to Favorites
Now you have a quick bookmark to the web root. Go to that location to add the Drupal files for your web site.
There are a couple final tweaks to Apache. One is to enable it's handling of PHP by enabling the PHP module. Using Pathfinder, navigate to
Using Text Wrangler, uncomment the line in that file by removing the '#' in front of it:
LoadModule php5_module libexec/apache2/libphp5.so
If you want to use Virtual hosts, set them up in
Edit http.conf and remove the '#' in front of the following line so the Virtual hosts get used:
Finally, to get clean URLs working find and change the following in http.conf. Find:
And change it to:
The easiest way to do the remaining tasks is to install Homebrew
. In a terminal window type the following:
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
Once it's installed, keep typing
until all errors are fixed. It should be pretty self-explanatory.
The dead easy way to install MYSQL is with Homebrew. Once you have that, just type:
brew install mysql
Check where it's located and which version you have:
Confirm that it's working:
MYSQL is set up without a my.cnf file. You may want to create one at /etc/my.cnf with your preferred configuration settings.
MYSQL is set up without a root password by default. You should set a MYSQL root password using your terminal window, where 'ROOT_PASSWORD' is whatever password you want to use for this:
mysqladmin -u root password 'ROOT_PASSWORD'
Once last step. Some programs expect to find the mysql.sock file at /var and it isn't there by default. Using the terminal window:
sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
Use Homebrew to Install phpmyadmin, which requires some additional dependencies. In the terminal window type:
brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php
brew install phpmyadmin
Once that's installed, in the terminal type:
sudo cp /usr/local/share/phpmyadmin/config.sample.inc.php /usr/local/share/phpmyadmin/config.inc.php
Use Pathfinder to navigate to the Apache http.config file at:
Edit it using TextWrangler. Add the following to the bottom of http.config:
Alias /phpmyadmin /usr/local/share/phpmyadmin
Options Indexes FollowSymLinks MultiViews
Allow from all
Note that the above only works in versions prior to Yosemite, in Yosemite change
Allow from all
Require all granted
Restart apache. Now navigate to http://localhost/phpmyadmin in a browser and you should see a place to log into PHPMyAdmin.
To change the way the login works, using PathFinder go to:
Edit config.inc.php using TextWrangler.
If you don't want to have to log in each time, add the following to the Server config:
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'ROOT_PASSWORD';
$cfg['Servers'][$i]['auth_type'] = 'config';
Change the following to bypass the root password. You can do this if you want to change the root password or if you can't get logged in. Change the root password using the UI in PHPMyAdmin, then reset it to false to go back to using the password:
$cfg['Servers'][$i]['AllowNoPassword'] = true;
Once logged in, set up the users and databases you need.
You will probably want to be able to use Git to checkout projects and files. It should already be installed. To confirm that, and see where it is and what version you have, in the terminal type:
That's enough to get a local version of a web site working, but for Drupal you'll probably also want to install Drush, which makes management of a Drupal site much much easier. To do that,
git clone drush
sudo chmod u+x /usr/local/Library/drush/drush
sudo ln -s /usr/local/Library/drush/drush /usr/bin/drush
Go to your home location, /Users/YOURNAME.
Look for a file called .profile
(the name starts with a dot, it is a protected file). If it doesn't exist already, created it. Edit .profile with TextWrangler, and add this line:
That's it, everything necessary for a local installation of your web site should be working at this point. It's a little bit of work, but not terrible. Even installing MAMP requires a few extra steps that will send you to a terminal or require that you have a way to find hidden files and edit them, so this process is not a huge amount of extra effort.