Install and configure Apache, MySQL & PHP on OS X Lion 10.7 and 10.6
How to install and configure Apache, MySQL and PHP on Mac OS X 10.7 Lion and OS X 10.6 Snow Leopard.
Apache and PHP already come preloaded in OS X 10.7 Lion and 10.6 Snow Leopard, the versions on 10.7 Lion are PHP 5.3.6 and Apache 2.2.20, these 2 pieces of Open Source software are part of the “AMP” stack with MySQL the missing third component.
A – Apache M – MySQL P - PHP
Their are other options for Mac users to install an AMP stack using prebuilt point and click downloads including the following, MAMP, DAMP, XAMPP and BitNami – these installations use separate binaries outside of the regular OS X software so no conflict occurs and it makes it easier to delete the stacks without affecting the core OS.
However you need to configure with different port numbers and sometimes can be a bit of a hassle in configuration.
This tutorial bypasses the 3rd party AMP stacks and uses the native installed components with the exception of MySQL which is a separate install, unless you have OS X Server, which then MySQL comes preloaded in 10.6 but not 10.7 which has dumped MySQL in favour of PostgreSQL instead – you can still install MySQL on 10.7 Server with the instructions below.
To get Apache, MySQL and PHP running natively on OSX is quite easy and straightforward - this guide should have you up and running in no time.
This guide uses the command line to achieve some text editing of various configuration files, however If you aren’t comfortable in the Terminal you can do this in a graphical mode, download a free text editor utility call TextWrangler, launch it, when you come to edit one of the configuration files, open file, you have to click on “show hidden items” at the bottom of the open dialog box to see all of the system files. But you will still need to use the terminal for some of the commands which don’t involve editing files.
You can verify your version of PHP by launching the Terminal application, as found in the Utilities folder: /Applications/Utilities/Terminal
To find the PHP version, type at the prompt:
username@[~]: php -v
And the version is displayed:
PHP 5.3.6 with Suhosin-Patch (cli) (built: Jun 16 2011 22:26:57) Copyright (c) 1997-2011 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
To find the Apache version, type at the prompt:
username@[~]: httpd -v
And the version is displayed:
Server version: Apache/2.2.19 (Unix) Server built: Jun 16 2011 22:09:54So far so good, however by default PHP is not enabled and has to have its module loaded you need to make a simple edit in the Apache configuration file “httpd.conf” file. This is filed in /etc/apache2/httpd.conf, get there in the terminal by typing:
username@[~] cd /etc/apache2/
Then in the terminal you need to use a text editor either “vi” or nano” will do, this file also has stricter permissions so the “sudo” command needs to be used to edit the file, you will need to be an admin user to have permission to change the file, type:
username@[/etc/apache2]: sudo nano httpd.conf
and then your password.
Once in nano click “control+w” to get a search dialog, type “php” and this will bring you to the php module line:
#LoadModule php5_module libexec/apache2/libphp5.so
Uncomment out the hash # to leave it like:
LoadModule php5_module libexec/apache2/libphp5.so
Finally type “control + x” to exit and when prompted save the change by typing “y”
So now onto the 2nd piece of the puzzle, MySQL. You need to download it from http://dev.mysql.com/downloads/mysql/, chose Mac OS X ver. 10.7 (x86, 64-bit), DMG Archive for an Intel Mac the .dmg file is a point and click installation nice and easy, you can download the tar.gz also for a command line install. The easiest format is the .dmg file as it allows for an installation visually using the GUI.
When downloading you don’t have to sign up, look for » No thanks, just take me to the downloads! - go straight to the download mirrors and download the software from a mirror which is closest to you.
After download open the .dmg and install:
The first is the MySQL software, the 2nd item allows MySQL to start when the Mac is booted and the third is a System Preference that allows start/stop operation and a preference to enable it to start on boot.
Once the installs are done you can start the mysql server right from the System Preferences which has a new preference in the “Other” category called “MySQL” click start and now it is running.
To find the MySQL version from the terminal, type at the prompt:
username@[~]: /usr/local/mysql/bin/mysql -v
Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 118 Server version: 5.5.14 MySQL Community Server (GPL) Reading history-file /Users/username/.mysql_history Type 'help;' or 'h' for help. Type 'c' to clear at the current input statement.
This also puts you in to an interactive dialogue with mySQL, type \q to exit.
If you got the error:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
then mysql was not started, go back to the System Preference and start the database.After installation, in order to use mysql commands without typing the full path to the commands you need to add the mysql directory to your shell path, this is done in your “.bash_profile” file in your home directory, if you don’t have that file just create it using vi or nano:
username@[~]: cd ; nano .bash_profile
and then add:
The first command brings you to your home directory and opens the .bash_profile file or creates a new one if it doesn’t exist, then add in the line above which adds the mysql binary path to commands that you can run. Exit the file with type “control + x” and when prompted save the change by typing “y”. Last thing to do here is to reload the shell for the above to work straight away.
username@[~]: source ~/.bash_profile
Then test the path by just this time issuing the mysql command without the full path:
username@[~]: mysql -v
You will get the version number again, just type “q” to exit.
The next step is to set up a root password for mysql there are 2 ways to do this one is a regular way and the other provides additional security and disables all other access:
If you have set the path correctly as above:
$ mysqladmin -u root password 'yourpasswordhere'
!use the single quotes
Then when logging in to mysql:
$ mysql -u root -pyourpasswordhere
!NB the no space between -p and the password
username@[~]: sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MySQL to secure it, we'll need the current password for the root user. If you've just installed MySQL, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none):
Go ahead and just hit enter if this is a new installation and no password currently exists, follow the prompts to set up a new root password – this is a root password just for mysql separate from the root password of OS X you should set this.
You also get asked about:
- Removing anonymous users?
- Disallow root login remotely?
- Remove test database and access to it?
- Reload privilege tables now?
If this is a new installation you can just answer yes to the questions.
Once the root user and password is set, you have to interact with mysql with the username and password, so access via command line is (note that there is no space between -p and the password):
username@[~]: mysql -u root -p[password]
So thats the two components installed with MySQL having a System Preference option to Start/Stop the database.
You can start/stop the Web Server Apache in the System Preferences under Sharing and checking the WebSharing box. (Sometimes you may have to toggle it on/off a few times to get it going).
This can also be accomplished in the terminal using:
sudo apachectl start sudo apachectl stop
Or restart the web server gracefully using the following:
sudo apachectl graceful
Once you start your server the there are 2 x document root folders for sharing, one is a top level and the other is user account specific:
You should see a “It Works!” or a OSX welcome page depending on which document root you are at, in the finder these locations are found at your Sites folder in your home folder for local user:
or at the higher level
At the user level in Lion 10.7 you may need to create the personal web sharing folder first, do this through System Preferences > Sharing > Web Sharing and click “Create Personal Website Folder” if it is created this will say ” Open Personal WebSite Folder”
The final thing to verify is that PHP is loaded and ready to go by creating a new text file, has to be plain text (use TextEdit) and typing in:
<!--?php phpinfo(); ?-->
Save the file as phpinfo.php and save it to the Sites folder in your home directory. Now point your browser to:
You should see the full PHP configuration page. If you just see the code restart the web server to make sure the php module is loaded.
That’s it you are ready to develop and share!
The only difference between 10.6 and 10.7 are some incremental version numbers on Apache and MySQL otherwise the process is the same for both operating systems.
To get up and running with mysql and use phpMyAdmin to manage the mysql database, there is a guide here.