Instalando Laravel

Laravel es un framework para el desarrollo de aplicaciones/sitios en PHP y lo voy a instalar para conocerlo mejor y ver si soy capaz de desarrollar una aplicación web. Aunque me dedique a la administración de sistemas la programación me gustaba en mi época de estudiante y quiero ver si soy capaz de desarrollar una aplicación web que lleva tiempo rondándome la cabeza.

Seguro que hay sistemas mejores para programación de aplicaciones, pero hay que recordar que esto es sólo un interés, de momento ni siquiera llega a ser un hobby.

En fin, vamos adelante con la instalación de Laravel en la vieja Raspberry PI B corriendo DietPI.

Instalamos algunos requierimientos previos:

# apt install php-json php-mbstring php-zip php-xml php-tokenizer

Creamos la base de datos para nuestra aplicación con Laravel

# mysql
MariaDB [(none)]> CREATE DATABASE laraveldb;
MariaDB [(none)]> GRANT ALL ON laraveldb.* to 'adminweb'@'localhost' IDENTIFIED BY 'password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit

Actualizar composer. Es posible que la versión de composer que tentemos con DietPI esté anticuada, suele mostrar mensaje de advertencia. Podemos comprobar si hay versiones más nuevas con composer self-update y podemos actualizar ala versión 2 con composer self-update –2 Según la web de composer, hay una mejora de rendimiento considerable.

También se puede actualizar mediante script, si no nos funciona el comando anterior, como indican aquí.

# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
# php composer-setup.php --install-dir=/usr/bin
# php -r "unlink('composer-setup.php');"

Nos posicionamos en la carpeta del sitio web e instalamos Laravel ayudándonos de «composer»

# cd /var/www/html
# composer create-project --prefer-dist laravel/laravel rbiapps.com

Cuando finalice, podemos entrar en la carpeta que ha creado. Si hacemos ls -la podemos ver las carpetas y ficheros que ha creado, entre ellos el fichero .env, que es el que tiene la configuración del sitio.

root@RBIPI01:/var/www/rbiapps.com# ls -la
 total 320
 drwxr-xr-x 12 root root   4096 Feb  7 23:07 .
 drwxr-xr-x  6 root root   4096 Feb  7 23:19 ..
 -rw-r--r--  1 root root    220 Jan 19 16:20 .editorconfig
 -rw-r--r--  1 root root    862 Feb  7 23:08 .env
 -rw-r--r--  1 root root    811 Jan 19 16:20 .env.example
 -rw-r--r--  1 root root    111 Jan 19 16:20 .gitattributes
 -rw-r--r--  1 root root    191 Jan 19 16:20 .gitignore
 -rw-r--r--  1 root root    181 Jan 19 16:20 .styleci.yml
 -rw-r--r--  1 root root   3780 Jan 19 16:20 README.md
 drwxr-xr-x  7 root root   4096 Jan 19 16:20 app
 -rwxr-xr-x  1 root root   1686 Jan 19 16:20 artisan
 drwxr-xr-x  3 root root   4096 Jan 19 16:20 bootstrap
 -rw-r--r--  1 root root   1646 Jan 19 16:20 composer.json
 -rw-r--r--  1 root root 224057 Feb  7 23:07 composer.lock
 drwxr-xr-x  2 root root   4096 Jan 19 16:20 config
 drwxr-xr-x  5 root root   4096 Jan 19 16:20 database
 -rw-r--r--  1 root root    473 Jan 19 16:20 package.json
 -rw-r--r--  1 root root   1202 Jan 19 16:20 phpunit.xml
 drwxr-xr-x  2 root root   4096 Jan 19 16:20 public
 drwxr-xr-x  6 root root   4096 Jan 19 16:20 resources
 drwxr-xr-x  2 root root   4096 Jan 19 16:20 routes
 -rw-r--r--  1 root root    563 Jan 19 16:20 server.php
 drwxr-xr-x  5 root root   4096 Jan 19 16:20 storage
 drwxr-xr-x  4 root root   4096 Jan 19 16:20 tests
 drwxr-xr-x 44 root root   4096 Feb  7 23:08 vendor
 -rw-r--r--  1 root root    559 Jan 19 16:20 webpack.mix.js

Asignamos permisos necesarios en algunas carpetas

# chown -R :www-data /var/www/html/rbiapps.com/storage/
# chown -R :www-data /var/www/html/rbiapps.com/bootstrap/cache/
# chmod -R 0777 /var/www/html/rbiapps.com/storage/
# chmod -R 0775 /var/www/html/rbiapps.com/bootstrap/cache/

Laravel utiliza una KEY para securizar las sesiones y otros datos encriptados. Vamos a generar una nueva que se guardará en el fichero .env, en la clave KEY_APP

# php artisan key:generate

También editaremos el fichero .env para configurar los datos de conexión a la base de datos que hemos creado en MariDB para nuestro sitio o aplicación web.

 DB_CONNECTION=mysql
 DB_HOST=127.0.0.1
 DB_PORT=3306
 DB_DATABASE=laraveldb
 DB_USERNAME=adminweb
 DB_PASSWORD=password

Creamos el fichero de configuración de nuestro nuevo sitio en NGINX

# nano /etc/nginx/sites-available/rbiapps.com.conf
server{   
  listen 80;
  
  server_name www.rbiapps.com;
  root        /var/www/html/rbiapps.com/public;
  index       index.php;

  charset utf-8;
  gzip on;
  gzip_types text/css application/javascript text/javascript application/x-javascript  image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
  location / {
     try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ \.php {
     include fastcgi.conf;
     fastcgi_split_path_info ^(.+\.php)(/.+)$;
     fastcgi_pass unix:/run/php/php7.3-fpm.sock;
  }
  location ~ /\.ht {
     deny all;
  }
}

Ahora creamos el enlace en los sitios habilitados de nginx

# ln -s /etc/nginx/sites-available/rbiapps.com.conf /etc/nginx/sites-enabled/

Comprobamos la configuración de nginx y, si todo es correcto, reiniciamos ngix para que aplique la nueva configuración.

# nginx -t
# systemctl restart nginx

Ya podemos acceder a nuestro sitio. Si estamos trabajando en el equipo local o con máquinas virtuales puede ser que necesitemos editar el fichero host para resolver el nombre de dominio que hayamos elegido.

Y ahora ya podemos empezar a desarrollar con Laravel.

Espero que te resulte de utilidad.