Introducing Scotch Box – A Vagrant LAMP Stack That Just Works

Nicholas Cerminara
👁️ 106,888 views
💬 comments

Just a dead-simple local LAMP stack for developers.

Scotch Box is a preconfigured Vagrant Box with a full array of LAMP Stack features to get you up and running with Vagrant in no time.

A lot of PHP websites and applications don't require much server configuration or overhead at first. This box should have all your needs for doing basic development so you don't have to worry about configuring Vagrant and you can simply focus on your code.

No provisioning tools or setup is really even required with Scotch Box. Since everything is packaged into the box, running "vagrant" is super fast, you'll never have to worry about your environment breaking with updates, and you won't need Internet to code.

Table of Contents

    nice-shot

    What and why?

    Vagrant is an extremely powerful tool. With Chef or Puppet and Vagrant, you can configure any type of server environment you can think of. The possibilities are endless (especially with Docker in the picture now, too). Speaking candidly though, most the development I do doesn't really stray from a default LAMP stack, and when I have to configure a server, I really am always just setting up a boring typical LAMP stack anyways. All I really want is PHP 5.4+ and a bunch of modules with zero hassle or overhead.

    I used to use this seriously awesome Vagrant LAMP Stack that I even wrote about here. The problem with this is it broke a lot. It broke when Vagrant updated, it broke when Chef updated, and it broke when Berkshelf updated. On top of that, I always had problems getting it working on Windows. There are just too many points of failures for what it's purpose was for me - simply just developing locally.

    So that's why I decided to build a Vagrant LAMP Box. The box is prepackaged and requires provisioning and no configuration. You simply boot it up and it just works. It's not for every project, but it sure will help you get straight to it with a lot of them.

    scotch-box-ssh

    Features

    Useful Stuff
    PHP 5.5
    No Internet connection required
    PHP errors turned on
    Laravel and WordPress ready (and others)
    Operating System agnostic
    Goodbye XAMPP / WAMP
    New Vagrant version? Update worry free. ScotchBox is very reliable with a lesser chance of breaking with various updates
    Bootstrap and jQuery are saved in the server's home folder in case you don't have Internet (usually plains, trains or cars)
    Chef and Puppet ready in case you want to add extra features on Vagrant Up
    Super easy database access and control
    MIT License
    Server Stuff
    Apache
    Vim
    MySQL
    PHP 5.5
    Git
    Screen
    Composer
    cURL
    GD and Imagick
    Mcrypt
    Memcache and Memcached
    Server Stuff
    NPM
    Grunt
    Bower
    Yeoman
    Gulp

    Get Started

    Getting started with Scotch Box is a breeze. We'll cover everything, but chances are you've probably already done some of these things.

    Download and Install Vagrant

    Just click here and follow their steps.


    Download and Install VirtualBox

    Follow this link and install Virtual Box


    Clone the Scotch Box GitHub Repository

    From the command line, you'll want to do this inside the folder where you want your project to be on your computer.

    git clone https://github.com/scotch-io/scotch-box.git my-project
    

    Run Vagrant Up

    Start the box! If this is your first time, the box will need to download. After that, everything should be ultra-fast to start.

    vagrant up
    

    Access Your Project

    Success! You can now access your project by visiting http://192.168.33.10/. There's a nice little landing page to let you know it's working too.

    Basic Vagrant Commands

    This is how you can control your server from the command line.

     // Pause your server
    vagrant suspend
    
    // Start or resume your server
    vagrant up
    
    // Delete your server
    vagrant destroy
    
    // SSH into your server
    vagrant ssh

    Database Access

    From your application

    These are the settings that work when connecting with PHP. You could technically create as many databases as you want.

    $connection = mysqli_connect('localhost', 'root', 'root', 'scotchbox');
    Key Value
    Database Name scotchbox
    Database User root
    Database Password root
    Database Host localhost

    From a Desktop Client

    You'll need to download either Sequel Pro or Navicat or some other desktop database client. Switching to one of these from phpMyAdmin will be a life changing experience so just do it already. After this, create a "new connection" and select SSH Forwarding and enter these parameters:

    Key Value
    Database Name (leave blank)
    Database User root
    Database Password root
    Database Host localhost
    SSH Host 192.168.33.10
    SSH User vagrant
    SSH Password vagrant

    Updating the Box

    Although not necessary, if you want to check for updates, just type:

    vagrant box outdated

    It will tell you if you are running the latest version or not of the box. If it says you aren't, simply run:

    vagrant box updated

    Follow us on GitHub and Twitter for the latest updates to Scotch Box.

    Setting a Hostname

    If you're like me, you prefer to develop at a domain name versus an IP address. If you want to get rid of the some-what ugly IP address, just add a record like the following example to your laptop's host file.

    192.168.33.10 whatever-i-want.local

    Or if you want "www" to work as well, do:

    192.168.33.10 whatever-i-want.local www.whatever-i-want.local

    Technically you could also a Vagrant Plugin like Vagrant Hostmanager to automatically update your host file when you run Vagrant Up. However, the purpose of Scotch Box is to have as little dependencies as possible so that it's always working when you run "vagrant up".

    The MIT License (MIT)

    Copyright (c) 2014-2015 Nicholas Cerminara, scotch.io, LLC

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.