Web

Cómo cargar un proyecto de laravel a una instancia AWS Elastic Beanstalk

deploy-your-laravel-to-aws

Muchas veces deseas poder tener tu proyecto en un servidor y asi poderlo mostrar cuando sea necesario ya sea por tema laboral o simplemente por darte a conocer, así que hoy les quiero enseñar a  cómo desplegar nuestro proyecto de laravel en un servidor de AWS. Para nuestro ejemplo vamos a crear nuestro proyecto en laravel y usaremos la versión 6.2 ejecutando el siguiente comando:

composer create-project --prefer-dist laravel/laravel blog "6.*"

A continuación vamos a crear nuestros archivos que se encargaran de ejecutar las migraciones y de correr los seeders de nuestra aplicación:

En el root de nuestra aplicación procedemos a crear una carpeta con el nombre .ebextensions después crearemos dos archivos en la nueva carpeta que se llamarán 01-app.config y 02-settings.config.

Nota: la numeración que se antepone al nombre de los archivos es muy importante ya que por medio de esta se ejecutarán en orden los comandos que tenga cada archivo.

Para este punto deberíamos llevar algo como esto:

Dentro de nuestro archivo 01-app.config vamos a agregar los siguientes comandos:

container_commands:
    00composer_clear:
        command: "php artisan config:clear"
    01generate_tables:
        command: "php artisan migrate --force"
    02generate_data:
        command: "php artisan db:seed --force"

Estos comando se ejecutará cuando se esté realizando la subida de nuestro proyecto a la instancia de Elastic Beanstalk.

Nota: No necesita ejecutar el comando de composer install antes de realizar el montaje, ya que Elastic Beanstalk instala automáticamente las dependencias del composer.

Luego en nuestro archivo 02-settings.config agregamos el siguiente código que es un bash script que establece los permisos sobre la carpeta del storage.

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_make_storage_writable.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      chmod -R 777 /var/app/current/storage

Ahora lo que debemos hacer es seleccionar todos los archivos de nuestro proyecto y realizar un comprimido, el cual vamos a cargar a nuestra instancia.

Nota: Es posible que si estás usando un equipo MAC puedes tener problemas por unos archivos ocultos que te genera el MAC para esto ejecutamos el siguiente comando en la ubicación de nuestro comprimido zip -d filename.zip __MACOSX/\* 

Pasos para configurar la instancia Elastic Beanstalk y la base de datos en AWS

A continuación voy a mostrarles como crear y configurar su instancia de Elastic Beanstalk junto con la base de datos con unos sencillos pasos:

  1. Una vez ya ingresado a la consola de AWS nos dirigimos  a la parte de servicios y buscamos la opción de Elastic Beanstalk
  1. Hacemos click en el botón Create a new environment
  1. Seleccionamos nuestro tipo de ambiente, en este caso usaremos Web server environment
  1. Le asignamos el nombre de nuestra aplicación
  1. Seleccionamos el lenguaje y versión 
  1. Seleccionamos sample application
  1. Esperamos unos minutos a que se configure todo nuestro entorno hasta que nos salga estado OK
  1. Luego nos dirigimos a crear nuestra base de datos en el menú Configuration opción Database
  1. Seleccionamos el motor de nuestra base de datos, version, almacenamiento, etc … y le damos click al botón apply
  1. Una vez hecho eso debemos ver más información sobre nuestra base de datos, nos dirigimos al enlace que aparece “Endpoint” para poder obtener el nombre de nuestra base de datos 
  1. Seleccionamos nuestra base de datos “podemos saberlo por qué su identificador inicia con los mismos caracteres que en link del endpoint”
  1. A continuación vamos a la pestaña de configuration y ahí podremos obtener nuestro DBname que es el nombre de la base de datos
  1. Volvemos a la configuración principal e ingresamos a la opción de Software, para poder configurar nuestras variables de entorno y que nuestra instancia apunte a nuestra carpeta pública del proyecto
  1. Configuramos nuestro Document root apuntando a nuestra carpeta /public
  1. En la misma vista nos desplazamos hacia abajo para poder configurar nuestras variables de entorno (API_KEY, DB_HOST, DB_NAME …) y hacemos click en el botón apply
  1. Esperamos unos minutos hasta que salga todo OK y nos disponemos a subir nuestro proyecto ya comprimido, seleccionamos Upload and deploy
  1. Seleccionamos nuestro comprimido del proyecto y le damos click al botón deploy
  1. Una vez aparezca todo Ok le damos click al enlace de nuestra aplicación
  1. Por último nos debe aparecer nuestro proyecto funcionando correctamente 

Espero este post les haya servido, si tienen alguna pregunta o sugerencia por favor comenten y estaré respondiendo lo antes posible. A continuación les dejaré un enlace del tutorial en youtube y a un repositorio en github para que puedan aclarar sus dudas

Write A Comment

eight − three =