Yo el programador

Cómo instalar Laravel en un servidor compartido?

Hola usuarios de yoelprogramador.com, en esta ocación les quiero dejar un tutorial de como podemos instalar Laravel en un servidor compartido. Para este caso se utilizó un hosting de webhostparaguay.com. Pero el proceso de instalación es similar en la mayoria de los proveedores de hosting.

Lo primero que se debe hacer en todos los casos es solicitar el acceso SSH a sus proveedores, para tal caso puede hacerlo utilizando el formulario o email de soporte correspondiente.

Una vez que tengan el acceso al SSH, deberán verificar la versión de PHP instalada en su servidor. Por mas que en algunos servidores la versión instalada es 5.2 o 5.3, la mayoria soporta versiones superiores. Generalemente para estos casos se agrega directivas que activen las versiones mas nuevas del PHP. También para estos casos sera necesario que acudan al soporte de su proveedor de hosting.

A seguir se muestra en 7 pasos como instalar Laravel en su servidor compartido. En los pasos tambien se explica como activar la version mas nueva de php, como le habia explicado más arriba.

 

En este articulo se muestra como instalar Laravel en un hosting compartido. Le indicamos los procedimientos paso a paso para una mejor comprensión.

Paso 1: para instalar laravel en un servidor compartido

Solicitar el acceso SSH(JailShel) para su cuenta. Esto se hace con su proveedor de hosring

Paso 2: para instalar laravel en un servidor compartido

Ya con el acceso SSH liberado e conectado(*), vamos a verificar la versión default del PHP en el servidor. Esto lo haremos de la siguiente forma. *Puede usar el putty para acceder via ssh desde Windows.

