domingo, 25 de febrero de 2018

Despliegue de un proyecto de laravel en un servidor Apache y Ubuntu






Hola amigos en esta ocasión regreso con una pequeña guía pero a la vez muy útil. Crearemos un proyecto en laravel y realizaremos su despliegue sobre un sistema operativo ubuntu server , cabe recalcar que esta guia sirve de manera genérica en cualquier distribución linux que tenga como servidor web apache. Comencemos:

1. Creamos un proyecto laravel:

cd /var/www/html
sudo composer create-project laravel/laravel your-project --prefer-dist

2. Configurando Apache:

2.1. Asignano Permisos:
sudo chgrp -R www-data /var/www/html/your-project
sudo chmod -R 775 /var/www/html/your-project/storage

2.2. Creando virtual host
2.2.1 Creando laravel.conf:
cd /etc/apache2/sites-available
sudo nano laravel.conf

2.2.2 Configurando laravel.conf:

<VirtualHost *:80>
    ServerName yourdomain.tld
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/your-project/public
    <Directory /var/www/html/your-project>
        AllowOverride All
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


Donde:

  • En donde yourdomain.tld debe ser reemplazado por tu dominio asignado para tu proyecto.
  • DocumentRoot: La ubicación donde se encuentra tu proyecto.
2.2.3 Activando laravel.conf

sudo a2ensite laravel.conf
sudo a2enmod rewrite
sudo service apache2 restart

3. Configurando proyecto de laravel
Como recomendación personal les sugiero que realicen esta parte cuando su proyecto ya este listo para ir a producción ya que se modificara la estructura interna de este y dejara de funcionar el comando php artisan serve.

3.1. Cambiando la ubicación de los archivos public y configurando el archivo index.php

En este instante procedemos a mover todo el contenido de nuestra carpeta public a la raiz de nuestro proyecto laravel asi mismo procederemos a editar el archivo index.php. Buscaremos las siguientes lineas:




y la modificaremos de tal manera que quede así:



3.2 Configurando AppServiceProvider

Como paso final configuraremos el archivo AppServiceProvider.php que esta ubicado en

/var/www/html/your-project/app/Providers


Básicamente lo que haremos sera agregar lo siguiente a la función regsister:


        $this->app->bind('path.public',function(){
                return base_path().'/';
            }
        );

Con esto obtendremos lo siguiente :



Observación: el comando php artisan serve nos permite crear un servidor interno el cual corre por defecto en el puerto 8000,los pasos realizados anteriormente tienen como objetivo dejar de usar el servidor que artisan nos provee y usemos apache.

Espero les sea de mucha utilidad y conmigo sera hasta la próxima oportunidad.