Installing Laravel as a git submodule
There may be a time when we want to have our Laravel installation separate from the rest of our public files. In this case, installing Laravel as a git submodule would be a solution. This will allow us to update our Laravel files through git without touching our application code.
Getting ready
To get started, we should have our development server running as well as have git installed. In the server's web directory, create a myapp
directory to hold our files. Installation will all be done in the command line.
How to do it...
To complete this recipe, follow these steps:
In your terminal or command line, navigate to the root of
myapp
. The first step is to initialize git and download our project files:$ git init $ git clone git@github.com:laravel/laravel.git
Since all we need is the
public
directory, move to/laravel
and delete everything else:$ cd laravel $ rm –r app bootstrap vendor
Then, move back to the root directory, create a
framework
directory, and add Laravel as a submodule:$ cd .. $ mkdir framework $ cd framework $ git init $ git submodule add https://github.com/laravel/laravel.git
Now we need to run Composer to install the framework:
php composer.phar install
Tip
More information about installing Composer can be found at http://getcomposer.org/doc/00-intro.md. The rest of the book will assume we're using
composer.phar
, but we could also add it globally and simply call it by typingcomposer
.Now, open
/laravel/public/index.php
and find the following lines:require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/start.php';
Change the preceding lines to:
require __DIR__.'/../../framework/laravel/bootstrap/autoload.php'; $app = require_once __DIR__.'/../../framework/laravel/bootstrap/start.php';
How it works...
For many, simply running git clone
would be enough to get their project going. However, since we want to have our framework act as a submodule, we need to separate those files from our project.
First, we download the files from GitHub, and since we don't need any of the framework files, we can delete everything but our public folder. Then, we create our submodule in the framework
directory and download everything there. When that's complete, we run composer install
to get all our vendor packages installed.
To get the framework connected to our application, we modify /laravel/public/index.php
and change the require
paths to our framework directory. That will let our application know exactly where the framework files are located.
There's more...
One alternative solution is to move the public
directory to our server's root. Then, while updating our index.php
file, we'll use __DIR__ . '/../framework/laravel/bootstrap'
to include everything correctly.