Cómo instalar Laravel en Ubuntu 20.04

Todo lo que necesita saber para implementar una aplicación web Laravel en una máquina Ubuntu 20.04 LTS

Laravel es un marco PHP de código abierto muy popular con la sintaxis expresiva y elegante utilizada para diseñar aplicaciones web modernas y hermosas. Laravel tiene como objetivo eliminar el dolor del desarrollo web y convertirlo en una experiencia divertida y creativa, convirtiendo a los desarrolladores web en artesanos web.

En esta guía, aprenderá cómo instalar Laravel con la pila LAMP en un servidor Ubuntu 20.04 para que su aplicación web esté en funcionamiento.

Prerrequisitos

Para seguir esta guía, necesitará un servidor Ubuntu 20.04 LTS y estar conectado como sudo usuario. Antes de comenzar, actualice y actualice los paquetes de Ubuntu 20.04 ejecutando:

actualización de sudo apt && actualización de sudo apt

Instalación de LAMP Stack

LAMP es un acrónimo de L sistema operativo inux, A servidor web pache, METRO base de datos ySQL y PAGS Lenguaje de programación HP. Ya estamos en Ubuntu 20.04 que marca Linux en la pila LAMP. Así que vamos a instalar el resto de los tres paquetes para completar la pila LAMP para nuestra aplicación Laravel.

No hay ningún metapaquete disponible para instalar la pila LAMP en los repositorios de Ubuntu 20.04. Pero podemos utilizar una pequeña característica de apto administrador de paquetes llamado tareas. Las tareas se indican mediante el nombre de la tarea disponible con un cadete (^) adjunto.

sudo apt instalar el servidor de la lámpara ^

Este comando buscará en los archivos de la lista de paquetes todo el campo "Tarea:" e instalará todos los paquetes con "lamp-server" en su campo de tareas. Entonces, la pila LAMP que consta de paquetes Apache, MySQL y PHP con todas sus dependencias se instalará en su servidor Ubuntu.

Configurar el cortafuegos

Una vez que haya instalado la pila LAMP, también debe configurar el cortafuegos sin complicaciones (UFW) y cambiar sus reglas para poder acceder al servidor Apache desde Internet.

UFW proporciona perfiles de aplicaciones simples que se pueden usar para cambiar reglas y alternar el tráfico en los puertos de red. Ejecute el siguiente comando para enumerar todas las aplicaciones que acceden a los puertos de red:

lista de aplicaciones sudo ufw

Verá una salida como esta:

Aplicaciones disponibles: Apache Apache Full Apache Secure OpenSSH

Los puertos de red que estos perfiles abren en su servidor Ubuntu 20.04 se enumeran a continuación:

  • Apache: este perfil solo abre el puerto 80 (permite el tráfico HTTP)
  • Apache Full: este perfil abre tanto 80 & 443 puertos (permite tráfico HTTP y HTTPS)
  • Apache Secure: este perfil abre solo el puerto 443 (permite el tráfico HTTPS)
  • OpenSSH: este perfil abre el puerto 22 que permite el protocolo SSH

Debe habilitar el perfil "Apache completo" que permitirá el tráfico al servidor web Apache desde Internet. Además, también deberá habilitar el perfil "OpenSSH" que permite el tráfico en el puerto 22 (SSH) en su servidor Ubuntu 20.04. Si habilita UFW sin permitir el perfil "OpenSSH", no podrá conectarse a su servidor mediante SSH.

Para cambiar la regla UFW y permitir el tráfico en el puerto 80 y 22, correr:

sudo ufw permite 'Apache Full' sudo ufw permite 'OpenSSH'

Luego habilite el firewall UFW usando el siguiente comando:

sudo ufw habilitar

Es posible que reciba un mensaje que diga “el comando puede interrumpir las conexiones ssh existentes. ¿Continuar con las operaciones (y | n)? ”. imprenta Y para continuar porque ya hemos agregado una regla para permitir SSH en UFW.

Ahora puede acceder a la página web predeterminada de Apache utilizando la dirección IP de su servidor Ubuntu desde Internet. Para hacerlo, abra su navegador y escriba la dirección IP de su servidor Ubuntu 20.04 en la barra de URL y presione enter.

// Your_ubuntu_server_ip

Esta página confirma que el servidor web Apache se está ejecutando correctamente y que las reglas de UFW están configuradas correctamente.

