Cómo instalar Laravel en AWS EC2 de la manera correcta

¿Estás cansado de desarrollar tu aplicación de Laravel en tu servidor local? ¿Quisieras ver tu aplicación en la nube? Esto puede sonar aterrador al principio, pero en este tutorial, cubriremos todas las configuraciones que necesitas para implementar tu aplicación en una instancia de EC2 de Amazon Web Services (AWS).

Aplicaciones de Laravel en la nube

Hoy en día, Laravel es uno de los frameworks PHP más populares en el mundo. Los desarrolladores prefieren usar Laravel en lugar de CodeIgniter, CakePHP o el framework Yii debido a su fácil integración de bases de datos, alta personalización, facilidad de desarrollo y creación de plantillas, bibliotecas y excelente documentación.

Tal vez te interese leer nuestro blog: Laravel 5.6 vs Symfony 4: La mejor batalla de PHP Framework

AWS nos ofrece las mejores soluciones y tecnologías Cloud para implementar aplicaciones en la nube, como RDS (Servicio de Base de Datos Relacional), EC2 (Elastic Compute Cloud), S3 (Simple Storage Service, Cloudfront, AutoScaling, Classic y Application Load Balancers.

Para implementar nuestra aplicación Laravel, debemos tener estos recursos listos para usar:

Una vez que tenemos estos recursos disponibles, podemos proceder a instalar nuestro Laravel Stack en nuestro servidor.

Stack

  • Ubuntu 16.04
  • Nginx 1.14
  • PHP-7.2
  • PHP7.2-FP

Procedimiento para configurar Laravel en AWS

1. Inicia sesión en tu instancia de EC2.
Si no sabes cómo hacerlo, ¡Mira este blog para obtener ayuda!

2. Actualiza tus bibliotecas.
Actualicemos nuestras bibliotecas a los últimos paquetes disponibles.

Advertencia: si tu servidor es nuevo, no habrá ningún problema actualizando las bibliotecas, de lo contrario, asegúrate de no romper nada. Puedes actualizar un paquete que no sea compatible con tu stack actual.

$ sudo apt-get update
$ sudo apt-get upgrade

3. Instalar la última versión de Nginx
Antes de eso, obtengamos permisos de superusuario.

$ sudo su

Establezcamos una variable para la última versión de nginx.

$ nginx=stable

Ahora agrega el repositorio usando la variable anterior.

$ add-apt-repository ppa:nginx/$nginx

Presiona enter para confirmar esta adición.

Deploy Laravel on AWS -6

Ahora actualicemos nuestras bibliotecas nuevamente con la última versión de Nginx.

$ apt-get update

Y por último pero no menos importante, instala Nginx.

$ apt-get install nginx

Tip: Verifica la versión de Nginx con el siguiente comando:

$ nginx -v

4. Instalar php 7.2 y php7.2-fpm
Antes que nada, instalemos el siguiente paquete.

$ apt-get install python-software-properties

Ahora agrega el repositorio.

$ add-apt-repository ppa:ondrej/php

Presiona enter para confirmar esta adición.

Ahora actualicemos nuestras bibliotecas nuevamente con la versión php7.2.

$ apt-get update

Y finalmente, instale php7.2 con php7.2-fpm también.

$ apt-get install php7.2 php7.2-msql php7.2-mysql php7.2-fpm php7.2-xml php7.2-gd php7.2-opcache php7.2-mbstring

Además, instala estas bibliotecas.

$ apt install zip unzip php7.2-zip

Para verificar su instalación, verifica la versión de PHP.

$ php -V

5. Install Laravel/Deploy your code.
En este paso, puedes enviar tu aplicación a tu servidor utilizando SCP, FTP o cualquier otra aplicación en la que desee implementar su código. En este tutorial, Laravel se instalará desde cero.

Descargar Composer

$ curl -sS https://getcomposer.org/installer | php

Mueve el Composer para hacerlo ejecutable.

$ mv composer.phar /usr/local/bin/composer

Pasemos al directorio donde queremos instalar/mover nuestro Laravel.

$ cd /var/www

Ahora instalemos Laravel.
Nota: omite este paso si ya tienes tu código.

$ composer create-project laravel/laravel test --prefer-dist

Establecer la propiedad adecuada para nuestro directorio.

$ chown -R www-data:www-data test/

Y también establece los permisos adecuados

$ chmod -R 775 test/

6. Configurar el host virtual en Nginx.
Ve a la carpeta de sitios disponibles en Nginx.

$ cd /etc/nginx/sites/available

Modifica el archivo de host virtual predeterminado con el editor vim; el archivo debería verse así:

server {
		listen 80 default_server;
		listen [::]:80 default_server;

		root /var/www/test/public;
		
		index index.php index.html index.htm index.nginx-debian.html;

		server_name _;

		location / {
			try_files $uri $uri/ =404;
		}

		location ~ \.php$ {
			include snippets/fastcgi-php.conf;
			
			# With php-fpm (or other unix sockets);
			fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# With php-fpm (or other unix sockets);
		}
}

Ahora guarda y sal.

$ :wq

Tip: Antes de reiniciar en Nginx, primero comprueba la sintaxis de Nginx. Si la sintaxis está bien, entonces es seguro realizar un reinicio

$ nginx -t

Ahora reinicia Nginx, para cargar nuestros cambios.

$ service nginx restart

Ahora, ve a tu navegador web y pega tu IP pública y ¡Deberías poder ver tu aplicación Laravel!

Deploy Laravel on AWS -28

Tip: Si no conoces tu IP pública, puedes usar este comando para ver la dirección IP rápidamente. Además, puedes ir al panel de instrumentos de AWS y buscar tu IP pública.

$ curl icanhazip.com

Nota: Si implementaste tu aplicación personalizada, asegúrate de reemplazarla en tu archivo .env, punto final RDS para habilitar la conexión a la base de datos.

¿Qué sigue?

Ahora que has implementado/instalado tu aplicación Laravel en AWS, es posible que te preocupe el rendimiento. Si deseas ampliar tu aplicación, puedes usar la función Auto Scaling para habilitar la alta disponibilidad en tu aplicación. Por ejemplo, si tu aplicación alcanza cierto uso de CPU al tener muchos visitantes, se lanzará otra copia exacta del servidor. Para entregar el tráfico entre dos (o tanto como sea necesario), también podemos usar el servicio de AWS Load Balancer. Por lo tanto, ambos servidores se registrarán en el equilibrador de carga y el tráfico se dividirá en ambos servidores.

Ayudamos a empresas digitales como la tuya a implementar aplicaciones web en AWS.

  • Implementa la migración de tu aplicación en la nube.
  • Mejora la escalabilidad y la seguridad de tu infraestructura.
  • Guía a tu equipo a adoptar las prácticas AWS DevOps.

Tagged under:

Leave a Reply

Your email address will not be published.

Google Analytics Alternative