[user@sudominio.com [~/www]# php -v
PHP 5.6.14 (cli) (built: Dec  5 2015 12:18:14) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v5.0.12, Copyright (c) 2002-2015, by ionCube Ltd.
with Zend Guard Loader v3.3, Copyright (c) 1998-2014, by Zend Technologies[

 

Paso 3 para instalar laravel en servidor compartido

Si la versón del PHP es 5.4 o menor. Usted debe realizar el procedimiento siguiente, de lo contrario puede saltar al paso ‘4 -‘.

Edite el archivo .bashrc que se encuentra en el directorio /home/su-usuario-cpanel/.bashrc y agregue las siguientes lineas.

alias php='/opt/php55/bin/php'
export PATH="/opt/php55/bin:$PATH"

En caso de que el archivo .bashrc no exista puede crearlo y agregar las directrises si la version del php es <=5.4

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions

Carge la nueva configuración realizada, utilizando el comando source:

user@sudominio.com [~]# source /home/su-usuario/.bashrc

Verfique se el alias fué cargado correctamente, para eso utilice el siguiente comando

user@sudominio.com [~]# alias | egrep 'php'
alias php='/opt/php55/bin/php'

Verfique si el camino ‘/opt/php55/bin’ esta siendo mostrada en la varibale PATH como se muestra a seguir.

user@sudominio.com [~]# echo $PATH | egrep '/opt/php55/bin'
/opt/php55/bin:/home/sudominio/perl5/bin:/usr/local/jdk/bin:/opt/php55/bin:/home/sudominio/perl5/bin:/usr/local/jdk/bin:/home/sudominio/perl5/bin:/usr/local/jdk/bin:/home/sudominio/perl5/bin:/usr/local/jdk/bin:/home/sudominio/perl5/bin:/usr/local/jdk/bin:/usr/local/jdk/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/opt/python27/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin:/usr/local/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin

Si tanto el alias y la ruta del PHP en la variable PATH fueron mostrados correctamente, ya puede seguir al paso ‘4 -‘.

Paso 4: para instalar laravel en un servidor compartido

Ahora vamos a instalar el composer en el directorio, eso lo haremos de la siguiente forma.

user@sudominio.com [~/public_html]# pwd
/home/sudominio/public_html
user@sudominio.com [~/public_html]# curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /home/sudominio/public_html/composer.phar
Use it: php composer.phar
user@sudominio.com [~/public_html]#

En caso de que quieras especificar un directorio para de instalacón, puede utilizar el siguiente comando (es necesario que el directorio exista).

user@sudominio.com [~]# curl -sS https://getcomposer.org/installer | php -- --install-dir=/home/sudominio/php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /home/sudominio/php/composer.phar
Use it: php /home/sudominio/php/composer.phar

Ya con el composer instalado, vamos executarlo para confirmar si esta funcionando correctamente. Para ejecutar el composer utilizaremos el comando php composer.phar.

   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.2.4 2016-12-06 22:00:51

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display this help message
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi                     Force ANSI output
      --no-ansi                  Disable ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
      --no-plugins               Whether to disable plugins.
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  about           Short information about Composer
  archive         Create an archive of this composer package
  browse          Opens the package's repository URL or homepage in your browser.
  clear-cache     Clears composer's internal package cache.
  clearcache      Clears composer's internal package cache.
  config          Set config options
  create-project  Create new project from a package into given directory.
  depends         Shows which packages cause the given package to be installed
  diagnose        Diagnoses the system to identify common errors.
  dump-autoload   Dumps the autoloader
  dumpautoload    Dumps the autoloader
  exec            Execute a vendored binary/script
  global          Allows running commands in the global composer dir ($COMPOSER_HOME).
  help            Displays help for a command
  home            Opens the package's repository URL or homepage in your browser.
  info            Show information about packages
  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
  outdated        Shows a list of installed packages that have updates available, including their latest version.
  prohibits       Shows which packages prevent the given package from being installed
  remove          Removes a package from the require or require-dev
  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
  suggests        Show package suggestions
  update          Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file.
  validate        Validates a composer.json and composer.lock
  why             Shows which packages cause the given package to be installed
  why-not         Shows which packages prevent the given package from being installed

Tips! Vamos facilitar el proceso de execucion del composer creando un alias para el, editar el archivo .bashrc y agregamos la siguiente línea.

alias composer='/home/sudominio/public_html/composer.phar'

Ahora vamos cargar las nuevas configuraciones utilizando nuevamente el comando source.

user@sudominio.com.b [~/public_html]# source /home/sudominio/.bashrc

Confirmamos si el alias fue cargado correctamente, para eso utilizamos el comando

user@sudominio.com [~/public_html]# alias | egrep composer
alias composer='/home/sudominio/public_html/composer.phar'

Listo, ahora podemos ejecutar el comando composer

  ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.2.4 2016-12-06 22:00:51

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display this help message
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi                     Force ANSI output
      --no-ansi                  Disable ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
      --no-plugins               Whether to disable plugins.
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  about           Short information about Composer
  archive         Create an archive of this composer package
  browse          Opens the package's repository URL or homepage in your browser.
  clear-cache     Clears composer's internal package cache.
  clearcache      Clears composer's internal package cache.
  config          Set config options
  create-project  Create new project from a package into given directory.
  depends         Shows which packages cause the given package to be installed
  diagnose        Diagnoses the system to identify common errors.
  dump-autoload   Dumps the autoloader
  dumpautoload    Dumps the autoloader
  exec            Execute a vendored binary/script
  global          Allows running commands in the global composer dir ($COMPOSER_HOME).
  help            Displays help for a command
  home            Opens the package's repository URL or homepage in your browser.
  info            Show information about packages
  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
  outdated        Shows a list of installed packages that have updates available, including their latest version.
  prohibits       Shows which packages prevent the given package from being installed
  remove          Removes a package from the require or require-dev
  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
  suggests        Show package suggestions
  update          Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file.
  validate        Validates a composer.json and composer.lock
  why             Shows which packages cause the given package to be installed
  why-not         Shows which packages prevent the given package from being installed

Paso 5: para instalar laravel en un servidor compartido

Una vez que tengamos instalado el composer y creado el alias para el mismo(la creacion del alias es opcional), ya podemos proceder a instalar la última versión del laravel en nuestro hosting compartido. Para eso utlizaremos el siguiente comando. El directorio de instalación sera la carpeta public_html

composer create-project laravel/laravel --prefer-dist [nombre-del-proyecto]

En el caso de que no hayas creado el alias, deberás usar el siguiente comando.

php omposer.phar create-project laravel/laravel --prefer-dist [nombre-del-proyecto]

Al finalizar la instalación sera mostrado lo siguiente.

Installing laravel/laravel (v5.2.31)
  - Installing laravel/laravel (v5.2.31)
    Downloading: 100%

Created project in project-name
> php -r "copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing vlucas/phpdotenv (v2.4.0)
    Downloading: 100%

  - Installing symfony/polyfill-mbstring (v1.3.0)
    Downloading: 100%

  - Installing symfony/var-dumper (v3.0.9)
    Downloading: 100%

  - Installing symfony/translation (v3.0.9)
    Downloading: 100%

  - Installing symfony/routing (v3.0.9)
    Downloading: 100%

  - Installing symfony/process (v3.0.9)
    Downloading: 100%

  - Installing symfony/polyfill-util (v1.3.0)
    Downloading: 100%

  - Installing symfony/polyfill-php56 (v1.3.0)
    Downloading: 100%

  - Installing psr/log (1.0.2)
    Downloading: 100%

  - Installing symfony/debug (v3.0.9)
    Downloading: 100%

  - Installing symfony/http-foundation (v3.0.9)
    Downloading: 100%

  - Installing symfony/event-dispatcher (v3.2.0)
    Downloading: 100%

  - Installing symfony/http-kernel (v3.0.9)
    Downloading: 100%

  - Installing symfony/finder (v3.0.9)
    Downloading: 100%

  - Installing symfony/console (v3.0.9)
    Downloading: 100%

  - Installing swiftmailer/swiftmailer (v5.4.4)
    Downloading: 100%

  - Installing jakub-onderka/php-console-color (0.1)
    Downloading: 100%

  - Installing jakub-onderka/php-console-highlighter (v0.3.2)
    Downloading: 100%

  - Installing dnoegel/php-xdg-base-dir (0.1)
    Downloading: 100%

  - Installing nikic/php-parser (v2.1.1)
    Downloading: 100%

  - Installing psy/psysh (v0.7.2)
    Downloading: 100%

  - Installing paragonie/random_compat (v1.4.1)
    Downloading: 100%

  - Installing nesbot/carbon (1.21.0)
    Downloading: 100%

  - Installing mtdowling/cron-expression (v1.1.0)
    Downloading: 100%

  - Installing monolog/monolog (1.22.0)
    Downloading: 100%

  - Installing league/flysystem (1.0.32)
    Downloading: 100%

  - Installing jeremeamia/superclosure (2.3.0)
    Downloading: 100%

  - Installing doctrine/inflector (v1.1.0)
    Downloading: 100%

  - Installing classpreloader/classpreloader (3.1.0)
    Downloading: 100%

  - Installing laravel/framework (v5.2.45)
    Downloading: 100%

  - Installing fzaninotto/faker (v1.6.0)
    Downloading: 100%

  - Installing hamcrest/hamcrest-php (v1.2.2)
    Downloading: 100%

  - Installing mockery/mockery (0.9.6)
    Downloading: 100%

  - Installing symfony/yaml (v3.2.0)
    Downloading: 100%

  - Installing sebastian/version (1.0.6)
    Downloading: 100%

  - Installing sebastian/global-state (1.1.1)
    Downloading: 100%

  - Installing sebastian/recursion-context (1.0.2)
    Downloading: 100%

  - Installing sebastian/exporter (1.2.2)
    Downloading: 100%

  - Installing sebastian/environment (1.3.8)
    Downloading: 100%

  - Installing sebastian/diff (1.4.1)
    Downloading: 100%

  - Installing sebastian/comparator (1.2.2)
    Downloading: 100%

  - Installing doctrine/instantiator (1.0.5)
    Downloading: 100%

  - Installing phpunit/php-text-template (1.2.1)
    Downloading: 100%

  - Installing phpunit/phpunit-mock-objects (2.3.8)
    Downloading: 100%

  - Installing phpunit/php-timer (1.0.8)
    Downloading: 100%

  - Installing phpunit/php-file-iterator (1.4.2)
    Downloading: 100%

  - Installing phpunit/php-token-stream (1.4.9)
    Downloading: 100%

  - Installing phpunit/php-code-coverage (2.2.4)
    Downloading: 100%

  - Installing webmozart/assert (1.2.0)
    Downloading: 100%

  - Installing phpdocumentor/reflection-common (1.0)
    Downloading: 100%

  - Installing phpdocumentor/type-resolver (0.2.1)
    Downloading: 100%

  - Installing phpdocumentor/reflection-docblock (3.1.1)
    Downloading: 100%

  - Installing phpspec/prophecy (v1.6.2)
    Downloading: 100%

  - Installing phpunit/phpunit (4.8.30)
    Downloading: 100%

  - Installing symfony/css-selector (v3.0.9)
    Downloading: 100%

  - Installing symfony/dom-crawler (v3.0.9)
    Downloading: 100%

symfony/var-dumper suggests installing ext-symfony_debug ()
symfony/translation suggests installing symfony/config ()
symfony/routing suggests installing doctrine/annotations (For using the annotation loader)
symfony/routing suggests installing symfony/config (For using the all-in-one router or any loader)
symfony/routing suggests installing symfony/dependency-injection (For loading routes from a service)
symfony/routing suggests installing symfony/expression-language (For using expression matching)
symfony/event-dispatcher suggests installing symfony/dependency-injection ()
symfony/http-kernel suggests installing symfony/browser-kit ()
symfony/http-kernel suggests installing symfony/class-loader ()
symfony/http-kernel suggests installing symfony/config ()
symfony/http-kernel suggests installing symfony/dependency-injection ()
psy/psysh suggests installing ext-pcntl (Enabling the PCNTL extension makes PsySH a lot happier :))
psy/psysh suggests installing ext-readline (Enables support for arrow-key history navigation, and showing and manipulating command history.)
psy/psysh suggests installing ext-pdo-sqlite (The doc command requires SQLite to work.)
paragonie/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.)
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB 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 graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing mongodb/mongodb (Allow sending log messages to a MongoDB server via PHP Driver)
monolog/monolog suggests installing php-amqplib/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)
monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing sentry/sentry (Allow sending log messages to a Sentry server)
league/flysystem suggests installing league/flysystem-aws-s3-v2 (Allows you to use S3 storage with AWS SDK v2)
league/flysystem suggests installing league/flysystem-aws-s3-v3 (Allows you to use S3 storage with AWS SDK v3)
league/flysystem suggests installing league/flysystem-azure (Allows you to use Windows Azure Blob storage)
league/flysystem suggests installing league/flysystem-cached-adapter (Flysystem adapter decorator for metadata caching)
league/flysystem suggests installing league/flysystem-copy (Allows you to use Copy.com storage)
league/flysystem suggests installing league/flysystem-dropbox (Allows you to use Dropbox storage)
league/flysystem suggests installing league/flysystem-eventable-filesystem (Allows you to use EventableFilesystem)
league/flysystem suggests installing league/flysystem-rackspace (Allows you to use Rackspace Cloud Files)
league/flysystem suggests installing league/flysystem-sftp (Allows you to use SFTP server storage via phpseclib)
league/flysystem suggests installing league/flysystem-webdav (Allows you to use WebDAV storage)
league/flysystem suggests installing league/flysystem-ziparchive (Allows you to use ZipArchive adapter)
laravel/framework suggests installing aws/aws-sdk-php (Required to use the SQS queue driver and SES mail driver (~3.0).)
laravel/framework suggests installing doctrine/dbal (Required to rename columns and drop SQLite columns (~2.4).)
laravel/framework suggests installing guzzlehttp/guzzle (Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~5.3|~6.0).)
laravel/framework suggests installing league/flysystem-aws-s3-v3 (Required to use the Flysystem S3 driver (~1.0).)
laravel/framework suggests installing league/flysystem-rackspace (Required to use the Flysystem Rackspace driver (~1.0).)
laravel/framework suggests installing pda/pheanstalk (Required to use the beanstalk queue driver (~3.0).)
laravel/framework suggests installing predis/predis (Required to use the redis cache and queue drivers (~1.0).)
laravel/framework suggests installing pusher/pusher-php-server (Required to use the Pusher broadcast driver (~2.0).)
laravel/framework suggests installing symfony/psr-http-message-bridge (Required to use psr7 bridging features (0.2.*).)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/php-code-coverage suggests installing ext-xdebug (>=2.2.1)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
Writing lock file
Generating autoload files
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize
Generating optimized class loader
> php artisan key:generate
Application key [base64:fQEEaWmMH4ibqfOII0ykT+pwy8775Nf321irWoqQPV+WOc=] set successfully.

Paso 6: para instalar laravel en un servidor compartido

Una vez instalado el laravel, antes de probar, vamos a agregar la directiva para la version 5.5 del PHP, esto para los casos de versiones anteriores o igual a 5.4. Para eso agregamos dentro del .htaccess la siguiente línea.

# Activa PHP 5.5 para Laravel
AddHandler application/x-httpd-php55 .php

Paso 7: para instalar laravel en un servidor compartido

Ahora si podemos acceder en nuestro navegador a la dirección de nuestro dominio http://midominio.com/public

 

Actualización:

Una vez instalada Laravel en el servidor compartido, podemos cambiar para que cambie la carpeta raiz public_html para el public del Laravel. Para esto escribiremos el siguiente comando. Con esto creamos un enlace simbólico para la carpeta public

mv ~/public_html ~/laravel 
ln -s ~/laravel/public ~/public_html
Salir de la versión móvil