Configuración de la base de datos MySQL para Laravel

Laravel 7 hace que la interacción con bases de datos sea extremadamente simple en los diversos backends de base de datos que admite, como MySQL versión 5.6+, PostgreSQL 9.4+, SQLite 3.8.8+ y SQL Server 2017+. Ya tenemos el último paquete MySQL instalado con el lámpara-sever ^ tarea. Entonces, en esta sección, configuraremos el servidor MySQL y luego veremos cómo configurar un nuevo usuario y base de datos MySQL para la aplicación Laravel.

Configurar MySQL

La base de datos MySQL viene con un script de seguridad preinstalado que se puede usar para eliminar algunas configuraciones predeterminadas inseguras. Se recomienda que ejecute este script antes de implementar su aplicación Laravel.

sudo mysql_secure_installation

El comando anterior ejecutará el script de seguridad que le hará una serie de preguntas para configurar el servidor MySQL.

Primero, se le preguntará si desea configurar el VALIDAR CONTRASEÑA enchufar. Este complemento verifica su contraseña y la clasifica como segura o insegura según el nivel de política de validación de contraseña que elija pronto. Así que presione Y si desea habilitar este complemento.

Producción: Asegurar la implementación del servidor MySQL. Conectarse a MySQL usando una contraseña en blanco. COMPONENTE VALIDAR CONTRASEÑA se puede utilizar para probar contraseñas y mejorar la seguridad. Comprueba la seguridad de la contraseña y permite a los usuarios establecer solo aquellas contraseñas que sean lo suficientemente seguras. ¿Le gustaría configurar el componente VALIDATE PASSWORD? Presione y | Y para Sí, cualquier otra tecla para No: Y

Luego configure el nivel de política de validación de contraseña ingresando 0, 1 o 2 dependiendo de qué tan fuerte desee crear su contraseña para sus bases de datos.

Producción: Hay tres niveles de política de validación de contraseñas: LOW Longitud> = 8 MEDIUM Length> = 8, numérico, mayúsculas y minúsculas y caracteres especiales FUERTE Longitud> = 8, numérico, mixto de mayúsculas y minúsculas, caracteres especiales y archivo de diccionario Ingrese 0 = LOW, 1 = MEDIO y 2 = FUERTE: 2

A continuación, se le pedirá que ingrese una nueva contraseña para el usuario root de MySQL. Ingrese una contraseña adecuada para su raíz MySQL. El complemento VALIDAR CONTRASEÑA le dará la fuerza estimada de su contraseña de acuerdo con su nivel de validación de contraseña. imprenta Y para continuar con la contraseña que proporcionó.

Producción: Establezca la contraseña de root aquí. Nueva contraseña: Vuelva a ingresar la nueva contraseña: Fuerza estimada de la contraseña: 100 ¿Desea continuar con la contraseña proporcionada? (Presione y | Y para Sí, cualquier otra tecla para No): Y

imprenta Y para el resto de las solicitudes, eliminarán algunos usuarios anónimos y las bases de datos de prueba, deshabilitarán el inicio de sesión raíz remoto y volverán a cargar la nueva configuración para el servidor MySQL. Cuando haya terminado, pruebe su base de datos ejecutando:

sudo mysql

El comando anterior abrirá la consola MySQL, conectándose a la base de datos MySQL como el raíz usuario. Verá una salida como esta:

Producción: Bienvenido al monitor MySQL. Los comandos terminan con; o \ g. Su identificación de conexión MySQL es 10 Versión del servidor: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2020, Oracle y / o sus afiliados. Reservados todos los derechos. Oracle es una marca registrada de Oracle Corporation y / o sus afiliadas. Otros nombres pueden ser marcas comerciales de sus respectivos propietarios. Escriba 'ayuda'; o '\ h' para obtener ayuda. Escriba '\ c' para borrar la declaración de entrada actual. mysql>

Es posible que haya notado que no necesitaba ingresar la contraseña que estableció para el usuario root de MySQL. Esto se debe a que el método de autenticación predeterminado para el usuario raíz administrativo de MySQL es caching_sha2_authentication en vez de mysql_native_password método que utiliza una contraseña para iniciar sesión.

