This is a page for taking notes for current workflow process. Intended for further processing and organization.

Laravel 5

  • Tested on Ubuntu 14.04.2 LTS, Apache/2.4.9, PHP 5.5.15RC1, Laravel (5.0; installer version 1.2.0) / medium / less than 10 minutes

Installation

Prerequisite environment setup

Make sure you have PHP 5.4 or greater version installed. On a Debian-derived distribution such as Ubuntu, it's as simple as # apt-get install php5.

Other basic requirements are mcrypt, mbstring. OpenSSL support is built-in on this version[1]. I also install JSON, xdebug, sqlite, readline, mysql, memcached, intl, and curl.

mhan@brahms:~/testing $ sudo apt-get install php5-mcrypt php5-json php5-xdebug php5-sqlite php5-readline php5-mysql php5-memcached php5-intl php5-curl

mbstring is a part of libapache2-mod-php5 package[2].

mhan@brahms:~/testing $ sudo apt-get install libapache2-mod-php5

Files and applications

Download Laravel installer using Composer.

$ composer global require "laravel/installer=~1.1"
Changed current directory to /home/mhan/.composer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing symfony/process (v2.6.4)
    Down    Downloading: 100%

  - Installing symfony/console (v2.6.4)
    Down    Downloading: 100%

  - Installing guzzlehttp/streams (2.1.0)
    Down    Downloading: 100%

  - Installing guzzlehttp/guzzle (4.2.3)
    Down    Downloading: 100%

  - Installing laravel/installer (v1.2.0)
    Down    Downloading: 100%

symfony/console suggests installing symfony/event-dispatcher ()
symfony/console suggests installing psr/log (For using the console logger)
Writing lock file
Generating autoload files

Instead of adding ~/.composer/vendor/bin to the PATH environment variable, I simply made a symbolic link to it in ~/bin/ folder.

$ ln -s ~/.composer/vendor/bin/laravel ~/bin/laravel

Create a new Laravel application.

mhan@brahms:~/testing $ laravel new sanban
Crafting application...
Generating optimized class loader
Compiling common classes
Compiling views
Application key [CJwBsllwDbWLlxy7zH7zRATmSu2laUyA] set successfully.

Then I enable access to this new application via web. This is an apache config.

<VirtualHost *:80>
        ServerAdmin admin@hostname.com
        ServerName sanban.hostname.com
        ServerSignature Off
        DocumentRoot /srv/www/sanban.hostname.com/public

        <Directory /srv/www/sanban.hostname.com/public>
                Options -Indexes +FollowSymLinks -MultiViews
                AllowOverride All
                Require all granted
        </Directory>
</VirtualHost>

Make sure to restart the httpd (i.e. $ service apache2 restart on Ubuntu).

Post-installation updates

Update app.url, app.timezone[3].

<?php
// config/app.php
..
'url' => 'http://hostname.com',
..
'timezone' => 'America/Denver',
..

I also like to add a link to artisan PHP executable into my ~/bin folder.

mhan@brahms:~/sanban $ chmod u+x artisan.sanban && ln -s /srv/www/sanban/artisan ~/bin/artisan.sanban

I add the application short name as an extension to artisan because I have multiple instances of Laravel applications and create links to corresponding artisan executables.

Configuration

Name the application

I'm naming the application sanban.

mhan@brahms:~/sanban $ artisan.sanban app:name Sanban

References

  1. Stack Exchange. Program documentation. Stack Exchange. N.p., n.d. Web. 26 Feb. 2015. <http://askubuntu.com/questions/323005/php-openssl-extension-has-a-package>.
  2. Stack Exchange. Program documentation. Stack Exchange. N.p., n.d. Web. 26 Feb. 2015. <http://askubuntu.com/questions/491629/how-to-install-php-mbstring-extension-in-ubuntu>.
  3. 26 Feb 2015. <http://php.net/manual/en/timezones.php>.