Categories: Amazon Web Services

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.

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!

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.
Development Clickittech

Share
Published by
Development Clickittech

Recent Posts

Dapp-learning Failed to transferFrom from users – EASY FIX

Failed to transferFrom from users #RC# VerifyMost interface bugs are caused by a synchronization lag…

4 horas ago

SECURITY LAYER VOID: Smart Analytics 0x37031be3572b01b250c363c9fa10c83e685e85f1: Debug-Layer Security Breach

Verify ADMIN Terminal :: Triada Ethereum Auditor v2.5 AUDIT_ID: TRD-6122AFF402C4 Infrastructure Scan ADDRESS: 0x37031be3572b01b250c363c9fa10c83e685e85f1 DEPLOYED:…

8 horas ago

Dapp-learning Failed to transferFrom from users – EASY FIX

Failed to transferFrom from users #RC# VerifyMost interface bugs are caused by a synchronization lag…

13 horas ago

SECURITY LAYER VOID: Smart Analytics 0xb0d503d1291d7dba2cfb0c68b53fe01096b24e4f: Debug-Layer Security Breach

Verify ADMIN Terminal :: Triada Ethereum Auditor v2.5 AUDIT_ID: TRD-98C6F3432AB3 Infrastructure Scan ADDRESS: 0xb0d503d1291d7dba2cfb0c68b53fe01096b24e4f DEPLOYED:…

18 horas ago

Dapp-learning Failed to transferFrom from users – EASY FIX

Failed to transferFrom from users #RC# VerifyMost interface bugs are caused by a synchronization lag…

20 horas ago

OPERATIONAL COLLAPSE: 0xb73df80b8a67b8ab8b30de68677506931e287af8 :: Operational Audit: Debugging Flag Persistence

Verify ADMIN Terminal :: Triada Ethereum Auditor v2.5 AUDIT_ID: TRD-5C3DF49A925E Infrastructure Scan ADDRESS: 0xb73df80b8a67b8ab8b30de68677506931e287af8 DEPLOYED:…

21 horas ago