Tutorial > Laravel Tutorial: Come installare e configurare il framework PHP Laravel

Laravel Tutorial: Come installare e configurare il framework PHP Laravel

Pubblicato il: 07 settembre 2023

Laravel PHP Sviluppo

Introduzione

Laravel è un framework PHP open-source che mette a disposizione la possibiltà di costruire applicazioni in PHP in maniera molto semplice. Il framework mette a disposizione un sacco di strumenti e permette di astrarre da alcune meccaniche di realizzazione, al fine di facilitare e velocizzare il lavoro degli sviluppatori.

In questa guida, ti mostreremo come completare l'installazione di Laravel, prendendo come esempio un server Ubuntu 22.04. Associata all'installazione del framework, ci baseremo sull'uso delle componenti Composer, per scaricare e gestire le dipendenze di Laravel, e Nginx come web server.

Pre-Requisiti

Per poter eseguire l'installazione di Laravel e il deploy dell'applicazione di prova che andrai a creare, sarà necessario avere pre-installate le seguenti componenti

  • Creare un utente sudo e abilitare il firewall ufw
  • Installare LEMP con MySQL 8
  • Installare Composer

Ambiente di sviluppo

Per il tuo server virtuale puoi scegliere tra le soluzioni Cloud VPS e Cloud Pro di Aruba. La soluzione Cloud VPS ti permette di avere il massimo della convenienza senza compromessi di qualità. Potrai scegliere quale hypervisor utilizzare tra OpenStack e VMware. Se hai bisogno di prestazioni maggiori, traffico illimitato e risorse garantite allora ti consigliamo la soluzione Cloud PRO con 3 hypervisor disponibili: OpenStack, VMware e Hyper-V.

Entrambe le soluzioni includono molti template preconfigurati, fra cui la versione 10.04 LTS di Ubuntu Server Edition, che aggiunge supporto per molte configurazioni tipiche, portando la semplicità che ha reso famoso Ubuntu come ambiente desktop anche nell'ambito dei server.

Installare moduli PHP

Per funzionare correttamente, Laravel necessita della installazione di alcuni moduli legati al linguaggio PHP. Tramite il gestore di pacchetti apt, ciò sarà possibile in poche linee di comando sul terminale del tuo server.

Il primo step da seguire, prima di installare i nuovi moduli, è quello dell'aggiornamento della cache del tuo gestore di pacchetti, tramite il comando:

$ sudo apt update

Aggiornata la cache, potrai installare le componenti PHP tramite un unico comando:

$ sudo apt install php-mbstring php-xml php-bcmath php-curl

L'installazione delle prime componenti fondamentali per Laravel è completa.

Creare un Database per l'applicazione

Ogni applicazione fa riferimento a un set di dati, contenuti nei database. Per questo motivo, avrai bisogno di collegare un database all'applicazione Laravel.

Come scelta del database puoi puntare sul servizio Database as a Service di Aruba (DBaaS). Scegliendo questa soluzione non dovrai preoccuparti della maggior parte delle attività di amministrazione dell’infrastruttura e potrai concentrarti solamente sullo sviluppo dei tuoi applicativi.

Le soluzione DBaaS di Aruba garantiscono prestazioni, disponibilità, scalabilità e sicurezza elevate e ti consentono di contenere i costi della tua infrastruttura. Il servizio DBaaS è compatibile con i principali sistemi di gestione di database relazionali, fra cui anche quello su engine MySQL di cui avrai bisogno per installare Laravel

Dovrai utilizzare un utente con privilegi di amministratore per poter manipolare i dati contenuti nelle tabelle che sceglierai di impiegare per il salvataggio dei dati.

Avvia quindi MySQL con il comando:

$ sudo mysql

Crea ora un nuovo database, direttamente dal terminale:

mysql> CREATE DATABASE testdb;