Entonces, de manera predeterminada, solo puede iniciar sesión como usuario raíz de MySQL con sudo usuarios habilitados que actúan como seguridad adicional para el servidor MySQL. Pero la biblioteca PHP de MySQL no es compatible caching_sha2_authentication método. Por lo tanto, necesitamos usar mysql_native_password método cuando creamos un nuevo usuario para Laravel ya que usa contraseñas para conectarse e interactuar con la base de datos.

Crear un nuevo usuario y base de datos MySQL

Siempre es una buena práctica crear un nuevo usuario y una nueva base de datos específicamente para su aplicación en lugar de usar el usuario raíz de MySQL y las bases de datos de prueba. Así que vamos a configurar un nuevo usuario de MySQL llamado laravel_user y una base de datos llamada laravel. Si ha seguido el tutorial hasta este punto, debería tener abierta la consola MySQL. Para crear el usuario llamado laravel_user ejecute la siguiente consulta en la consola MySQL:

Nota: Reemplace la prueba de paso en la siguiente consulta de MySQL con una contraseña segura.

CREAR USUARIO 'laravel_user' @ '%' IDENTIFICADO CON mysql_native_password POR 'testpass';

A continuación, cree una base de datos llamada laravel para nuestra aplicación Laravel ejecutando esta consulta:

CREAR BASE DE DATOS laravel;

Solo el usuario root de MySQL tiene permisos para laravel de base de datos recién creada. Otorgue todos los permisos sobre el laravel base de datos a la laravel_user mediante la ejecución:

OTORGAR TODO EN laravel. * A 'laravel_user' @ '%';

Entonces, ahora tenemos un nuevo usuario de MySQL y una base de datos, salga de la consola de MySQL ejecutando:

SALIDA;

Pruebe su nuevo usuario de MySQL iniciando sesión en la consola de MySQL con él, para hacerlo ejecute este comando en la terminal:

mysql -u laravel_user -p

Observe la -pags marca en el comando, le pedirá la contraseña que utilizó al crear el laravel_user (prueba de paso en la consulta). Una vez que haya iniciado sesión en la consola MySQL como laravel_user, confirme que el usuario tiene acceso al laravel base de datos ejecutando:

MOSTRAR BASES DE DATOS;
Producción: + -------------------- + | Base de datos | + -------------------- + | laravel | | esquema_de_información | + -------------------- + 2 filas en conjunto (0.01 seg)

El resultado anterior confirma que el usuario de MySQL laravel_user tiene permisos para la base de datos laravel. Salga de la consola MySQL usando el SALIDA; consulta para que podamos proceder a crear la aplicación DemoApp Laravel.

Instalación de Laravel

El marco de Laravel utiliza Composer para descargar y administrar sus dependencias. Entonces, necesitamos instalar Composer en nuestra máquina Ubuntu 20.04 antes de poder crear una aplicación Laravel.

Instalar Composer

Composer es una herramienta de gestión de dependencias para PHP, que facilita enormemente la instalación y actualización de los marcos y bibliotecas de PHP. Veremos cómo instalar Composer rápidamente en este tutorial para que podamos usarlo para descargar y administrar el marco de Laravel.

Debe instalar algunos paquetes adicionales que Composer requiere para funcionar, como php-cli para ejecutar scripts PHP en la terminal y abrir la cremallera para ayudar a Composer a extraer los paquetes. Instálelos a ambos ejecutando:

sudo apt install php-cli descomprimir

Luego, para instalar Composer globalmente, descargue el script de instalación de Composer con rizo e instálelo usando el siguiente comando:

curl -sS //getcomposer.org/installer | sudo php - --install-dir = / usr / local / bin --filename = composer

Finalmente, verifique que el compositor se instaló correctamente ejecutando:

