# Getting Started With Laravel

Working with PHP for the past 10 years or so has taken me through quite a ride. Starting with rookie mistakes like not being able to find a semicolon to trying to build my own framework for building sites (do not do this), I finally arrived at something great when I learned object-oriented PHP.

Almost all CMS systems use it, including Joomla, Drupal and WordPress, and of course many frameworks like CakePHP use it as well. I arrived at Laravel in early 2014 and I was instantly hooked. It not only uses OOP, it requires it! I have to admit, this was a challenge, but I learned so much thanks to it, and it has made the code I write for other systems a lot better too!

In this article I’ll show you how to get started with Laravel by installing everything that’s needed to run the system, showing you how to use Laravel Homestead—a great virtual machine—and finally, how to install Laravel itself.

It may seem like a mouthful, but I wanted to make sure that everyone can install it, whether they’re on Windows, Linux or Mac, and even if they have few of the prerequisites. Don’t worry, you only need to do most of this stuff once, and even if you need to do it again, it will be much simpler the next time.

## What Is Laravel?

Laravel is a PHP Framework created by Taylor Otwell as a more advanced take on the CodeIgniter framework. The first beta was released in mid-2009. As of June 2015, Laravel is at version 5.1, which is the first version to receive LTS (Long Term Support), putting Laravel into the mix when searching for a viable platform for large-scale work.

Laravel is designed to help you work in a standardized, elegant and rapid fashion. This is achieved through strict guidelines and third-party systems.

### Standardization

Laravel has a strict Model-View-Controller (MVC) structure and a natural way of working with object-oriented code. These two features almost force a certain way of writing code on developers—which is a good thing.

As far as style and methodology goes, Laravel applications will be similar, so other developers can come in and work with an instantly familiar mindset.

### Elegance

Laravel’s elegance stems from the same OOP nature and MVC mindset and the routing methodology used. A few simple characteristics of the engine as a whole conspire to make you write code which is visually pleasing, organized, and as self-documenting as possible.

Self-documentation is a wonderful byproduct of well-written object-oriented code. You can achieve almost readable sentences by naming your classes, functions and variables properly, adding up to highly browsable code.

More importantly, all this translates to predictable and testable code which produces consistent, easy-to-foresee results every time.

### Speed

The speed at which you can build an application is astonishing. If you are new to OOP, Composer and using the terminal, this may not be apparent at first, but once you get the hang of things you will be astonished at what you can accomplish.

Laravel is set up to work well with third-party packages from Composer, which means that adding full support for the Facebook API, or the MailChimp API, Loggers, Profilers and other tools takes a few keystrokes—not minutes or hours.

## Installing Laravel

You can install Laravel on most servers, or create your own using a virtual machine. The basic requirements are:

• PHP >= 5.5.9
• OpenSSL PHP Extension
• PDO PHP Extension
• Mbstring PHP Extension
• Tokenizer PHP Extension

I’m using Laravel Homestead to run Laravel locally. Homestead is a Vagrant box which you can grab for free. The link above has complete installation instructions if you need them, but I’ll outline the main steps below.

In addition to a server, you’ll need to have Composer installed, which is a package manager. Laravel uses it to download any third-party code it needs.

While git is not strictly necessary, it will make your life a lot easier. Git is a versioning system, and lots of people use it for their projects, hosting them on GitHub. To be able to use git effectively, you’ll need the git command, which we’ll install below.

### 1. Install Composer

Composer can be installed locally or globally. I prefer the global option because it makes my life a lot easier, so that’s what I’ll show you here. For more detailed information and instructions for different OS and setups, take a look at the Getting Started Guide.

Linux and OSX users should first make sure that the /usr directory exists, and if it doesn’t, create it. Next, run the following command:

Windows users can use the installer from the Getting Started Guide. If you want to be able to run the composer command from anywhere, you need to place it in your path.

To place a folder in your path, just follow these instructions from WindowsITPro.

### 2. Install Git

Luckily, git is super-simple to install, so just take a look at the Getting Started guide for detailed instructions.

On Linux, you’re most likely to be able to install it with the following simple command.

On OSX, the easiest way to get git support is to install the Xcode Command Line Tools, or to go to the Git Download page and grab the latest version.

### 3. Install VirtualBox and Vagrant

The first thing you’ll need is VirtualBox and Vagrant. Both are simple, installable files, so you just grab them, install them and you’re done.

The box contains the operating system and other software you’ll need to run a local server and Laravel. You can download the box with a single command in your terminal.

It may take a while for the box to download, so feel free to grab a coffee at this point.

### 5. Install the Homestead CLI