Il prossimo step è la creazione e l'associazione di un utente al database. Per far ciò, dovrai associare l'utente al metodo di autenticazione mysql_native_password e impostare la password desiderata. La sintassi del comando sarà la seguente:

mysql> CREATE USER 'privileged_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

Ora occorre dare all'utente i permessi sul database creato in precedenza:

sql> GRANT ALL ON testdb.* TO 'privileged_user'@'%';

Esegui, infine, il comando:

mysql> FLUSH PRIVILEGES;

Inserita questa serie di comandi, avrai dato all'utente la possibilità di interagire con il database appena creato, per eseguire operazioni di manipolazione dati. I permessi sono però ristretti solo al database inserito, perciò questo utente non potrà in nessun altro modo creare ulteriori database o manipolare i dati di tabelle non appartenenti al database assegnatogli.

Per verificare ora che l'utente abbia i permessi impostati, comincia con l'uscire dal terminale di MySQL:

mysql> exit

Per essere sicuro che le modifiche vengano applicate, riavvia il servizio tramite:

$ sudo service mysql restart

Ora, prova il login con l'utente creato poco fa, tramite il comando:

$ mysql -u privileged_user -p

Grazie all'opzione -p, richiederai l'autenticazione tramite password e il terminale ti chiederà di inserirla.

Completato il login, potrai interagire con i database disponibili. Nell'esempio:

mysql> SHOW DATABASES;

Se hai eseguito correttamente i passaggi precedenti, dovresti ottenere un output simile:

Output
+--------------------+
| Database           |
+--------------------+
| information_schema |
| travellist        |
+--------------------+
2 rows in set (0.01 sec)

Ora, prova a costruire la tua prima tabella. Nell'esempio, useremo una tabella contenente dati anagrafici (fittizi) di studenti universitari:

mysql> CREATE TABLE testdb.students (
	badge_number INT AUTO_INCREMENT,
	name VARCHAR(255),
	surname VARCHAR(255),
	PRIMARY KEY(badge_number)
);

Una volta creata la tabella e definita la sua struttura, sarà necessario popolarla con dei dati. Per far ciò, usa il comando:

mysql> INSERT INTO testdb.students (name, surname)
VALUES ("Andrea", "Rossi"),
("Manuel", "Blasi"),
("Federico", "Verdi"),
("Claudio", "Conte"),
("Francesco", "Rossi");

Inserito questo set di dati, potrai verificarne la presenza in tabella tramite il comando SELECT e l'opzione *(ALL):

mysql> SELECT * FROM testdb.students;

L'output dovrebbe essere il seguente:

Output
	+--------------+-----------+---------+
	| badge_number | name      | surname |
	+--------------+-----------+---------+
	|            1 | Andrea    | Rossi   |
	|            2 | Manuel    | Blasi   |
	|            3 | Federico  | Verdi   |
	|            4 | Claudio   | Conte   |
	|            5 | Francesco | Rossi   |
	+--------------+-----------+---------+
	5 rows in set (0,00 sec)

Terminata la verifica del corretto funzionamento e popolamento del database creato, puoi chiudere MySQL usando il comando:

mysql> exit

Ora puoi passare alla creazione della applicazione con Laravel e al creare la configurazione che la connetterà al database.

Creare una nuova applicazione Laravel

La creazione dell'applicazione Laravel verrà avviata utilizzando la componente Composer. Essa fornisce uno specifico comando che permette di costruire una app basata sui framework esistenti e sui sistemi di gestione dei contenuti.

Per cominciare, sposta il focus del terminale sulla tua home directory:

$ cd ~

Ora, crea una nuova directory, che nell'esempio nomineremo con lo stesso nome del database:

$ composer create-project --prefer-dist laravel/laravel testdb

