Voy a crear una máquina virtual con Ubuntu Server 20.04 en VirtualBox donde instalaré todas las herramientas y servicios necesarios para el entorno de desarrollo con Laravel.
Accederé a la MV vía ssh desde la línea de comandos de mi equipo anfitrión. Para facilitar la tarea debo establecer una ip estática en la interface del servidor desde la que tendré acceso. para ello arranco la MV con Ubuntu Server
Configurar una dirección IP estática en Ubuntu Server 20.04
Para el caso de Ubuntu Server 20.04, es importante anotar que el archivo de configuración de red Netplan por defecto lo encontraré en la ruta /etc/netplan/00-installer-config.yaml
.
Paso 1
Voy a detectar la interfaz de red actual con el comando ip a:
|
|
Paso 2
En este caso el adaptador es “enp0s3” con la dirección IP “192.168.100.160”. Es momento de validar que CloudInit no gestiona la interfaz de red, para ello abriré el archivo de configuración con mi editor habitual:
|
|
Paso 3
Allí debo validar que existe la siguiente línea, si no está la debo ingresar manualmente:
|
|
|
|
Paso 4
Guardo los cambios si aplica y luego de esto abriré el archivo de configuración Netplan con la siguiente orden. Allí verifico que el adaptador de red posea el protocolo dhcp en estado “true, esto significa que usar DNS para las direcciones IP.
|
|
Paso 5
Debo borrar estas líneas e ingresar las siguientes con los datos deseados:
|
|
Paso 6
Guardo los cambios usando la combinación de teclas siguiente:
Ctrl + O
Salo del editor usando:
Ctrl + X
Paso 7
Compruebo que no existen errores con el siguiente comando:
|
|
Paso 8
Si todo es correcto aplico los cambios con el siguiente comando:
|
|
Paso 9
Reinicio el sistema para completar el proceso de cambio:
|
|
Una vez iniciemos sesión ejecuto de nuevo el comando “ip a” para comprobar que los cambios realizados en la red han sido aplicados de forma correcta. Allí veré la nueva IP establecida.
Acceso remoto via ssh a Ubuntu Server 20.04
Lo siguiente para poder acceder desde mi pc es instalar el servidor ssh openssh en la máquina virtual con Ubuntu.
|
|
y compruebo su estado.
|
|
Todo está correcto, ya puedo habrir una terminal desde mi equipo anfitrión y conectarme vía ssh por el puerto 22 a mi servidor virtualizado. Como es un entorno de desarrollo no cambio más en el servidor ssh, pero quiero recordar que por seguridad en producción se debería haber cambiando el puerto de escucha por defecto, prohibir el cceso de root, etc, todo ello editando el archivo de configuración sshd_config
.
|
|
Como dije anteriormente abro una consola en mi equipo anfitrion y tecleo ssh enrique@192.168.100.160
, intruzco mi contraseña y ya estoy dentro:
|
|
Prerequisitos a la instalación de Laravel
Laravel es un marco PHP gratuito y de código abierto que implementa el patrón de diseño MVC (Model-View-Controller). Taylor Otwell lo creó en 2011 como un intento de proporcionar una alternativa avanzada al marco CodeIgniter (CI). En 2011, Laravel lanzó la versión 1 y la versión 2. La última versión 8.x viene con más características mejoradas como esquema de versiones, política de soporte, etiquetas y mejoras de componentes Blade, operaciones de cadenas fluidas, mejoras de enlace del modelo de ruta, etc.
Lo ideal a la hora de trabajar con Laravel en local es instalar su máquina virtual, Laravel Homestead, que viene lista para el desarrollo de proyectos con Laravel y otras tecnologías de PHP como Symfony y Statamic. Al ser una máquina virtual nos va a permitir ejecutar nuestros proyectos sin necesidad de instalar PHP, MySQL, etc. Cuando se tiene experiancia tanto en desarrollo como en producción con laravel, esta opción es la más cómoda. En mi caso no es la que usaré. Estoy aprendiendo a desarrollar con Laravel y quiero aprender lo mas posible al entorno de desarrollo y producción de este ecosistema. Por lo tanto debo de preocuparme de cumplir los prerequisitos necesarios en la instalacion. Mirando en la página de laravel encuentro que son los siguientes:
- Apache / Nginx
- MySQL / MariaDB
- PHP >= 7.3
- BCMath PHP Extension
- Ctype PHP Extension
- Fileinfo PHP Extension
- JSON PHP Extension
- Mbstring PHP Extension
- OpenSSL PHP Extension
- PDO PHP Extension
- Tokenizer PHP Extension
- XML PHP Extension
1 Instalar el servidor web Apache
Primero, instalaré el servidor web Apache en el sistema Ubuntu 20.04 y configuraré el firewall UFW que solo permite conexiones entrantes para algunos servicios, incluidos SSH, HTTP y HTTPS.
Actualico todos los repositorios disponibles en el sistema e instalo el servidor web Apache.
|
|
Una vez completada la instalación, inicio el servicio Apache y lo agréguo al inicio del sistema.
|
|
Ahora verifico el estado del servicio Apache usando el siguiente comando.
|
|
Como resultado, el servicio Apache está en funcionamiento.
Luego, agreguo los servicios SSH, HTTP y HTTPS al firewall UFW usando el siguiente comando.
|
|
Ahora habilito los servicios de firewall de UFW.
|
|
Escribo ’ y ’ para continuar y se habrá habilitado el firewall UFW.
A continuación, abro su navegador web y escriba la dirección IP de su servidor en la barra de direcciones.
http://10.5.5.25/
Y obtengo la página index.html predeterminada de Apache.
Como resultado, puedo afirmar que se completaron correctamente la instalación del servidor web Apache y la configuración del firewall UFW.
2 Instalar y configurar PHP 7.4
En este paso, instalaremos y configuraremos PHP 7.4 para nuestra instalación de Laravel. Para instalar Laravel 8.x, al menos debe tener PHP> = 7.2.5 en su sistema. Y, de forma predeterminada, el repositorio oficial de Ubuntu 20.04 proporciona paquetes PHP 7.4.
Instalé paquetes PHP 7.4 usando el comando apt .
|
|
|
|
Una vez completada toda la instalación, voy al directorio /etc/php/7.4/
y edito la configuración de php.ini
para el servidor web Apache2.
|
|
Descomento la opción ‘cgi.fix_pathinfo’ y cambio el valor a ‘0’, cgi.fix_pathinfo=0
|
|
Guardar y cerrar.
A continuación, reinicio el servicio Apache para aplicar la nueva configuración ‘php.ini’.
|
|
Como resultado, la configuración básica de PHP 7.4 se ha completado con éxito.
3 Instalar la administración de paquetes PHP de Composer
Composer es un administrador de dependencias para PHP. Es un administrador de paquetes a nivel de aplicación para PHP que le permite descargar bibliotecas y dependencias PHP adicionales a su proyecto PHP.
En este tutorial, usaré Composer para instalar Laravel e instalaré Composer descargando el archivo binario desde el sitio web oficial de Composer.
Descargué el archivo binario del Composer y lo muevo al directorio / usr / local / bin
.
|
|
Después de eso, verifico la versión de Composer usando el siguiente comando.
|
|
4 Instalar servidor MySQL
Los paquetes del servidor MySQL 8.0 están disponibles en los repositorios predeterminados en Ubuntu 20.04. Después de iniciar sesión en su servidor, actualice apt cache y ejecute los paquetes de instalación. Para instalar el tipo de servidor MySQL:
|
|
Espero a que el administrador de paquetes complete la instalación. Después de finalizar la instalación, el servicio MySQL se iniciará automáticamente. Para comprobar el tipo de estado del servicio:
|
|
5 Asegurando el servidor mysql
En esta etapa, el servidor MySQL aún no está protegido. Puede cambiar al usuario root de su sistema y conectarse al servidor MySQL. No solicitará ninguna contraseña.
Entonces, aquí necesito asegurar el servidor MySQL. Los paquetes proporcionan un script para hacerlo. Ejecuto el siguiente comando para la configuración inicial de mi servidor MySQL. El script solicitará más configuraciones que las versiones anteriores de MySQL, como la política de validación de contraseña, etc.
|
|
Sigo las instrucciones en pantalla para finalizar el asistente. Todas las entradas del usuario están resaltadas en el asistente a continuación. Esto creará una contraseña para el usuario raíz, eliminará la base de datos de prueba y el usuario para proteger el servidor de la base de datos.
|
|
6 Administrando el servidor MySQL
El servicio MySQL se administra bajo el administrador de servicios systemd. Puedo usar los comandos systemctl predeterminados para administrar el servicio de base de datos en la línea de comandos. A continuación se muestran algunos comandos de uso frecuente para administrar el servicio:
- Para detener el servicio MySQL, escriba:
sudo systemctl detener mysql
- Para iniciar el servicio MySQL, escriba:
sudo systemctl iniciar mysql
- Deténgase y luego inicie el servicio MySQL, escriba:
sudo systemctl reiniciar mysql
- Para ver el estado del servicio MySQL, escriba:
sudo systemctl estado mysql
7 Conectandome al servidor MySQL
He instalado y asegurado correctamente el servidor de base de datos MySQL en mi sistema Ubuntu 20.04. Ahora me conecto a mi servidor de base de datos en la línea de comandos con el siguiente comando.
|
|
Nota: Cuando instala MySQL e intenta acceder a él en la máquina local con el usuario root , el comando que usa es:mysql -u root -p. En la mayoría de los casos, recibirá el mensaje de error: ERROR 1698 (28000): Access denied for user ‘root’@’localhost’. Para poder iniciar sesión en MySQL como root, primero use sudo para modificar el usuario root:
sudo mysql
. Utilice el comandoALTER USER
y cambie el método de autenticación para iniciar sesión en MySQL como root :ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'esaborit';
Ya puedo entrar como root.
8 Creo un usuario y una base de datos MySQL para mi proyecto en Laravel
Como me he conectado al servidor MySQL en la línea de comandos. El servidor de base de datos está listo para que sus aplicaciones almacenen datos.
Crearé un usuario de base de datos independiente para conectar la base de datos mediante la aplicación. Utilice los siguientes comandos para crear una base de datos en MySQL. Luego crearé un usuario y le asignaré privilegios en la base de datos.
|
|
Instalación de Laravel 8.x en Ubuntu 20.04
Para este paso, voy a describir dos formas diferentes de instalar el marco web de Laravel. Instalaré Laravel a través del Instalador de Laravel y a través de Composer. Esta sección instalará el marco web de Laravel con el usuario no root llamado ’enrique’.
Nota: En mi caso el usuario ya existe y si tiene privilegios de sudo que no utilizo para instalar laravel Se puede agregar el usuario y configurar su contraseña usando el siguiente comando.
|
|
Después de eso, inicie sesión con el usuario ’enrique’.
|
|
1 Instalando Laravel Via Composer create-project
Una forma de instalar el marco web de Laravel es mediante la gestión de paquetes PHP de Composer. Para instalar Laravel, me dirijo al directorio “proyectos_laravel” que he creado en mi directorio personal. Como estamos en Ubuntu y usando Apache,otra opción poría ser instalarlo en el directorio /var/www/laravel. Pero voy a usar Visual Studio como IDE de desarrollo y accederé vía ssh al servidor con Ubuntu y me resulta mas cómodo trabajar desde mi directorio personal.
|
|
El comando anterior creará el directorio «prueba1» con la instalación de Laravel. Composer usa git para descargar e instalar todos los paquetes y módulos que Laravel requiere para funcionar.
|
|
A continuación, cambie la propiedad del directorio del proyecto ‘prueba1’ al usuario ‘www-data’ y haga que se pueda escribir en el directorio ‘storage’.
|
|
Como resultado, ha instalado el marco web de Laravel usando el comando Composer.
1.2 Configuracion de Apache para el proyecto prueba1 en Laravel
En este paso, configuraremos el host virtual Apache para el proyecto prueba1.
Ahora voy al directorio ‘/etc/apache/sites-available’ y creo con el editor nano una nueva configuración de host virtual llamada ‘prueba1.conf’.
|
|
Cambio el nombre de dominio y el directorio root por el mio y peguo la configuración en él.
|
|
Guardar y cerrar.
A continuación, activo el módulo de reescritura de Apache y la configuración del host virtual de Laravel usando el siguiente comando.
|
|
Después de eso, pruebo la configuración de Apache, asegúrese de que no haya ningún error y reinicie el servicio Apache.
|
|
Con esto, completo la configuración del host virtual Apache para Laravel. Puedo acceder a prueba1.com desde un navegador web de mi pc anfitrión con solo modificar el hosts.
2 Instalando Laravel con su instalador
Hay una alternativa para instalar Laravel y es con su instalador, que también es un paquete, por tanto, también usaremos Composer para instalarlo de forma global con el comando:
|
|
Luego, nos tenemos que asegurar que la variable de entorno PATH del sistema operativo tenga incluido el directorio donde se alojan los paquetes instalados globalmente y así se puedan ejecutar sin ningún problema, para ello debemos agregar su ruta:
Para MacOs y Linux la variable PATH la podemos definir en ~/.bashrc o ~/.bash_profile
:
|
|
donde la ruta a añadir al final de lo que tiene asignado la variable es:
|
|
Para Windows debes modificar la variable de entorno PATH para agregar la ruta
|
|
Ahora cargo la nueva versión de la configuración ~ / .bashrc
y verifico la variable de entorno $ PATH
. A continuación se muestra el resultado que obtendrá.
|
|
Bien, de esta manera ya tenemos disponible el instalador de Laravel, por tanto, podemos ejecutar desde cualquier directorio:
|
|
y se instalará tal y como se hizo con el comando composer create-project
.
Accesibilidad del proyecto laravel desde APACHE
Para que el servidor web Apache acceda al directorio de su proyecto de Laravel, cambie el propietario del grupo del directorio del proyecto al grupo ‘www-data’ y haga que el directorio de ‘almacenamiento’ se pueda escribir.
|
|
El proyecto está listo para configurar el host virtual Apache para su proyecto Laravel.
Cómo configurar una identificación de grupo en un directorio:
|
|
El 2 delante de 775 hace que el grupo que es el propietario de /var/www
se copie en todos los archivos/carpetas nuevos creados en ese directorio.
También hay otras opciones además de 2:
0: setuid, setgid, sticky bits are unset
1: sticky bit is in place
2: setgid bit is in place
3: setgid and sticky bits are in place
4: setuid bit is in place
5: setuid and sticky bits are in place
6: setuid and setgid bits are on
7: setuid, setgid, sticky bits are activated
Borrando la cache de la aplicación
Almacenamiento en caché de configuración
La configuración de laravel se extiende a través de docenas de archivos, e including cada uno de ellos para cada solicitud es un proceso costoso. Para combinar todos tus archivos de configuración en uno.
|
|
Tenga en cuenta que cualquier cambio en la configuración no tendrá ningún efecto una vez que lo haya almacenado en caché. Para actualizar la caché de configuración, vuelva a ejecutar el comando anterior. En caso de que quiera deshacerse completamente de la caché de configuración, ejecute 1
|
|
Enrutamiento de caché de rutas
El enrutamiento también es una tarea costosa en laravel. Para almacenar en caché el archivo routes.php, ejecute el siguiente comando: 1
|
|
Tenga en cuenta que no funciona con cierres. En caso de que esté utilizando cierres, esta es una gran oportunidad para moverlos a un controlador, ya que el comando artesanal arrojará una excepción cuando intente comstackr rutas que estén unidas a cierres en lugar de a un método de control adecuado. Al igual que la caché de configuración, cualquier cambio en routes.php ya no tendrá ningún efecto. Para actualizar la memoria caché, ejecute el comando anterior cada vez que realice un cambio en el archivo de rutas. Para deshacerse completamente de la caché de ruta, ejecute el siguiente comando: 1
|
|
Optimización de Classmap
No es raro que un proyecto de tamaño mediano se extienda a través de cientos de archivos PHP. Como los buenos comportamientos de encoding nos dictan, todo tiene su propio archivo. Esto, por supuesto, no viene sin inconvenientes. Laravel tiene que incluir docenas de archivos diferentes para cada solicitud, lo cual es una tarea costosa.
Por lo tanto, un buen método de optimización es declarar qué archivos se utilizan para cada solicitud (esto es, por ejemplo, todos sus proveedores de servicios, middleware y algunos más) y combinarlos en un solo archivo, que luego se cargará para cada solicitud. Esto no es diferente de combinar todos tus archivos javascript en uno, por lo que el navegador tendrá que hacer menos solicitudes al servidor.
Los archivos de comstackción adicionales (una vez más: proveedores de servicios, middleware, etc.) deben ser declarados por usted en config / compile.php, en la clave de archivos. Una vez que coloque allí todo lo esencial para cada solicitud hecha a su aplicación, concatenarlos en un archivo con: 1
|
|
Optimizar la autocarga del compositor
Este no es solo para laravel, sino para cualquier aplicación que esté haciendo uso del compositor.
Primero explicaré cómo funciona la carga automática del PSR-4, y luego le mostraré qué comando debe ejecutar para optimizarlo. Si no está interesado en saber cómo funciona el compositor, le recomiendo que salte directamente al comando de la consola.
Cuando le pides a compsoser la clase App\Controllers\AuthController
, primero busca una asociación directa en el mapa de clases. El mapa de clases es una matriz con asociaciones de clases y archivos de 1 a 1. Como, por supuesto, no agregó manualmente la clase de inicio de sesión y su archivo asociado al mapa de clases, el compositor continuará y buscará en los espacios de nombres. Como App es un espacio de nombres PSR-4, que viene por defecto con Laravel y está asociado a la aplicación/carpeta, el compositor intentará convertir el nombre de la clase PSR-4 en un nombre de archivo con procedimientos básicos de manipulación de cadenas. Al final, adivina que App\Controllers\AuthController
debe estar ubicado en un archivo AuthController.php
, que se encuentra en una carpeta de Controladores que afortunadamente debe estar en la carpeta del espacio de nombres, que es la aplicación /.
Todo este trabajo duro solo para conseguir que la clase App\Controllers\AuthController
exista en el archivo app/Controllers/AuthController.php
. Para que el compositor explore toda la aplicación y cree asociaciones directas de clases y archivos de 1 a 1, ejecute el siguiente comando:
|
|
Tenga en cuenta que si ya ejecutó php artisan optimize –force
, ya no tiene que ejecutar este. Dado que el comando de optimización ya le dice al compositor que cree una carga automática optimizada.
Clear Cache:
|
|
Clear Route Cache:
|
|
Clear View Cache:
|
|
Clear Config Cache:
|
|
You can also clear cache without command using route. so you can create route as like bellow:
|
|
Voy a crear un proyecto con laravel a partir de otro alojado en un repositorio de Github.
Instalo GitKraken siguiendo los pasos de la página de soporte del sitio web de Gitkraken. Entre otras razones para su instalación esta que no se requieren herramientas Git para GitKraken, por lo que una vez instalado, se puede abrir la aplicación y comenzar a trabajar con el.
Github y GitLab son servicios web que permiten alojar el código de proyectos utilizando el software de control de versiones Git.
Ya que tengo un pequeño servidor casero lo voy a aprovechar para conectar a el los discos duros donde guardamos copias simples de los datos de los ordenadores de casa y las copias de seguridad.
Otra herramienta útil en la tramitación de documentación de manera telemática ante la administración es Autofirma. Según nos indican en la sede electrónicoa del gobierno de España.