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:
1
2
3
4
5
6
7
8
9
10
11
12
13
enrique@enrique-server:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP/> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP/> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:e2:ed:03 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.160/24 brd 192.168.100.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fee2:ed03/64 scope link
valid_lft forever preferred_lft forever
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:
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.
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:
1
enrique@enrique-server:~$ sudo netplan try
Paso 8
Si todo es correcto aplico los cambios con el siguiente comando:
1
enrique@enrique-server:~$ sudo netplan apply
Paso 9
Reinicio el sistema para completar el proceso de cambio:
1
enrique@enrique-server:~$ sudo reboot
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.
enrique@enrique-server:~$ systemctl status ssh.service
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enab
Active: active (running) since Sun 2020-05-31 13:31:34 BST; 18min ago
Process: 523ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS) Main PID: 525(sshd) Tasks: 5(limit: 4915) CGroup: /system.slice/ssh.service
├─525 /usr/sbin/sshd -D
├─555 sshd: root@pts/0
├─569 -bash
├─860 systemctl status ssh.service
└─861 systemctl status ssh.service
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
enrique@enrique-server:~$ sudo nano /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $# This is the sshd server system-wide configuration file. See# sshd_config(5) for more information.# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin# The strategy used for options in the default sshd_config shipped with# OpenSSH is to specify options with their default value where# possible, but leave them commented. Uncommented options override the# default value.#Port 22#AddressFamily any#ListenAddress 0.0.0.0#ListenAddress ::#HostKey /etc/ssh/ssh_host_rsa_key#HostKey /etc/ssh/ssh_host_ecdsa_key#HostKey /etc/ssh/ssh_host_ed25519_key# Ciphers and keying#RekeyLimit default none
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
enrique@asuspc:~$ ssh enrique@192.168.100.160
enrique@192.168.100.160´s password:
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-52-generic x86_64) * Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Thu Nov 5 09:59:26 UTC 2020 System load: 0.37 Processes: 115 Usage of /: 23.4% of 18.57GB Users logged in: 0 Memory usage: 10% IPv4 address for enp0s3: 192.168.100.160
Swap usage: 0%
64 updates can be installed immediately.
0 of these updates are security updates.
To see these additional updates run: apt list --upgradable
Last login: Wed Nov 4 18:54:04 2020 from 192.168.100.136
enrique@enrique-server:~$
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
enrique@enrique-server:~$ sudo apt update
nrique@enrique-server:~$ sudo apt-get install apache2
[sudo] password for enrique:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3
libaprutil1-ldap libjansson4 liblua5.2-0 ssl-cert
Suggested packages:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser openssl-blacklist
The following NEW packages will be installed:
apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3
libaprutil1-ldap libjansson4 liblua5.2-0 ssl-cert
0 upgraded, 11 newly installed, 0 to remove and 3 not upgraded.
Need to get 1865 kB of archives.
After this operation, 8080 kB of additional disk space will be used.
Do you want to continue? [Y/n]
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
enrique@enrique-server:~$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-11-05 11:12:19 UTC; 2min 23s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 19476(apache2) Tasks: 55(limit: 2282) Memory: 5.1M
CGroup: /system.slice/apache2.service
├─19476 /usr/sbin/apache2 -k start
├─19478 /usr/sbin/apache2 -k start
└─19479 /usr/sbin/apache2 -k start
Nov 05 11:12:19 enrique-server systemd[1]: Starting The Apache HTTP Server...
Nov 05 11:12:19 enrique-server apachectl[19475]: AH00558: apache2: Could not reliably determine t>
Nov 05 11:12:19 enrique-server systemd[1]: Started The Apache HTTP Server.
lines 1-15/15 (END)
Como resultado, el servicio Apache está en funcionamiento.
Luego, agreguo los servicios SSH, HTTP y HTTPS al firewall UFW usando el siguiente comando.
1
2
3
4
for svc in ssh http https
doufw allow $svcdone
Ahora habilito los servicios de firewall de UFW.
1
sudo ufw enable
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.
enrique@enrique-server:~$ sudo apt install libapache2-mod-php php php-common php-mysql php-xml php-gd php-opcache php-mbstring php-tokenizer php-json php-bcmath php-zip unzip
[sudo] password for enrique:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'php7.4-opcache' instead of 'php-opcache'The following additional packages will be installed:
fontconfig-config fonts-dejavu-core libapache2-mod-php7.4 libfontconfig1 libgd3 libjbig0
libjpeg-turbo8 libjpeg8 libonig5 libtiff5 libwebp6 libxpm4 libzip5 php7.4 php7.4-bcmath
php7.4-cli php7.4-common php7.4-gd php7.4-json php7.4-mbstring php7.4-readline php7.4-xml
php7.4-zip
Suggested packages:
php-pear libgd-tools zip
The following NEW packages will be installed:
fontconfig-config fonts-dejavu-core libapache2-mod-php libapache2-mod-php7.4 libfontconfig1
libgd3 libjbig0 libjpeg-turbo8 libjpeg8 libonig5 libtiff5 libwebp6 libxpm4 libzip5 php
php-bcmath php-common php-gd php-json php-mbstring php-tokenizer php-xml php-zip php7.4
php7.4-bcmath php7.4-cli php7.4-common php7.4-gd php7.4-json php7.4-mbstring php7.4-opcache
php7.4-readline php7.4-xml php7.4-zip unzip
0 upgraded, 35 newly installed, 0 to remove and 3 not upgraded.
Need to get 6785 kB of archives.
After this operation, 27.0 MB of additional disk space will be used.
Do you want to continue? [Y/n]
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.
1
2
cd /etc/php/7.4/
nano apache2/php.ini
Descomento la opción ‘cgi.fix_pathinfo’ y cambio el valor a ‘0’, cgi.fix_pathinfo=0
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.
1
2
3
4
5
6
7
8
enrique@enrique-server:~$ sudo curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...
Composer (version 2.0.4) successfully installed to: /home/enrique/composer.phar
Use it: php composer.phar
enrique@enrique-server:~$ sudo mv composer.phar /usr/local/bin/composer
Después de eso, verifico la versión de Composer usando el siguiente comando.
1
2
enrique@enrique-server:~$ composer --version
Composer version 2.0.4 2020-10-30 22:39:11
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:
enrique@enrique-server:~$ sudo apt-get install mysql-server
[sudo] password for enrique:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.1-7
libevent-pthreads-2.1-7 libfcgi-perl libhtml-parser-perl libhtml-tagset-perl
libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl
liblwp-mediatypes-perl libmecab2 libtimedate-perl liburi-perl mecab-ipadic
mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0
mysql-common mysql-server-8.0 mysql-server-core-8.0
Suggested packages:
libdata-dump-perl libipc-sharedcache-perl libwww-perl mailx tinyca
The following NEW packages will be installed:
libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.1-7
libevent-pthreads-2.1-7 libfcgi-perl libhtml-parser-perl libhtml-tagset-perl
libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl
liblwp-mediatypes-perl libmecab2 libtimedate-perl liburi-perl mecab-ipadic
mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0
mysql-common mysql-server mysql-server-8.0 mysql-server-core-8.0
0 upgraded, 25 newly installed, 0 to remove and 3 not upgraded.
Need to get 30.7 MB of archives.
After this operation, 249 MB of additional disk space will be used.
Do you want to continue? [Y/n]
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
enrique@enrique-server:~$ sudo systemctl status mysql
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-11-05 21:06:59 UTC; 1min 18s ago
Main PID: 1767(mysqld) Status: "Server is operational" Tasks: 37(limit: 2282) Memory: 331.8M
CGroup: /system.slice/mysql.service
└─1767 /usr/sbin/mysqld
Nov 05 21:06:54 enrique-server systemd[1]: Starting MySQL Community Server...
Nov 05 21:06:59 enrique-server systemd[1]: Started MySQL Community Server.
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.
enrique@enrique-server:~$ sudo mysql_secure_installation
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: y
There are three levels of password validation policy:
LOW Length >=8MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0= LOW, 1= MEDIUM and 2= STRONG: 0Please set the password for root here.
New password: esaborit
Re-enter new password: esaborit
Estimated strength of the password: 50Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only fortesting, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
All done!
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 comando ALTER 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.
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.
1
2
useradd -m -s /bin/bash enrique
passwd enrique
Después de eso, inicie sesión con el usuario ’enrique’.
1
su - 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.
1
2
enrique@enrique-server:~$ cd /home/proyectos_laravel/
enrique@enrique-server:/var/www/laravel$ sudo composer create-project --prefer-dist laravel/laravel prueba1
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’.
A continuación, activo el módulo de reescritura de Apache y la configuración del host virtual de Laravel usando el siguiente comando.
1
2
sudo a2enmod rewrite
sudo a2ensite laravel.conf
Después de eso, pruebo la configuración de Apache, asegúrese de que no haya ningún error y reinicie el servicio Apache.
1
2
apachectl configtest
systemctl restart apache2
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:
1
enrique@enrique-server:~$ composer global require "laravel/installer"
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:
1
enrique@enrique-server:~$ sudo nano ~/.bashrc
donde la ruta a añadir al final de lo que tiene asignado la variable es:
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:
1
laravel new nombre-proyecto
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:
1
chmod 2775 /var/www
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.
1
phpartisanconfig:cache
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
1
php artisan config:clear
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
1
php artisan route:cache
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
1
php artisan route:clear
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
1
php artisan optimize --force
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:
1
composer dumpautoload -o
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:
1
php artisan cache:clear
Clear Route Cache:
1
php artisan route:cache
Clear View Cache:
1
php artisan view:clear
Clear Config Cache:
1
php artisan config:cache
You can also clear cache without command using route. so you can create route as like bellow:
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.