Creating a Laravel Development Environment

Laravel is an open source MVC web development PHP framework, according to Wikipedia it was the most widely used PHP web development framework in 2013 and in 2014 it became the most watched PHP project on GitHub. It has a great community and it is rapidly evolving.

On the Laravel website there is a tutorial on how to setup a development environment using vagrant and virtualbox. Laravel offers a pre-built vagrant box, called Homestead, which has all the necessary tools for developing Laravel applications.

In this article I will explain how to create a development environment for Laravel using XAMPP under Linux Mint.

Install XAMPP

XAMPP is completely free and is available for every platform (Linux, Mac, Windows). XAMPP stands for cross platform(X) Apache, MySQL, PHP and Perl environment. Download the latest package from the XAMPP download page. When downloaded, check if the file has execute permissions:

file permissions

In case the installer does not have execute permission you can assign using:

# using the +x flag to assign the execute permission
chmod +x xampp-linux-x64-5.6.3-0-installer.run

# using octal-mode:
#   7 - user has all the permissions (read, write, execute)
#   5 - group has read and execute permissions
#   5 - others have read and execute permissions
chmod 755 xampp-linux-x64-5.6.3-0-installer.run 

Run the installation of XAMPP with the: sudo ./xampp-linux-x64-5.6.3-0-installer.run - command, this will open a graphical installer. The installation is straightforward and it will install everything under /opt/lampp/ directory. Once the installation is finished, you can start the graphical configuration manager for XAMPP. You can do this by navigating to /opt/lampp/ and starting the sudo manager-linux-x64.run command. The following window will open up:

              xammp gui manager

On the second tab, you can stop/start/restart the services and update the configurations of the applications (Apache, MySQL).

             Manage servers window

For example I use the 8989 port for Apache, so I need to update the Port on the configuration window, then hit OK and restart the Apache Web Server. Keep in mind the selected port has to be free and should not be used by other applications.

               Configure Apache server

If everything went well, the XAMPP webpage should appear when navigating to http://machine_name:8989/xampp (in my case that is http://earth:8989/xampp

XAMPP default webpage

Installing Laravel

Laravel uses Composer and php5-cli to generate the default project setup. Composer is dependency manager for PHP, while php5-cli are command line tools for PHP 5.

# install composer to the current directory
curl -sS https://getcomposer.org/installer | php

# installing php5-cli using apt
apt-get install php5-cli

Creating a default Laravel project

When everything is installed, navigate to /opt/lampp/htdocs (this is the directory which Apache uses to display the webpages).

# creating the sample_laravel_app using composer
# into the /opt/lampp/htdocs/laravel folder
greg@earth /opt/lampp/htdocs/laravel $ php5 /opt/lampp/composer/composer.phar create-project laravel/laravel sample_laravel_app --prefer-dist

# have to change the ownership and permissions of the folder storage
greg@earth /opt/lampp/htdocs/laravel $ chmod -R 777 sample_laravel_app/app/storage
greg@earth /opt/lampp/htdocs/laravel $ chown -R greg:www-data sample_laravel_app/app/storage

That’s it, a new project with the Laravel framework was created. If you navigate to the correct route and see this in the browser, the project was successfully installed.

Laravel Default Webpage

You are now ready to start the development on the project.

Greg Bogdan
Greg Bogdan Hire Me

Software Engineer, Blogger, Tech Enthusiast

I am a Software Engineer with over 7 years of experience in different domains(ERP, Financial Products and Alerting Systems). My main expertise is .NET, Java, Python and JavaScript. I like technical writing and have good experience in creating tutorials and how to technical articles. I am passionate about technology and I love what I do and I always intend to 100% fulfill the project which I am ...

Hire Me

Next Article

What to Look for in a Web Hosting Provider