Laravel es un framework PHP gratuito y de código abierto basado en el framework Symfony. Sigue el patrón arquitectónico modelo-vista-controlador y se utiliza para un desarrollo rápido de aplicaciones web. Es altamente escalable y tiene soporte integrado para sistemas de caché distribuidos. Viene con una interfaz de línea de comandos que ayuda a realizar varias operaciones para tus aplicaciones.
En esta guía, te explicamos cómo instalar Laravel 8 con Apache y Let's Encrypt SSL en Ubuntu 20.04.
Requisitos Previos
- Un servidor cloud Ubuntu 20.04 instalado en tu sistema.
- Un nombre de dominio válido aque apunte a la IP de tu servidor.
- Una contraseña root o un usuario con privilegios sudo.
Instala el Servidor Web Apache
Primero deberás instalar el paquete del servidor web para alojar una aplicación Laravel. Puedes usar el servidor web Nginx o Apache para Laravel.
Para instalar el servidor web Apache, ejecuta el siguiente comando:
# apt-get install apache2 -y
Esto instalará el paquete del servidor web Apache e iniciará el servicio web Apache automáticamente.
Para probar el servidor web Apache, abre el navegador web y accede a la URL http: // your-server-ip. Deberías ver la página de prueba de Apache en la siguiente pantalla:
Instala PHP
Laravel es una aplicación basada en PHP, por lo que deberás instalar PHP y otras extensiones necesarias en tu servidor. Puedes instalarlas todas con el siguiente comando:
# apt-get install libapache2-mod-php php php-common php-xml php-gd php-opcache php-mbstring php-tokenizer php-json php-bcmath php-zip unzip -y
Después de instalar todos los paquetes, edita el archivo php.ini y habilita cgi.fix_pathinfo:
# nano /etc/php/7.4/apache2/php.ini
Cambia la siguiente línea:
cgi.fix_pathinfo=0
Guarda y cierra el archivo y después reinicia el servicio Apache para que se apliquen los cambios:
# systemctl restart apache2
Instala Composer
Composer es un administrador de dependencias para PHP que se utiliza para administrar las dependencias y bibliotecas necesarias para las aplicaciones PHP.
Para instalar Composer, ejecuta el siguiente comando:
# curl -sS https://getcomposer.org/installer | php
Deberías obtener el siguiente resultado:
All settings correct for using Composer
Downloading...
Composer (version 2.1.6) successfully installed to: /root/composer.phar
Use it: php composer.phar
A continuación, mueve el binario descargado a la ruta del sistema:
# mv composer.phar /usr/local/bin/composer
Para seguir, verifica la versión de Composer con el siguiente comando:
# composer --version
Deberías ver el siguiente resultado:
Composer version 2.1.6 2021-08-19 17:11:08
Instala Laravel 8 Utilizando Composer
En este apartado, vas a instalar Laravell utilizando Composer.
Primero, navega hasta el directorio raíz web de Apache y descarga Laravel con el siguiente comando:
# cd /var/www/html
# composer create-project --prefer-dist laravel/laravel laravel
Deberías obtener el siguiente resultado:
> @php artisan vendor:publish --tag=laravel-assets --ansi
No publishable resources for tag [laravel-assets].
Publishing complete.
@php artisan key:generate --ansi
Application key set successfully.
A continuación, cambia el permiso y la propiedad del directorio de Laravel:
# chown -R www-data:www-data /var/www/html/laravel
# chmod -R 775 /var/www/html/laravel
Configura Apache to Hospedar Laravel 8
Ahora deberás crear un archivo de configuración de host virtual Apache para alojar una aplicación Laravel.
Puedes hacerlo con el siguiente comando:
# nano /etc/apache2/sites-available/laravel.conf
Añade las siguientes líneas:
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName laravel.example.com
DocumentRoot /var/www/html/laravel/public
<Directory /var/www/html/laravel>
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Guarda y cierra el archivo y luego habilita el módulo de reescritura de Apache y activa el host virtual Laravel con el siguiente comando:
# a2enmod rewrite
# a2ensite laravel.conf
Para terminar, carga de nuevo el servicio Apache para aplicar los cambios:
# systemctl restart apache2
Instala Let's Encrypt SSL en el sitio de Laravel
Siempre es recomendable proteger tu sitio web con Let's Encrypt SSL. Para hacerlo, deberás instalar el cliente Certbot en su servidor.
Ejecuta el siguiente comando para instalar el cliente Certbot:
# apt-get install python3-certbot-apache -y
Después de instalar Certbot, utiliza el siguiente comando para descargar e instalar Let's Encrypt SSL en tu website Laravel:
# certbot --apache -d laravel.example.com
Tendrás que proporcionar una dirección de e-mail válida y aceptar los términos del servicio como se muestra más abajo:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): admin@example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for laravel.example.com
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/laravel-le-ssl.conf
Deploying Certificate to VirtualHost /etc/apache2/sites-available/laravel-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/laravel-le-ssl
Elige si deseas redirigir el tráfico HTTP a HTTPS, eliminando el acceso HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS.You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Escribe "2" y presiona "Enter" para descargar e instalar un certificado SSL gratuito para tu dominio, una vez que la instalación se haya completado con éxito. Deberías obtener el siguiente resultado:
You should get the following output:
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/laravel.conf to ssl vhost in /etc/apache2/sites-available/
laravel-le-ssl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://laravel.example.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=laravel.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
En este punto, tu sitio web de Laravel está protegido con Let's Encrypt SSL. Ahora puede acceder a él de forma segura con la URL https://laravel.example.com.
Accede al sitio web de Laravel
Ahora, escribe la URL https://laravel.example.com en tu navegador web. Serás redirigido a la página predeterminada de Laravel 8:
Conclusión
Con este tutorial, has aprendido a instalar Laravel 8 con Apache y a asegurarlo con Let's Encrypt SSL en Ubuntu 20.04.
¡Ya puedes empezar a desarrollar una aplicación web integral PHP utilizando el framework de Laravel!