View on GitHub

Shed

simple local PHP development

Quick Start

  1. You need Docker and Composer installed.
  2. composer global require shedhost/shed
  3. shed config sites $HOME/Sites
  4. shed up -d

Introduction

Shed provides a platform for simple, local, PHP development, in the same kind of way MAMP, Laravel Valet, or Homestead does.

It's designed to provide a set-it-and-forget-it platform for local, PHP development.

Setup

To run Shed, you only need to be able to run Docker and Composer. Shed is not tested on Windows yet, but Shed plans to support Windows, Linux, and OS X.

Default Enviroment

There's only one setting that must be set:

shed config home $HOME/Sites

This specifies which folder shed should look in for your projects or sites.

By default, Shed assumes that within each project folder, there will be a public/ subfolder that Shed should use as a the document root. If you'd rather default to something other than public, you can change it:

shed config docroot html

Lastly, if you don't want to run Shed on port 80, you can change that too:

shed config port 8000

Usage

Start Shed by running shed up or shed up -d. Once it's running, you can access your projects based on their folder names. For example, To access Projects/example.com, I would go to

That's it. If you don't want to use shed.host, you can use any of the following:

Shed assumes that the document root for all your projects is <projectfolder>/public. If you use docroot/ instead, you can try creating a symlink like this:

$ ln -s public docroot

How this works

*.shed.host is setup using wildcard DNS to point to 127.0.0.1 - one of the IPs designed to always point to your own local system (localhost.) This eliminates any need to etc your /etc/hosts file.

Within Shed's apache container, it uses mod_vhost_alias to map these subdomains back to separate virtualhosts. This means that there's no new apache configuration required.

Special Subdomains

There are two groups of special domains:

  1. shed.host and www.shed.host get you to Shed's website.
  2. my.shed.host and shed.shed.host get you to Shed's local, internal site. This is where you can find Adminer and Webgrind.

Adminer

Adminer is a lightweight webapp for managing databases, including both MySQL and PostgreSQL. The latest release of Adminer is included in Shed.

You can login by going to http://my.shed.host/ and clicking the relevant link, or:

XDebug and Webgrind

XDebug and Webgrind are setup within Shed as well. You can trigger XDebug profiling by adding ?XDEBUG_PROFILE=1 to the end of a URL.

You can view That profile with Webgrind by going to