Hace poco me he iniciado en este framework de desarrollo web basado en PHP. Se llama Laravel y actualmente va por la versión 4.1.18. En este primer artículo voy a explicar cómo instalarlo en Debian 7 Wheezy, aunque debe funcionar igualmente en cualquier versión de Linux. Como requisito hay que tener instalado PHP versión 5.3.7 o superior y la librería MCrypt de PHP.
En primer lugar necesitamos descargarnos composer. Como en mi sistema no tengo instalado curl pero sí tengo php, voy a usar este último para descargar composer, y posteriormente lo moveré al directorio /usr/local/bin para ejecutarlo de forma más fácil.
root@wheezy:/var/www# php -r «readfile(‘https://getcomposer.org/installer'
);» | php
#!/usr/bin/env php
All settings correct for using Composer
Downloading…
Composer successfully installed to: /var/www/composer.phar
Use it: php composer.phar
root@wheezy:/var/www# mv composer.phar /usr/local/bin/composer
Si os fijáis he usado el usuario root, así que que tened en cuenta el uso de sudo si no sois root, y el archivo descargado se llama composer.phar y lo he renombrado a composer.
Una vez descargado y movido a /usr/local/bin lo ejecutamos para comprobar que funciona:
root@wheezy:/var/www# composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 7343198817f365b1676ced0f353808f0e408ff9a 2014-02-07 09:59:35
Usage:
[options] command [arguments]
Options:
–help -h Display this help message.
–quiet -q Do not output any message.
–verbose -v|vv|vvv Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
–version -V Display this application version.
–ansi Force ANSI output.
–no-ansi Disable ANSI output.
–no-interaction -n Do not ask any interactive question.
–profile Display timing and memory usage information
–working-dir -d If specified, use the given directory as working directory.
Available commands:
about Short information about Composer
archive Create an archive of this composer package
config Set config options
create-project Create new project from a package into given directory.
depends Shows which packages depend on the given package
diagnose Diagnoses the system to identify common errors.
dump-autoload Dumps the autoloader
dumpautoload Dumps the autoloader
global Allows running commands in the global composer dir ($COMPOSER_HOME).
help Displays help for a command
init Creates a basic composer.json file in current directory.
install Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json.
licenses Show information about licenses of dependencies
list Lists commands
require Adds required packages to your composer.json and installs them
run-script Run the scripts defined in composer.json.
search Search for packages
self-update Updates composer.phar to the latest version.
selfupdate Updates composer.phar to the latest version.
show Show information about packages
status Show a list of locally modified packages
update Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file.
validate Validates a composer.json
Parece que sí y la versión descargada es:
Composer version 7343198817f365b1676ced0f353808f0e408ff9a 2014-02-07 09:59:35
El siguiente paso será descargar e instalar laravel. Yo voy a crearme un nuevo proyecto que voy a llamar nagvel, así que en el directorio /var/www ejecuto el siguiente comando:
root@wheezy:/var/www# composer create-project –prefer-dist laravel/laravel nagvel
Si queréis que vuestro proyecto tenga otro nombre, sólo tenéis que cambiar «nagvel» en el comando anterior.
Empezará a descargarse (tarda un poco) y descargará también todas las dependencias que tenga:
root@wheezy:/var/www# composer create-project –prefer-dist laravel/laravel nagvel
Installing laravel/laravel (v4.1.18)
– Installing laravel/laravel (v4.1.18)
Downloading: 100%
Created project in nagvel
Loading composer repositories with package information
Installing dependencies (including require-dev)
– Installing symfony/translation (v2.4.1)
Downloading: 100%
– Installing psr/log (1.0.0)
Downloading: 100%
– Installing symfony/routing (v2.4.1)
Downloading: 100%
– Installing symfony/process (v2.4.1)
Downloading: 100%
– Installing symfony/finder (v2.4.1)
Downloading: 100%
– Installing symfony/console (v2.4.1)
Downloading: 100%
– Installing symfony/filesystem (v2.4.1)
Downloading: 100%
– Installing symfony/debug (v2.4.1)
Downloading: 100%
– Installing symfony/http-foundation (v2.4.1)
Downloading: 100%
– Installing symfony/event-dispatcher (v2.4.1)
Downloading: 100%
– Installing symfony/http-kernel (v2.4.1)
Downloading: 100%
– Installing symfony/dom-crawler (v2.4.1)
Downloading: 100%
– Installing symfony/css-selector (v2.4.1)
Downloading: 100%
– Installing symfony/browser-kit (v2.4.1)
Downloading: 100%
– Installing swiftmailer/swiftmailer (v5.0.3)
Downloading: 100%
– Installing stack/builder (v1.0.1)
Downloading: 100%
– Installing predis/predis (v0.8.5)
Downloading: 100%
– Installing phpseclib/phpseclib (0.3.5)
Downloading: 100%
– Installing patchwork/utf8 (v1.1.18)
Downloading: 100%
– Installing nesbot/carbon (1.8.0)
Downloading: 100%
– Installing monolog/monolog (1.7.0)
Downloading: 100%
– Installing nikic/php-parser (v0.9.4)
Downloading: 100%
– Installing jeremeamia/superclosure (1.0.1)
Downloading: 100%
– Installing filp/whoops (1.0.10)
Downloading: 100%
– Installing ircmaxell/password-compat (1.0.3)
Downloading: 100%
– Installing d11wtq/boris (v1.0.8)
Downloading: 100%
– Installing classpreloader/classpreloader (1.0.1)
Downloading: 100%
– Installing laravel/framework (v4.1.21)
Downloading: 100%
symfony/translation suggests installing symfony/config ()
symfony/translation suggests installing symfony/yaml ()
symfony/routing suggests installing symfony/config (For using the all-in-one router or any loader)
symfony/routing suggests installing symfony/yaml (For using the YAML loader)
symfony/routing suggests installing symfony/expression-language (For using expression matching)
symfony/routing suggests installing doctrine/annotations (For using the annotation loader)
symfony/event-dispatcher suggests installing symfony/dependency-injection ()
symfony/http-kernel suggests installing symfony/class-loader ()
symfony/http-kernel suggests installing symfony/config ()
symfony/http-kernel suggests installing symfony/dependency-injection ()
predis/predis suggests installing ext-phpiredis (Allows faster serialization and deserialization of the Redis protocol)
predis/predis suggests installing ext-curl (Allows access to Webdis when paired with phpiredis)
phpseclib/phpseclib suggests installing ext-gmp (Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.)
phpseclib/phpseclib suggests installing pear-pear/PHP_Compat (Install PHP_Compat to get phpseclib working on PHP >= 4.3.3.)
patchwork/utf8 suggests installing ext-intl (Use Intl for best performance)
monolog/monolog suggests installing mlehner/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing raven/raven (Allow sending log messages to a Sentry server)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
d11wtq/boris suggests installing ext-readline (*)
laravel/framework suggests installing doctrine/dbal (Allow renaming columns and dropping SQLite columns.)
Writing lock file
Generating autoload files
Generating optimized class loader
Application key [USCuULF66wR8NykEDq6EWr7ZbVmAS5YW] set successfully.
Ya con esto tenemos instalado Laravel 4.1.18 en nuestro equipo.
Para probar nuestra web entraremos en http://localhost/nagvel/public/.
Muy probablemente nos mostrará una página en blanco. Esto se debe a que el usuario del servidor web (www-data) no tiene permisos de escritura sobre el directorio /var/www/nagvel/app/storage. Así que cambio el propietario de dicho directorio:
root@wheezy:/var/www# chown -R www-data nagvel/app/storage/
Y ahora sí deberíamos ver la siguiente página de bienvenida:
El siguiente paso es opcional, pero recomendable, ya que lo voy a usar en mis siguientes artículos sobre Laravel. Se trata de instalar Laravel-4-Generators, un paquete de Laravel 4, que proporciona una variedad de generadores para acelerar el proceso de desarrollo de nuestra aplicación. Estos generadores incluyen:
- generate:model
- generate:controller
- generate:seed
- generate:view
- generate:migration
- generate:resource
- generate:scaffold
- generate:form
- generate:test
- generate:pivot