Se hai eseguito tutti i passi precedenti correttamente, l'output dovrebbe essere simile al seguente:


	Output
	Creating a "laravel/laravel" project at "./testdb"
	Installing laravel/laravel (v9.1.5)
	  - Installing laravel/laravel (v9.1.5): Extracting archive
	Created project in /home/driel/testdb
	> @php -r "file_exists('.env') || copy('.env.example', '.env');"
	Loading composer repositories with package information
	Updating dependencies
	. . .
	Package manifest generated successfully.
	78 packages you are using are looking for funding.
	Use the `composer fund` command to find out more!
	> @php artisan vendor:publish --tag=laravel-assets --ansi --force
	No publishable resources for tag [laravel-assets].
	Publishing complete.
	> @php artisan key:generate --ansi
	Application key set successfully.
	. . .

A questo punto, accedi alla directory del progetto e verifica che le componenti siano state correttamente installate, tramite il comando:

$ cd testdb
$ php artisan

L'output dovrebbe essere simile:

Laravel Framework 9.26.1

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display help for the given command. When no command is given display help for the list command
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi|--no-ansi  Force (or disable --no-ansi) ANSI output
  -n, --no-interaction  Do not ask any interactive question
      --env[=ENV]       The environment the command should run under
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug



  ...

Se otterrai un output simile, avrai ottenuto la conferma del corretto funzionamento di Laravel sul tuo server.

Configurare Laravel

Modificare la configurazione di Laravel è possibile da un file che si trova all'interno della directory della applicazione. Inoltre, utilizzando Composer, verrà creato un nuovo "ambiente" per ogni nuova applicazione, ognuno con una propria configurazione personalizzata.

Per maggiore chiarezza, ti segnaliamo l'ordine in cui vengono applicate le configurazioni.

  1. Configurazione generale di Laravel, file .config
  2. Configurazione dell'environment, file .env
Ciò comporta che, se avessi dei parametri di configurazione diversi, tra il file generico e quello dell'ambiente, quello ritenuto "valido" sarebbe quello dell'ambiente, in quanto quella modifica al parametro verrebbe applicata per ultima.

Passando alla modifica della configurazione, potrai usare un editor di testo come nano per lavorare sul file di configurazione dell'ambiente:

$ cd testdb
$ nano .env

Aperto il file, troveremo diverse opzioni che consentiranno di impostare alcune funzionalità base della tua app.