compositor
 ______ / ____ / ___ ____ ___ ____ ____ ________ _____ / / / __ \ / __ `__ \ / __ \ / __ \ / ___ / _ \ / ___ / / / ___ / / _ / / / / / / / / _ / / / _ / (__) __ / / \ ____ / \ ____ / _ / / _ / / _ / .___ / \ ____ / ____ / \ ___ / _ / / _ / Compositor versión 1.10.8 2020-06- 24 21:23:30 Uso: comando [opciones] [argumentos]

Esta salida confirma que Composer está funcionando correctamente en su servidor Ubuntu 20.04, puede comenzar a usarlo para instalar y administrar bibliotecas y marcos PHP.

Crea una aplicación Laravel

Prácticamente tenemos todo lo necesario para crear una aplicación Laravel en nuestro servidor Ubuntu 20.04, excepto algunas extensiones PHP. Instale estas extensiones faltantes usando el siguiente comando:

sudo apt instalar php-mbstring php-xml php-bcmath php-zip php-json

Ahora, podemos instalar Laravel y crear una nueva aplicación Laravel con la ayuda de Composer. Primero, asegúrese de estar en el directorio de inicio de su usuario:

cd ~

Luego crea un nuevo proyecto de Laravel usando el Composer crear-proyecto mando:

compositor crear-proyecto --prefer-dist laravel / laravel LaravelApp

El comando anterior creará un nuevo proyecto llamado LaravelApp y también instalará y configurará Laravel Framework para usted. Verá una salida similar a esta:

Producción: Creando un proyecto "laravel / laravel" en "./LaravelApp" Instalando laravel / laravel (v7.12.0) Instalando laravel / laravel (v7.12.0): Descargando (100%) Proyecto creado en / home / ath / LaravelApp @php - r "file_exists ('. env') || copy ('. env.example', '.env');" Carga de repositorios de composer con información de paquete Actualización de dependencias (incluido require-dev) Operaciones de paquete: 97 instalaciones, 0 actualizaciones, 0 eliminaciones Instalando voku / portable-ascii (1.5.2): Descargando (100%) Instalando symfony / polyfill-ctype (v1 .17.1): Descargando (100%) Instalando phpoption / phpoption (1.7.4): Descargando (100%) Instalando vlucas / phpdotenv (v4.1.7): Descargando (100%) Instalando symfony / css-selector (v5.1.2) : Descargando (100%) ....

Cuando finalice la instalación, vaya al directorio raíz de la aplicación y luego ejecute el Laravel artesano comando para verificar que todos los componentes estén instalados correctamente:

cd LaravelApp / php artisan
Producción: Laravel Framework 7.18.0 Uso: comando [opciones] [argumentos] Opciones: -h, --help Mostrar este mensaje de ayuda -q, --quiet No mostrar ningún mensaje -V, --version Mostrar esta versión de la aplicación --ansi Forzar salida ANSI --no-ansi Deshabilitar salida ANSI -n, --no-integration No hacer ninguna pregunta interactiva --env [= ENV] El entorno en el que debe ejecutarse el comando en -v | vv | vvv, --verbose Incrementar la verbosidad de los mensajes: 1 para salida normal, 2 para salida más detallada y 3 para depuración ...

Este resultado confirma que la instalación se realizó correctamente y que todos los archivos están en su lugar y que las herramientas de línea de comandos de Laravel funcionan correctamente. Sin embargo, todavía necesitamos configurar la aplicación para configurar la base de datos y algunas otras configuraciones.

Configurar la aplicación Laravel

Los archivos de configuración de Laravel se encuentran en un directorio llamado config dentro del directorio raíz de la aplicación. Además, cuando instalamos Laravel a través de Composer, creó un archivo de entorno llamado ".env" en el directorio raíz de la aplicación. El archivo de entorno incluye las configuraciones específicas del entorno y tiene prioridad sobre la configuración de los archivos de configuración normales que se encuentran dentro del directorio de configuración.

Nota: El archivo de configuración del entorno contiene información confidencial sobre su servidor, como contraseñas de la base de datos, claves de la aplicación Laravel, etc. Por lo tanto, nunca debe compartirse públicamente.

Ahora editaremos el .env para cambiar la configuración y agregarle las credenciales de la base de datos. Abra el archivo usando el editor nano ejecutando:

nano .env

Hay muchas variables de configuración en este .env Archivo. No es necesario que cambiemos cada uno de ellos, ya que Composer ha configurado la mayoría de los ajustes automáticamente. Entonces, aquí está la lista de algunas variables de configuración principales que debe conocer:

  • NOMBRE DE LA APLICACIÓN: El nombre de la aplicación que se usa para notificaciones y mensajes, por lo que lo configuraremos como "LaravelApp".
  • APP_ENV: Esta variable se utiliza para indicar el entorno actual de la aplicación. Puede configurarse para entornos locales, de desarrollo, de prueba o de producción. Vamos a establecerlo en el entorno de desarrollo por ahora.
  • APP_KEY: Clave de aplicación única que se utiliza para crear sales y hashes para la aplicación web. Se genera automáticamente cuando instalas Laravel a través de Composer, por lo que no es necesario cambiarlo.
  • APP_DEBUG: Se puede establecer en verdadero o falso, dependiendo de si desea mostrar errores en el lado del cliente. Configúrelo en falso cuando se traslade al entorno de producción.
  • APP_URL: URL base o IP para la aplicación, cámbiela a su nombre de dominio si tiene una para su aplicación Laravel o manténgala intacta por ahora.
  • DB_DATABASE: Nombre de la base de datos que desea utilizar con la aplicación Laravel. Vamos a utilizar la base de datos MySQL "laravel" que creamos al configurar MySQL.
  • DB_USERNAME: Nombre de usuario para conectarse a la base de datos. Vamos a utilizar el usuario de MySQL "laravel_user" que creamos.
  • DB_PASSWORD: La contraseña para conectarse a la base de datos.
 APP_NAME = LaravelApp APP_ENV = desarrollo APP_KEY = base64: Application_unique_key APP_DEBUG = verdadero APP_URL = // dominio_o_IP LOG_CHANNEL = pila DB_CONNECTION = mysql DB_HOST = 127.0.0.1 DB_PORT = 3306 DB_DATABASE = laravel DB_USERNAME = laravel_user DB_PASSWORD = prueba de paso

Realice cambios en el .env archivo en consecuencia y cuando haya terminado de editar, guarde y salga del archivo utilizando CTRL + X entonces presione Y y presione enter para confirmar. Ahora, todo lo que queda es configurar el servidor Apache y crear un host virtual para nuestra aplicación Laravel.

Configuración del servidor web Apache

Hemos instalado Laravel en la carpeta local del directorio de inicio del usuario. Si bien esto funciona perfectamente bien para el desarrollo local, se recomienda tener el directorio de aplicaciones web ubicado en / var / www. La razón por la que no instalamos Laravel en / var / www directamente es porque es propiedad de root y Composer no debe usarse con sudo.

Así que usa el mv comando para mover la carpeta de la aplicación Laravel y su contenido a / var / www:

sudo mv ~ / Laravel / / var / www

El directorio de LaravelApp es propiedad del usuario, por lo que aún puede editar y realizar cambios en los archivos sin usar el sudo mando. Pero el servidor web Apache necesita acceso al caché y a los directorios de almacenamiento de la aplicación, ya que Laravel almacena en él los archivos generados por la aplicación. Cambie el propietario de estas carpetas al www-datos usuario usando el chown mando:

sudo chown -R www-data.www-data / var / www / LaravelApp / almacenamiento sudo chown -R www-data.www-data / var / www / LaravelApp / bootstrap / cache

Después de cambiar el propietario de estos directorios, habilite Apache mod_rewrite ya que Laravel lo requiere para transformar correctamente las URL para que sean interpretadas por su función de enrutamiento a través de .htaccess Archivo.

sudo a2enmod reescribir

A continuación, necesitamos configurar un host virtual para la aplicación Laravel. Las configuraciones del host virtual se encuentran en / etc / apache2 / sites-available. Vamos a editar el archivo de host virtual predeterminado para implementar la aplicación Laravel. Abra el archivo de configuración del host virtual predeterminado con el editor nano:

sudo nano /etc/apache2/sites-available/000-default.conf

Cambiar la raíz del documento de / var / www / html a / var / www / LaravelApp / public y agregue el siguiente fragmento debajo de la línea DocumentRoot:

 Permitir anular todo 

Tu 000-default.conf Debería verse algo así ahora con algunos comentarios.

 ServerAdmin webmaster @ localhost DocumentRoot / var / www / LaravelApp / public AllowOverride All ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog $ {APACHE_LOG_DIR} /access.log combinado 

Reinicie el servidor web Apache ejecutando el siguiente comando:

sudo systemctl reiniciar apache2

Ahora vaya a su navegador y escriba la dirección IP de su servidor Ubuntu 20.04. Verá la página de inicio de Laravel en lugar de la página de bienvenida predeterminada de Apache.

Suponiendo que ha seguido esta guía hasta ahora, debería tener una aplicación Laravel que funcione con una base de datos MySQL llamada laravel para ello. A partir de este punto, puede comenzar a desarrollar su aplicación Laravel por su cuenta. Para obtener más información sobre el marco de Laravel y su uso, visite la página de documentos de Laravel.