How to setup Apache PHP and MySQL in MacOS X 10.10 Yosemite [ Updated ]

Upgraded to Yosemite , great . now lets see how to setup Apache webserver with PHP and MySQL . unlike 10.7 Lion or 10.6 there is no prefrence pane option to turn on Apache . but don’t worry MacOSX Yosemite comes with Apache and you can turn on it using Terminal . Okay lets see how to setup Apache PHP and MySQL setup in Mac OS X Yosemite .

apachectl -v && php -v

apache and php with yosemite

setup apache

open terminal and type

sudo apachectl start 

now open your favourite browser and browse to http://localhost
you will see default apache page

default apache page in MacOX yosemite

Lets setup user-dir for per user

I am going to use nano in this guide feel free to use any of your favourite editor .

  • Enable mod_authz_core, mod_authz_host, mod_userdir and modules
sudo nano /etc/apache2/httpd.conf

Uncomment These Three Modules For Now ( Remove “#” sign from the starting of line if “#” is present )

LoadModule authn_core_module libexec/apache2/
LoadModule authz_host_module libexec/apache2/ 
LoadModule userdir_module libexec/apache2/ 

You can dump list of all Loaded Modules using sudo apachectl -M command .

Enable User Dir IN MacOSX

user-dir module

Then Navigate to bottom of the file , and uncomment following line

Include /private/etc/apache2/extra/httpd-userdir.conf

user_dir apache

then open /etc/apache2/extra/httpd-userdir.conf

sudo nano /etc/apache2/extra/httpd-userdir.conf  

and uncomment following line

Include /private/etc/apache2/users/*.conf

enabling user dir from extra conf

Okay Now Setup your user.conf

sudo nano /etc/apache2/users/YOURUSERNAME.conf
<Directory /Users/*/Sites>
 DirectoryIndex index.html index.php index index.html default.html default.htm
 AllowOverride FileInfo AuthConfig Limit Indexes
 Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
 Require all granted
 Require all denied

Now Create Sites Folder in your Home Director

mkdir Sites

Now test apache config using

Screen Shot 2014-07-11 at 10.06.05 pm

Now Create a File inside Sites Directory Name it index.html
Enter Some Plain HTML and save that

Now Let’s Test Apache Configuration

apachectl -t 

then restart apache

sudo apachectl restart

then open browser and browse to http://localhost/~yourusername , Note that “~” tilde in url

your will see something like this

Apache user dir mac osx page

Setup PHP

sudo nano /etc/apache2/httpd.conf 

and uncomment

LoadModule php5_module libexec/apache2/

enabling php in macos yosemite

and test apache config using apachectl -t
then create a file in your Sites Directory

nano ~/Sites/index.php

then enter simple phpinfo() in index.php


and browse to http://localhost/~username/index.php
you will see phpinfo page

Screen Shot 2014-07-11 at 10.30.16 pm

setup MySQL

Download MySQL (Download DMG ) :

Screen Shot 2014-07-11 at 10.38.08 pm

Install that Like another Package of MacOSX there is nothing tricky , install prefPane ( included in DMG )

adding mysql in $PATH

touch ~/.bash_login && echo export PATH=$PATH:/usr/local/mysql/bin | tee ~/.bash_login

above command will create .bash_login file in your home directory and it will add MySQL in PATH

restart your terminal and start mysql from PrefrencePane

MySQL Prefrencepane yosemite

okay now open terminal and type


Aloks-Mac-Pro:~ alok$ mysql_secure_installation 


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): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] < ------------------ Press ENTER 

Set root password? [Y/n] < ------------- Press Enter 

Screen Shot 2014-07-11 at 10.49.52 pm

New password:  < ------------------ ENETR NEW ROOT PASSWORD 
Re-enter new password:
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]  < ------------------- PRESS ENTER 


Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]  < ------ PRESS ENTER 

Screen Shot 2014-07-11 at 10.50.52 pm

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]  < ---------- PRESS ENTER 
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]  < ------------- PRESS ENTER 
All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

Cleaning up...

All Done Now MySQL is set up

Screen Shot 2014-07-11 at 10.53.52 pm



happy Coding 🙂

Tagged With : - - -