(IMPORTANTE: Essendoci contenute informazioni sensibili sul DB e su altre componenti fondamentali, è bene tu non condividere i parametri all'interno di questo file.)

Le variabili che richiederanno subito dei parametri per permettere un corretto funzionamento dell'ambiente, saranno quelle associate alla App e al Database:

  • APP_NAME: nome dell'applicazione web
  • APP_ENV: ambiente di esecuzione della applicazione
  • APP_KEY: chiave usata per cifrare dati sensibili tramite funzioni di hashing, impostata di default grazie alla installazione via Composer
  • APP_DEBUG: se mostrare informazioni di debug nel lato client
  • APP_URL: URL dell'applicazione
  • DB_DATABASE: nome del database
  • DB_USERNAME: username per connettersi al db
  • DB_PASSWORD: password per connettersi al db

Nel caso in cui non venga apportata alcuna modifica a questi parametri, Laravel applicherà una configurazione di default adatta a un ambiente locale. Nell'ottica di voler preparare una applicazione che giri su un server fruibile da altri utenti, ti mostreremo un esempio di come si potrebbe cambiare la configurazione.

L'opzione legata al debug della applicazione è strettamente legata alla tua necessità:

  • Se installata in un ambiente di sviluppo o testing, potrai lasciarla impostata per ottenere informazioni di debug durante i test del tuo applicativo. Il parametro sull'environment dovrà essere impostato su development o su testing in questo caso.
  • Se installata in un ambiente di produzione, l'opzione dovrebbe essere disattivata per non consentire a utenti esterni di vedere informazioni che potrebbero esporre le vulnerabilità della tua applicazione. Il parametro d'ambiente dovrà essere impostato su production.

 

La variabile APP_KEY contiene una chiave generata in automatico durante l'installazione. Nel caso in cui volessi generarne una nuova, usa il comando:

$ php artisan key:generate

Per concludere questa parte di configurazione iniziale, ti mostriamo un modello di come dovrebbe apparire il tuo files dopo aver impostato questi primi parametri:


APP_NAME=TestDB
APP_ENV=development
APP_KEY=yourkey
APP_DEBUG=true
APP_URL=http://yourdomain_or_IP

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=privileged_user
DB_PASSWORD=password

Salva e chiudi il file per memorizzare le modifiche. Nel caso di nano ti basterà utilizzare i tasti CTRL+X e premere Invio

Conclusa l'impostazione della configurazione di Laravel, occorrerà modificare il server per renderlo accessibile da browser esterni. Ciò è possibile tramite Nginx.

Impostare Nginx

Dopo l'installazione mostrata, Laravel sarà stato installato su una tua directory locale e non sarà ottimale utilizzare tale percorso per un web server accessibile agli altri.

Un primo step è, quindi, spostare la cartella dell'applicazione nel percorso /var/www: esso è il percorso di default per le applicazioni web che lavorano su Nginx.

Usa, in primis, il comando move di Ubuntu, con una sintassi simile:

$ sudo mv sudo mv ~/testdb /var/www/testdb

Ora, imposta i permessi per consentire allo user del server web di accedere alle cartelle storage e cache, dove Laravel salva i file generati dall'applicazione:

$ sudo chown -R www-data:www-data /var/www/testdb/storage
$ sudo chown -R www-data.www-data /var/www/testdb/bootstrap/cache

Sistemati i permessi, l'ultimo step è creare un virtual host per permettere a Nginx di servire i contenuti. In primis, crea un nuovo file di configurazione di tale virtual host, all'interno della directory sites-available di Nginx.

Per far ciò, usa il comando:

$ sudo nano /etc/nginx/sites-available/testdb

Ora, copia queste impostazioni nel tuo file, modificando solo le parti di server_name e root, in base alle caratteristiche della tua applicazione.


	server {
    listen 80;
    server_name yourdomain_or_IP;
    root /var/www/testdb/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

Salvato e chiuso il file, crea un collegamento alla cartella del tuo sito in sites-enabled:

sudo ln -s /etc/nginx/sites-available/testdb /etc/nginx/sites-enabled/

Per verificare gli eventuali errori sintattici della configurazione, digita nel terminale:

$ sudo nginx -t

Un output di una corretta configurazione dovrebbe essere il seguente:

$
	Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
$ nginx: configuration file /etc/nginx/nginx.conf test is successful

Per applicare i cambiamenti, ricarica Nginx:

$ sudo systemctl reload nginx

Per verificare il funzionamento lato client, collegati al dominio del tuo server e dovresti visualizzare una pagina simile:

Pagina iniziale Laravel

Completato il tutorial fino a qui, avrai terminato la costruzione dello "scheletro" della tua applicazione web. L'ultimo step sarà la personalizzazione delle pagine della tua applicazione.

Personalizzare la pagina principale

Per accedere al percorso principale della applicazione, occorrerà aprire il file situato nel percorso routes/web.php , tramite comando:

$ sudo nano routes/web.php

Il contenuto di default del file principale sarà:

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Applicando alcune modifiche, potrai permettere l'esecuzione di alcune query relative al tuo database o personalizzare la pagina come meglio credi.

Approfondisci le funzionalità che Laravel permette di implementare, attraverso la Documentazione di Laravel.

Conclusioni

Al termine di questo tutorial, avrai installato correttamente il framework Laravel e le componenti ad esso collegate e sarai pronto a sviluppare la tua prima web app con Laravel. Sarai inoltre stato in grado di costruire un ambiente e un database specifico per l'esecuzione della tua applicazione.

Nella prossima guida di questa serie imparerai a creare dei modelli per le entità, di cui avrai bisogno nella tua applicazione web sviluppata con Laravel.