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:
$ xcode-select --install
If you don’t already have it, install Homebrew (I prefer to curl it)
$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
$ brew doctor
If you do, simply update
$ brew update
Then grab the tap where the dependancies are
$ brew tap homebrew/dupes
$ brew tap homebrew/versions
$ brew tap homebrew/homebrew-php
Brew up your preferred flavour of PHP (I’m going with 5.4 here as 5.5 isn’t stable apparently!)
$ brew install php54
Some extra libraries are required to get this to work…
$ brew install php54-mysqlnd_ms php54-memcached memcached
$ ln -sfv /usr/local/opt/php54/*.plist ~/Library/LaunchAgents
$ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php54.plist
Now that you have your own custom compiled version of PHP installed, we need to update OSX’s Apache configuration to use the new PHP module as opposed to the native OSX version.
$ brew info php54
Take note of the LoadModule line in the ‘Caveats’ section
$ nano /etc/apache2/httpd.conf
Search for ‘LoadModule php5_module’. Change to use the new php54 library by adding # on the old one and adding new one on the next line
#LoadModule php5_module libexec/apache2/libphp5.so
LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so
Save and close the file, then you need to install mcrypt
$ brew install mcrypt php54-mcrypt
Restart the Apache
$ sudo apachectl restart
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).
$ nano /etc/apache2/httpd.conf
Search for “User _www” and replace ‘_www’ with your Mac username (mine being “leemcintosh”.
Then search for “vhosts” and uncomment the line so it looks like this
# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf
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
$ cd sites-available
Create a new site in here using the name of your new project
$ nano dev.myproject.com
Now we need to enter our VirtualHost configuration information
NameVirtualHost *:80
<VirtualHost *:80>
ServerName dev.myproject.com
ServerAdmin webmaster@localhost
DocumentRoot /Users/leemcintosh/Sites/myproject
<Directory /Users/leemcintosh/Sites/myproject/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/myproject-com.error.log
CustomLog /var/log/apache2/myproject-com.access.log combined
</VirtualHost>
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)
$ cd /Users/leemcintosh/Sites
$ git clone git@github.com:cborgia/radiate.git myproject
Inside your project root (myproject/), install composer
$ composer install
Start Artisan server, and create a new key
$ php artisan serve
$ php artisan key:generate
Install MariaDB (MySQL variant)…
$ brew install mariadb
Start MySQL
$ mysql.server start
For additional MySQL configuration, check back for new posts! Have fun :)