To install the command-line interface for Homestead, you’ll need to clone a git repository. Since we now have git installed, we can use a single command. Run the following in a folder where you want to keep all your Laravel projects.

I work on OSX and I have a folder within my main user home folder named “websites”. Within that folder I have a “wordpress” folder, which contains WordPress projects that run from a different Vagrant box. I ran the command above from within the “websites” folder. This created a “Homestead” folder in there, and all my Laravel projects will be placed within.

If you want to be on the bleeding edge of PHP, you can install the PHP 7 version of Homestead instead. Use the following command:

To initialize Homestead, run bash init.sh from within the Homestead folder, which will create the appropriate files in the ~/.homestead directory within your home directory.

The first thing we’ll need to do is create an SSH key and add the path to it to the Homestead.yaml file. To create an SSH key on Linux or OSX, use the following command:

On Windows, the easiest way to create this is to use the Git Bash tool. This is similar to the terminal or Command Prompt but has some added awesome. Switch it on by right-clicking the desktop and clicking Git Bash.

The next step is to modify the ~/.homestead/Homestead.yaml file. Now there’s actually not a lot we need to do because it should already be set up almost perfectly. If you open it up, you should see why:

• The provider is already set to virtualbox, which is what we’re using.
• The authorize option is set to ~/.ssh/id_rsa.pub, which should be where your SSH key was saved. Take a look at the messages received when you generated your SSH key, and you should see the path in there.
• The IP is set to 192.168.10.10. You can change it if you’d like to, but we’ll be working with this.

In fact, all we’ll do is modify the sites section and set the shared folder. It would work just fine as it is, but we’ll be running a number of projects, so it’s best if you already know how to create them. Let’s create two test sites, a blog and a webshop, which we want to reach through http://blog.dev and http://store.local respectively.

Make sure that your sites definition in the file looks like this:

The last step here is to add the domains to the hosts file on your computer. On Linux and OS X, this file is located at /etc/hosts, and on Windows it is at C:\Windows\System32\drivers\etc\hosts. You need to add two lines to this file:

Finally, to set the folder(s) shared between the virtual machine and your local machine, look to the folders section. I’ve set it up like so:

### 7. Launching the Vagrant Box

This will be pretty short! Go to the Homestead folder and run vagrant up. The first time you do this it may take a while, but subsequent launches will be extremely fast. The first time round an OS is essentially installed and configured, and the next time round it just needs to be booted up.

If you’ve done everything correctly, you should be able to visit http://store.local and get the message “No input file specified”. This is fine—it just means our folder is empty. If you go into your ~/websites/Homestead/Code folder and create the store/public folder and an index.php in it with some content, it will render just fine. At this stage you can start building your website there!

Everything you just did needs to be done only once, except for typing vagrant up to start the server. Don’t worry if creating a Homestead instance isn’t in your blood yet, because for now you just need to know how to use it.

Any time you stop your server using vagrant halt or switch off your computer, you’ll need to use the vagrant up command to start the server. There are a few things you’ll want/need to do, so let’s look at some of the day-to-day tasks.

For some more advanced configurations you’ll need to SSH into the virtual machine. You can do this by navigating to the Homestead directory in your terminal and typing vagrant ssh. This will bring you into the machine and you can set things up here if needed.

You can connect to databases using the homestead username and secret password. If you’re in the terminal you can use the mysql -u homestead -p command and supply your password to get command-line access.

If you use an application like Sequel Pro, you should use 127.0.0.1 as the host, your username and password, and 33060 as the port.

## Installing Laravel

You should now be able to type laravel in the command line to access a bunch of great options for working with Laravel. If it doesn’t seem to work, you’ll need to place the ~/.composer/vendor/bin directory in your path. To do that, you’ll need to open your ~/.bashrs or ~/.bash_profile file—which one depends on your setup. Once in there, add the following line to the file:

To see if it worked, type source ~/.bashrc, or close and reopen the terminal window and try typing laravel again. If you’re a Windows user you’ll need to follow the instructions here.

Remember the store folder we set up that holds the code for our upcoming store? I went back, deleted that folder and used the terminal to navigate to the parent folder ~/websites/Homestead/Code. While there I typed laravel new store and just like that, a Laravel project was set up for me. Visiting http://store.local I now see this:

## The Next Steps

In the next articles about Laravel, I’ll show you how to get started building something as a beginner. Laravel is based strongly around object-oriented PHP, so I recommend you take a look at the excellent OOP For Beginners article by Jason Lengstorf. I’ll explain as much as I can, but if you familiarize yourself with the concepts in that article first, everything will go more smoothly.