Introduzione
Laravel è un framework per applicazioni web che include un set di strumenti e risorse integrati per sviluppare moderne applicazioni PHP. È noto per la sua affidabilità, prestazioni, efficienza, modularità e sicurezza. Grazie alle sue varie funzionalità integrate, Laravel ha registrato un'incredibile crescita di popolarità. Molti sviluppatori stanno adottando Laravel per semplificare il processo di sviluppo web.
Questa guida mostrerà come installare e configurare una nuova applicazione Laravel su Ubuntu 20.04.
Laravel su Ubuntu
Useremo Composer, un gestore delle dipendenze PHP, per scaricare e gestire Laravel. Per installare Composer segui le istruzioni di questo tutorial. Il server Nginx servirà l'applicazione. Creerà un'applicazione Laravel dimostrativa utilizzando il database MySQL.
Questa guida richiede alcuni prerequisiti. Assumiamo che tu abbia già un server Ubuntu 20.04 configurato correttamente e funzionante. Come riferimento, ecco una guida rapida su come configurare un server Ubuntu. È inoltre richiesto di avere lo stack LEMP (Linux, Nginx, MySQL e PHP) installato e configurato. Abbiamo una guida dettagliata su come installare e configurare lo stack LEMP.
Poiché installeremo vari pacchetti, sono richiesti i permessi di root. Nel caso di Ubuntu, l'utente root è disabilitato per impostazione predefinita. Pertanto, abbiamo bisogno di accedere a un utente non root con privilegi sudo. Ecco come concedere i permessi sudo ad altri utenti.
Passo 1 – Installazione dei moduli PHP
Prima di installare Laravel, abbiamo bisogno di alcuni importanti moduli PHP per il framework. Questi moduli sono direttamente disponibili nei repository dei pacchetti predefiniti di Ubuntu. Questi moduli supportano funzionalità come la codifica dei caratteri, XML e la matematica di precisione.
Per prima cosa, aggiorna la cache di APT e installa i pacchetti:
|
1 2 |
$ sudo apt update $ sudo apt install php-mbstring php-xml php-bcmath |
Passo 2 – Creazione di un database per l'applicazione
Per dimostrare la funzionalità di Laravel, creeremo un'applicazione per una lista di viaggi che mostra l'elenco dei luoghi che l'utente vorrebbe visitare e un elenco di luoghi che sono già stati visitati. Possiamo memorizzare questi dati in una tabella place con i campi name (nome della località) e visited (che contrassegna come visited o nonvisited). Un campo aggiuntivo presenterà un identificativo univoco per ogni voce. Per connettere i dati con la nostra applicazione Laravel, creeremo un utente MySQL dedicato e gli concederemo i permessi completi sul database travellist.
La libreria nativa PHP di MySQL mysqlnd non supporta più caching_sha2_authentication. Pertanto, dobbiamo impostare il nostro database con il metodo di autenticazione mysql_native_password. Accedi alla shell di MySQL come utente root:
|
1 |
$ sudo mysql |
Successivamente, crea un nuovo database chiamato travellist:
|
1 |
> CREATE DATABASE travellist; |
Dopodiché, crea un utente dedicato travellist_user con una password adeguata:
|
1 |
> CREATE USER 'travellist_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Assegna all'utente travellist_user i permessi completi sul database travellist. Questo impedirà inoltre all'utente di creare e modificare qualsiasi altro database sul server:
|
1 |
> GRANT ALL ON travellist.* TO 'travellist_user'@'%'; |
Esci dalla shell di MySQL:
|
1 |
> exit |
Mettiamo alla prova il nuovo utente. Il seguente comando effettuerà l'accesso alla shell di MySQL come utente travellist_user. Il flag -p richiederà la password dell'utente:
|
1 |
$ mysql -u travellist_user -p |
Stampa tutti i database disponibili. Come configurato in precedenza, dovrebbe mostrare solo travellist e information_schema solo:
|
1 |
> SHOW DATABASES; |
Successivamente, dobbiamo creare la tabella dei dati places. Esegui la seguente istruzione MySQL:
|
1 2 3 4 5 6 |
> CREATE TABLE travellist.places ( id INT AUTO_INCREMENT, name VARCHAR(255), visited BOOLEAN, PRIMARY KEY(id) ); |
Popoliamo la tabella con alcuni dati di esempio:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
> INSERT INTO travellist.places (name, visited) VALUES ("Tokyo", false), ("Delhi", true), ("Shanghai", false), ("Moscow", true), ("Lisbon", true), ("Denver", false), ("Berlin", false), ("Istanbul", false), ("Rio", true), ("Beijing", false), ("Helsinki", false); |
Vediamo se i dati sono stati memorizzati con successo nel database:
|
1 |
> SELECT * FROM travellist.places; |
Come possiamo vedere, la tabella di test è popolata con dati validi. Ora possiamo uscire dalla shell di MySQL:
|
1 |
> exit |
Passaggio 3 – Creazione di una nuova app Laravel
Siamo ora pronti a creare una nuova applicazione Laravel utilizzando Composer. Useremo travellist come applicazione demo. Questa applicazione mostrerà l'elenco delle località dal database MySQL, dimostrando la configurazione di base di Laravel. Vai alla directory home dell'utente:
|
1 |
$ cd ~ |
Il passo successivo consiste nel creare una nuova applicazione Laravel utilizzando Composer. Verrà creata una directory dedicata travellist con un'applicazione Laravel essenziale con le impostazioni predefinite. Esegui il seguente comando:
|
1 |
$ composer create-project --prefer-dist laravel/laravel travellist |
Una volta creata l'app, possiamo verificare se tutti i componenti sono stati installati con successo:
|
1 2 |
$ cd travellist $ php artisan |
L'output verifica che tutti i file dell'applicazione siano al loro posto. Assicura inoltre che tutti gli strumenti da riga di comando di Laravel siano funzionanti. Tuttavia, richiede ancora la configurazione dell'app per impostare il database e alcune modifiche extra.
Passaggio 4 – Configurazione di Laravel
Tutti i file di configurazione di Laravel sono memorizzati all'interno di una directory denominata config all'interno della directory principale dell'app. Inoltre, quando si installa Laravel con Composer, viene creato anche un file di ambiente. Questo contiene varie impostazioni specifiche per l'ambiente corrente. I valori dichiarati al suo interno avranno la precedenza sui valori impostati nei normali file di configurazione in config.
Ogni installazione unica richiederà il proprio file di ambiente per definire valori come le impostazioni di connessione al database, l'URL dell'app, le opzioni di debug, ecc. Nota che il file di ambiente contiene informazioni sensibili come le credenziali del database, le chiavi di sicurezza, ecc. Ecco perché si raccomanda vivamente di non condividere mai questo file pubblicamente.
Apri il file di ambiente con un editor di testo:
|
1 |
$ nano .env |
Ecco un codice di ambiente di esempio:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
APP_NAME=TravelList APP_ENV=development APP_KEY=<unique_app_key> APP_DEBUG=true APP_URL=http://<domain_or_ip> LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=travellist DB_USERNAME=travellist_user DB_PASSWORD=password123 |
Analizziamo i valori:
APP_NAME: Questo campo descrive il nome dell'applicazione. Questo nome verrà utilizzato per notifiche e messaggi.APP_ENV: L'ambiente corrente dell'applicazione.APP_KEY: Questa chiave viene generata automaticamente durante l'installazione di Laravel tramite Composer. Viene utilizzata per generare salt e hash. Non è necessario modificarla.APP_DEBUG: Attivazione/disattivazione della modalità di debug. Quando è attiva, mostrerà le informazioni di debug sul lato client.APP_URL: URL di base dell'app. Viene utilizzato anche per generare i link dell'applicazione.DB_DATABASE: Il nome del database. In questo caso, sarà il database dedicato che abbiamo creato.DB_USERNAME: Il nome utente per connettersi al database.DB_PASSWORD: La password per connettersi al database.
Una volta apportate le modifiche, salva il file e chiudi l'editor.
Passaggio 5 – Configurazione di Nginx
Abbiamo installato con successo Laravel in una cartella locale della directory home dell'utente. Questa configurazione funziona bene per l'ambiente di sviluppo locale. Tuttavia, non è consigliabile implementarla per i server web aperti a internet pubblico.
Il nostro prossimo passo è spostare l'applicazione in /var/www in quanto è la posizione abituale per le app web in esecuzione su Nginx. Usa il comando mv per spostare travellist in /var/www/travellist:
|
1 |
$ sudo mv ~/travellist /var/www/travellist |
Successivamente, assegna all'utente l'accesso in scrittura alle cartelle storage e cache . Queste sono le posizioni dei file generati dall'app Laravel:
|
1 2 |
$ sudo chown -R www-data.www-data /var/www/travellist/storage $ sudo chown -R www-data.www-data /var/www/travellist/bootstrap/cache |
I file dell'applicazione sono ora al loro posto. Tuttavia, dobbiamo dire a Nginx di servire il contenuto. Crea un nuovo file di configurazione del virtual host:
|
1 |
$ sudo nano /etc/nginx/sites-available/travellist |
Ecco un esempio di impostazioni consigliate per un'applicazione Laravel in esecuzione su Nginx:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
server { listen 80; server_name <domain_or_ip>; root /var/www/travellist/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/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } |
È il momento di attivare il nuovo file di configurazione del virtual host. Crea un collegamento simbolico alla directory sites-enabled :
|
1 |
$ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/ |
Il seguente comando Nginx verificherà la presenza di errori di sintassi nei file di configurazione:
|
1 |
$ sudo nginx -t |
Quindi, ricarica Nginx:
|
1 |
$ sudo systemctl reload nginx |
L'applicazione dovrebbe ora essere disponibile utilizzando il nome di dominio o l'indirizzo IP (come definito dalla direttiva server_name):
Passo 6 – Personalizzazione della pagina principale
Con l'applicazione Laravel configurata, possiamo ora iniziare a lavorarci. A scopo dimostrativo, è giunto il momento di creare una pagina di esempio che mostri i dati di esempio della tabella del database places. Per prima cosa, apri il file delle rotte principali in un editor di testo:
|
1 |
$ nano routes/web.php |
Il file conterrà alcuni contenuti per impostazione predefinita. Qui, le rotte sono definite utilizzando il metodo statico (Route::get). Riceve un path e una funzione di callback come argomenti.
Sostituisci il codice con il seguente:
|
1 2 3 4 5 6 7 |
<?php use Illuminate\Support\Facades\DB; Route::get('/', function () { $visited = DB::select('select * from places where visited = ?', [1]); $togo = DB::select('select * from places where visited = ?', [0]); return view('travellist', ['visited' => $visited, 'togo' => $togo ] ); }); |
Salva il file e chiudi l'editor. Successivamente, creeremo il layout per mostrare all'utente i risultati della query del database. Crea un nuovo file all'interno di resource/views:
|
1 |
$ nano resources/views/travellist.blade.php |
Nel codice seguente, abbiamo creato due liste di luoghi a seconda del valore di visited e togo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<html> <head> <title>Lista di viaggio</title> </head> <body> <h1>La mia lista dei desideri di viaggio</h1> <h2>Posti da visitare</h2> <ul> @foreach ($togo as $newplace) <li>{{ $newplace->name }}</li> @endforeach </ul> <h2>Già visitati</h2> <ul> @foreach ($visited as $place) <li>{{ $place->name }}</li> @endforeach </ul> </body> </html> |
Salva il file e chiudi l'editor. Ora, accedi nuovamente alla pagina dell'app web:
Voilà! Ora abbiamo un'applicazione Laravel funzionante che utilizza un database MySQL per i contenuti.
Considerazioni finali
In questo tutorial, abbiamo mostrato come configurare un'applicazione Laravel su uno stack LEMP in esecuzione su un server Ubuntu 20.04. Abbiamo anche mostrato come personalizzare la rotta predefinita per interrogare il contenuto del database e visualizzare i risultati in una vista personalizzata. Per ulteriori informazioni su Laravel, consulta la documentazione ufficiale su views, routes, e supporto al database.
L'installazione di questo tutorial viene eseguita su una macchina virtuale standalone. Tuttavia, puoi anche distribuire Laravel su stack LEMP su Docker.
Buona programmazione!









Commenti
Ancora nessun commento. Scrivi il primo.