Tray

From Han Wiki
Revision as of 20:25, 26 February 2015 by Mhan (talk | contribs) (→‎Post-installation updates: add PHPUnit installation note)

Jump to navigation Jump to search

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:/srv/www/sanban $ 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/public

        <Directory /srv/www/sanban/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.

It's also good idea to install PHPUnit, especially if you're interested in taking the TDD approach to development.

mhan@brahms:~/sanban $ sudo apt-get install phpunit

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>.