Like this:

At the beginning of the month and after 8 years in the financial services sector, I started at a new company. Day one was a surprise and a refreshing change, everything was ready for me and worked! No red-tape, no policy documents to fill in, just a MacBook Pro sat ready and waiting for me to do whatever I liked with it. The new Mac was pre-installed with 10.9 so I thought I’d write down the process for either new Mac users/owners or anyone interested in setting up their local machine for development purposes.

The process is easier done in Terminal, so familiarity with that is helpful but not essential here, I’ll try to add helpful tips as we go along. To edit files, my preferred choice is nano, but you may want to use vi or another GUI visual editor. So, pop open Terminal and let’s begin..

Editing the Apache configuration file

Firstly we need to allow the usage of the httpd-vhosts.conf file from the main Apache configuration file httpd.conf.

sudo nano /etc/apache2/httpd.conf

In nano, using the “Where Is” function ctrl+W, search for “httpd-vhosts.conf”, you should find this directly under “# Virtual hosts”. Simply remove the hash at the beginning of the line to uncomment the include and your entry should then look something like this:

# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf

Save this (ctrl+X, then Y), now we need to edit that virtual hosts file and define our own domains:

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

The default file comes with some basic information and a couple of dummy configs, but for the purpose of learning, we’ll remove all of this and create our own from scratch. Use ctrl+K (Cut Text) to remove the existing lines. Enter the following in order:

# Force Apache to use port 80
Listen 80

Firstly we make sure that Apache is using the correct port, the usual being port 80 but you can use anything else that is unreserved if you prefer.

# Use a wildcard to listen for requests on all IP addresses
NameVirtualHost *:80

We then set the virtual host requests to listen for anything using port 80, if a domain “www.mydomain.com” for instance, does not match one of the ServerName directives below, it will default to using the VirtualHost.

The main parameter in the above block is the “DocumentRoot”. This defines where your files can be found. As a new PhpStorm fan (previously a SublimeText lover!), I use the default /Sites folder to store my files, you can of course choose whatever you prefer, just make sure you update the “<Directory>” value too.

I also added in an alias for “www” to allow this full sub-domain to also reach the same files, and also some directory permissions, I won’t cover those here, but maybe in a future post.

Next we need to trick your machine into believing that the internet address used “lee-mcintosh.com” is actually on your local machine, to do this we simply update our hosts file:

Like this:

I personally find the nicest repo of Laravel to be Chris Borgia’s Radiate package. It nicely pulls together some of the best bits of the web including version 4 of the excellent PHP framework and all the basics you’ll need with tastiest front-end kit like HTML5 Boilerplate, Font Awesome, Sass, Twitter Bootstrap and simple register form.

Note: As you’ll notice with most of my posts, I assume you’re using a Mac. If not, buy one! You’ll also need sudo permissions

So, to get started, let’s prepare the environment…

You’ll need Xcode install, so if you haven’t got it, go grab it from the Apple Store, then install the command line tools:

Now create a new folder for your project (I use PhpStorm to set this up)

$ cd /Users/leemcintosh/Sites/
$ mkdir myproject

Now let’s configure Apache to run your website…

To make things easier where permissions are concerned, I would recommend running Apache as your local user. This will allow you to set your VirtualHost to point to your local project without encountering permission issues).

VirtualHosts make it easier to run your projects locally and there are a number of ways to set up a VirtualHost environment in Apache, I’ll show you how to add multiple websites using the “sites-available” folder…

At the end of the file, add the following

Include /private/etc/apache2/other/*.conf
Include /private/etc/apache2/sites-enabled/*

Save the file

$ cd /etc/apache2/
$ mkdir sites-available

We’ll add “sites-enabled” shortly, once we’ve configured your new site first

Save the file (ctrl+x then Y), and now copy that to the “sites-enabled” folder, on Linux distributions you can use the a2ensite command, but on a Mac you have to do things manually using a symbolic link (symlink)…

$ ln -s sites-available/ sites-enabled

Now that we have our site configured, we must trick our browser into believing that the website is on the Internet, we do that by forcing an entry in our hosts file…

$ nano /etc/hosts

At the bottom of this file, add your new project

127.0.0.1 dev.myproject.com

Save the file, clear the dns cache and then restart Apache

$ dscacheutil -flushcache
$ apachectl restart

You should now be able to visit http://dev.myproject.com (obviously replace myproject and name with your own) and it will load the web application under /Users/leemcintosh/Sites/myproject/.

If you don’t see the website, check Apache

$ apachectl configtest

From that you should be able to see any errors that have occurred. Simply rectify and restart Apache. If problems still persist, either tail the logs as defined in the VirtualHost configuration, or contact me!

Download the Laravel framework and components…

Clone Radiate into your new project (you’ll need an ssh key mapped to github for this part)