Come installare Laravel su Ubuntu 20.04

Tutto ciò che devi sapere per distribuire un'applicazione web Laravel su una macchina Ubuntu 20.04 LTS

Laravel è un framework PHP open source molto popolare con la sintassi espressiva ed elegante utilizzata per progettare applicazioni Web moderne e belle. Laravel mira a eliminare il dolore dallo sviluppo web e renderlo un'esperienza divertente e creativa, trasformando gli sviluppatori web in artigiani web.

In questa guida imparerai come installare Laravel con lo stack LAMP su un server Ubuntu 20.04 per far funzionare la tua applicazione web.

Prerequisiti

Per seguire questa guida, avrai bisogno di un server Ubuntu 20.04 LTS ed essere loggato come a sudo utente. Prima di iniziare, aggiorna e aggiorna i pacchetti Ubuntu 20.04 eseguendo:

sudo apt update && sudo apt upgrade

Installazione della pila LAMPADA

LAMP è l'acronimo di l sistema operativo inux, UN server web pache, m database ySQL e P Linguaggio di programmazione HP. Siamo già su Ubuntu 20.04 che spunta lo stack Linux in LAMP. Quindi installeremo il resto dei tre pacchetti per completare lo stack LAMP per la nostra applicazione Laravel.

Non è disponibile alcun meta-pacchetto per installare lo stack LAMP nei repository di Ubuntu 20.04. Ma possiamo usare una piccola caratteristica di adatto gestore di pacchetti chiamato task. Le attività sono indicate utilizzando il nome dell'attività disponibile con un cadetto (^) in allegato.

sudo apt install lamp-server^

Questo comando cercherà i file dell'elenco dei pacchetti per tutto il campo "Attività:" e installerà tutti i pacchetti con "lamp-server" nel loro campo attività. Quindi lo stack LAMP composto da pacchetti Apache, MySQL e PHP con tutte le loro dipendenze verrà installato sul tuo server Ubuntu.

Configura firewall

Una volta installato lo stack LAMP, devi anche configurare il firewall semplice (UFW) e modificarne le regole in modo da poter accedere al server Apache da Internet.

UFW fornisce semplici profili applicativi che possono essere utilizzati per modificare le regole e attivare il traffico sulle porte di rete. Eseguire il comando seguente per elencare tutte le applicazioni che accedono alle porte di rete:

sudo ufw elenco di app

Vedrai un output come questo:

Applicazioni disponibili: Apache Apache Full Apache Secure OpenSSH

Le porte di rete aperte da questi profili sul tuo server Ubuntu 20.04 sono elencate di seguito:

  • Apache: questo profilo apre solo la porta 80 (consente il traffico HTTP)
  • Apache Full: questo profilo apre entrambi 80 & 443 porte (consente il traffico HTTP e HTTPS)
  • Apache Secure: questo profilo apre solo la porta 443 (consente il traffico HTTPS)
  • OpenSSH: questo profilo apre la porta 22 che consente il protocollo SSH

È necessario abilitare il profilo "Apache Full" che consentirà il traffico verso il server Web Apache da Internet. Inoltre, dovrai anche abilitare il profilo "OpenSSH" che consente il traffico sulla porta 22 (SSH) sul tuo server Ubuntu 20.04. Se abiliti UFW senza consentire il profilo "OpenSSH", non sarai in grado di connetterti al tuo server utilizzando SSH.

Per modificare la regola UFW e consentire il traffico sulla porta 80 e 22, correre:

sudo ufw allow 'Apache Full' sudo ufw allow 'OpenSSH'

Quindi abilitare il firewall UFW utilizzando il seguente comando:

sudo ufw enable

Potresti ricevere un messaggio che dice "il comando potrebbe interrompere le connessioni ssh esistenti. Procedere con le operazioni (y|n)?”. premere per continuare poiché abbiamo già aggiunto una regola per consentire SSH in UFW.

Ora puoi accedere alla pagina Web predefinita di Apache utilizzando l'indirizzo IP del tuo server Ubuntu da Internet. Per farlo, apri il browser e digita l'indirizzo IP del tuo server Ubuntu 20.04 nella barra degli URL e premi invio.

//Your_ubuntu_server_ip

Questa pagina conferma che il server Web Apache funziona correttamente e che le regole UFW sono impostate correttamente.

Configurazione del database MySQL per Laravel

Laravel 7 rende estremamente semplice l'interazione con i database attraverso i vari backend di database supportati come MySQL versione 5.6+, PostgreSQL 9.4+, SQLite 3.8.8+ e SQL Server 2017+. Abbiamo già installato l'ultimo pacchetto MySQL con il lampada-separatore^ compito. Quindi in questa sezione configureremo il server MySQL e poi vedremo come impostare un nuovo utente e database MySQL per l'applicazione Laravel.

Configura MySQL

Il database MySQL viene fornito con uno script di sicurezza preinstallato che può essere utilizzato per rimuovere alcune impostazioni predefinite non sicure. Si consiglia di eseguire questo script prima di distribuire l'applicazione Laravel.

sudo mysql_secure_installation

Il comando precedente eseguirà lo script di sicurezza che ti chiederà una serie di domande per la configurazione del server MySQL.

Innanzitutto, ti verrà chiesto se desideri configurare il CONVALIDA PASSWORD collegare. Questo plugin controlla la tua password e la classifica come sicura o non sicura in base al livello della politica di convalida della password che sceglierai presto. quindi premi se vuoi abilitare questo plugin.

Produzione: Protezione della distribuzione del server MySQL. Connessione a MySQL utilizzando una password vuota. Il COMPONENTE CONVALIDA PASSWORD può essere utilizzato per testare le password e migliorare la sicurezza. Controlla la forza della password e consente agli utenti di impostare solo le password sufficientemente sicure. Vuoi configurare il componente CONVALIDA PASSWORD? Premere y|Y per Sì, qualsiasi altro tasto per No: 

Quindi impostare il livello della politica di convalida della password inserendo 0, 1 o 2 a seconda di quanto vuoi creare la password per i tuoi database.

Produzione: Esistono tre livelli di criteri di convalida della password: LOW Lunghezza >= 8 MEDIUM Lunghezza >= 8, numerico, caratteri misti e caratteri speciali STRONG Lunghezza >= 8, numerico, misto, caratteri speciali e file dizionario Immettere 0 = LOW, 1 = MEDIO e 2 = FORTE: 2

Successivamente, ti verrà chiesto di inserire una nuova password per l'utente root di MySQL. Inserisci una password adatta per la tua root MySQL. Il plug-in VALIDATE PASSWORD ti darà la forza stimata della tua password in base al tuo livello di convalida della password. premere per continuare con la password fornita.

Produzione: Si prega di impostare la password per root qui. Nuova password: Reinserire la nuova password: Forza stimata della password: 100 Vuoi continuare con la password fornita? (Premi y|Y per Sì, qualsiasi altro tasto per No): 

premere per il resto delle richieste, rimuoveranno alcuni utenti anonimi e i database di prova, disabiliteranno l'accesso root remoto e ricaricheranno le nuove impostazioni per il server MySQL. Al termine, testare il database eseguendo:

sudo mysql

Il comando precedente aprirà la console MySQL, collegandosi al database MySQL come radice utente. Vedrai un output come questo:

Produzione: Benvenuto nel monitor MySQL. I comandi terminano con ; o \g. Il tuo ID di connessione MySQL è 10 Versione server: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2020, Oracle e/o sue affiliate. Tutti i diritti riservati. Oracle è un marchio registrato di Oracle Corporation e/o delle sue affiliate. Gli altri nomi possono essere marchi dei rispettivi proprietari. Digita 'aiuto;' o '\h' per chiedere aiuto. Digitare '\c' per cancellare l'istruzione di input corrente. mysql>

Potresti aver notato che non era necessario inserire la password che hai impostato per l'utente root di MySQL. Questo perché il metodo di autenticazione predefinito per l'utente root amministrativo di MySQL è caching_sha2_authentication invece del mysql_native_password metodo che utilizza una password per accedere.

Quindi, per impostazione predefinita, puoi accedere solo come utente root di MySQL con sudo utenti abilitati che fungono da sicurezza aggiuntiva per il server MySQL. Ma la libreria PHP MySQL non supporta caching_sha2_authentication metodo. Quindi dobbiamo usare mysql_native_password quando creiamo un nuovo utente per Laravel poiché utilizza le password per connettersi e interagire con il database.

Crea un nuovo utente e database MySQL

È sempre una buona pratica creare un nuovo utente e database specificamente per la tua applicazione invece di utilizzare l'utente root di MySQL e i database di test. Quindi configureremo un nuovo utente MySQL chiamato laravel_user e un database chiamato laravel. Se hai seguito il tutorial fino a questo punto, dovresti avere la console MySQL aperta. Per creare l'utente chiamato laravel_user eseguire la seguente query nella console MySQL:

Nota: Sostituisci il testpass nella query MySQL sottostante con una password complessa.

CREA UTENTE 'laravel_user'@'%' IDENTIFICATO CON mysql_native_password DA 'testpass';

Quindi, crea un database chiamato laravel per la nostra applicazione Laravel eseguendo questa query:

CREA DATABASE laravel;

Solo l'utente root di MySQL ha le autorizzazioni per il database laravel appena creato. Concedi tutte le autorizzazioni su laravel database per il laravel_user eseguendo:

CONCEDERE TUTTO SU laravel.* A 'laravel_user'@'%';

Quindi, ora abbiamo un nuovo utente MySQL e un database, esci dalla console MySQL eseguendo:

USCITA;

Metti alla prova il tuo nuovo utente MySQL accedendo alla console MySQL con esso, per farlo esegui questo comando nel terminale:

mysql -u laravel_user -p

Notare il -P flag nel comando, ti chiederà la password che hai usato durante la creazione del laravel_user (testpass nella domanda). Dopo aver effettuato l'accesso alla console MySQL come laravel_user, confermare che l'utente ha accesso al laravel database eseguendo:

MOSTRA BANCHE DATI;
Produzione: +--------------------+ | Banca dati | +--------------------+ | laravel | | schema_informazione | +--------------------+ 2 righe in serie (0,01 sec)

L'output sopra conferma che l'utente MySQL laravel_user ha i permessi per il database laravel. Uscire dalla console MySQL usando il USCITA; query in modo da poter procedere alla creazione dell'applicazione DemoApp Laravel.

Installazione di Laravel

Il framework Laravel utilizza Composer per scaricare e gestire le sue dipendenze. Quindi, dobbiamo installare Composer sulla nostra macchina Ubuntu 20.04 prima di poter creare un'applicazione Laravel.

Installa compositore

Composer è uno strumento di gestione delle dipendenze per PHP, che semplifica notevolmente l'installazione e l'aggiornamento dei framework e delle librerie PHP. Vedremo come installare Composer rapidamente in questo tutorial in modo da poterlo utilizzare per scaricare e gestire il framework Laravel.

È necessario installare alcuni pacchetti aggiuntivi richiesti da Composer per funzionare come php-cli per eseguire script PHP nel terminale e decomprimere per aiutare Composer a estrarre i pacchetti. Installali entrambi eseguendo:

sudo apt install php-cli unzip

Quindi, per installare Composer globalmente, scarica lo script di installazione di Composer con arricciare e installalo usando il seguente comando:

curl -sS //getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Infine, verifica che il compositore sia installato correttamente eseguendo:

compositore
 __ / ____/___ ____ ___ ____ ____ ____ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / /_ / / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Compositore versione 1.10.8 2020-06- 24 21:23:30 Utilizzo: comando [opzioni] [argomenti]

Questo output conferma che Composer funziona correttamente sul tuo server Ubuntu 20.04, puoi iniziare a usarlo per installare e gestire framework e librerie PHP.

Crea un'applicazione Laravel

Abbiamo praticamente tutto il necessario per creare un'applicazione Laravel sul nostro server Ubuntu 20.04 ad eccezione di alcune estensioni PHP. Installa queste estensioni mancanti utilizzando il seguente comando:

sudo apt install php-mbstring php-xml php-bcmath php-zip php-json

Ora possiamo installare Laravel e creare una nuova applicazione Laravel con l'aiuto di Composer. Innanzitutto, assicurati di essere nella home directory del tuo utente:

cd ~

Quindi crea un nuovo progetto Laravel usando il Composer's creare-progetto comando:

compositore create-project --prefer-dist laravel/laravel LaravelApp

Il comando sopra creerà un nuovo progetto chiamato LaravelApp e installerà e configurerà anche Laravel Framework per te. Vedrai un output simile a questo:

Produzione: Creazione di un progetto "laravel/laravel" in "./LaravelApp" Installazione di laravel/laravel (v7.12.0) Installazione di laravel/laravel (v7.12.0): Download (100%) Progetto creato in /home/ath/LaravelApp @php - r "file_exists('.env') || copy('.env.example', '.env');" Caricamento dei repository del compositore con le informazioni sui pacchetti Aggiornamento delle dipendenze (incluso require-dev) Operazioni sui pacchetti: 97 installazioni, 0 aggiornamenti, 0 rimozioni Installazione di voku/portable-ascii (1.5.2): Download (100%) Installazione di symfony/polyfill-ctype (v1 .17.1): Download (100%) Installazione di phpoption/phpoption (1.7.4): Download (100%) Installazione di vlucas/phpdotenv (v4.1.7): Download (100%) Installazione di symfony/css-selector (v5.1.2) : Download (100%) ....

Al termine dell'installazione, vai alla directory principale dell'applicazione e quindi esegui Laravel's artigiano comando per verificare che tutti i componenti siano installati correttamente:

cd LaravelApp/ php artigiano
Produzione: Laravel Framework 7.18.0 Utilizzo: comando [opzioni] [argomenti] Opzioni: -h, --help Visualizza questo messaggio di aiuto -q, --quiet Non emette alcun messaggio -V, --version Visualizza questa versione dell'applicazione --ansi Forza l'output ANSI --no-ansi Disabilita l'output ANSI -n, --no-interaction Non porre alcuna domanda interattiva --env[=ENV] L'ambiente in cui il comando deve essere eseguito -v|vv|vvv, --verbose Aumenta la verbosità dei messaggi: 1 per l'output normale, 2 per l'output più dettagliato e 3 per il debug ....

Questo output conferma che l'installazione è avvenuta correttamente e che tutti i file sono a posto e che gli strumenti da riga di comando di Laravel funzionano correttamente. Tuttavia, dobbiamo ancora configurare l'applicazione per configurare il database e alcune altre impostazioni.

Configura l'applicazione Laravel

I file di configurazione di Laravel si trovano in una directory chiamata config all'interno della directory principale dell'applicazione. Inoltre, quando abbiamo installato Laravel tramite Composer, ha creato un file di ambiente chiamato ".env" nella directory principale dell'applicazione. Il file di ambiente include le configurazioni specifiche dell'ambiente e ha la precedenza sulle impostazioni nei normali file di configurazione che si trovano all'interno della directory config.

Nota: il file di configurazione dell'ambiente contiene informazioni sensibili sul tuo server come password del database, chiavi dell'applicazione Laravel ecc. Pertanto, non dovrebbe mai essere condiviso pubblicamente.

Ora modificheremo il .env file per modificare la configurazione e aggiungere le credenziali del database. Apri il file usando l'editor nano eseguendo:

nano .env

Ci sono molte variabili di configurazione in questo .env file. Non è necessario modificarli tutti, poiché Composer ha configurato automaticamente la maggior parte delle impostazioni. Quindi, ecco l'elenco di alcune variabili di configurazione primarie che devi conoscere:

  • NOME DELL'APPLICAZIONE: il nome dell'applicazione utilizzato per notifiche e messaggi, quindi lo imposteremo su "LaravelApp".
  • APP_ENV: Questa variabile viene utilizzata per indicare l'ambiente dell'applicazione corrente. Può essere impostato su ambienti locali, di sviluppo, di test o di produzione. Per ora lo imposteremo nell'ambiente di sviluppo.
  • APP_KEY: Chiave dell'applicazione univoca utilizzata per creare sali e hash per l'app Web. Viene generato automaticamente quando installi Laravel tramite Composer, quindi non è necessario modificarlo.
  • APP_DEBUG: può essere impostato su true o false, a seconda che si desideri visualizzare gli errori sul lato client. Impostalo su false quando passi all'ambiente di produzione.
  • URL_APP: URL o IP di base per l'applicazione, cambialo con il tuo nome di dominio se ne hai uno per la tua app Laravel oppure mantienilo intatto per ora.
  • DB_DATABASE: Nome del database che si desidera utilizzare con l'applicazione Laravel. Utilizzeremo il database MySQL "laravel" che abbiamo creato durante la configurazione di MySQL.
  • DB_USERNAME: Nome utente per connettersi al database. Useremo l'utente MySQL 'laravel_user' che abbiamo creato.
  • DB_PASSWORD: La password per connettersi al database.
 APP_NAME= LaravelApp APP_ENV= sviluppo APP_KEY= base64:Application_unique_key APP_DEBUG=vero APP_URL= //dominio_o_IP LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME= laravel_user DB_PASSWORD= testpass

Apportare modifiche al .env file di conseguenza e quando hai finito di modificare, salva ed esci dal file usando CTRL+X quindi premere e premi invio per confermare. Ora non resta che configurare il server Apache e creare un host virtuale per la nostra applicazione Laravel.

Configurazione del server Web Apache

Abbiamo installato Laravel nella cartella locale della home directory dell'utente. Anche se questo funziona perfettamente per lo sviluppo locale, è pratica consigliata avere la directory dell'applicazione web situata in /var/www. Il motivo per cui non abbiamo installato Laravel in /var/www direttamente è perché è di proprietà di root e Composer non dovrebbe essere usato con sudo.

Quindi usa il mv comando per spostare la cartella dell'applicazione Laravel e il suo contenuto in /var/www:

sudo mv ~/Laravel/ /var/www

La directory LaravelApp è di proprietà dell'utente, quindi puoi ancora modificare e apportare modifiche ai file senza utilizzare il sudo comando. Ma il server web Apache ha bisogno dell'accesso alla cache e alle directory di archiviazione dell'applicazione poiché Laravel memorizza i file generati dall'applicazione al suo interno. Cambia il proprietario di queste cartelle in www-dati utente che utilizza il chown comando:

sudo chown -R www-data.www-data /var/www/LaravelApp/storage sudo chown -R www-data.www-data /var/www/LaravelApp/bootstrap/cache

Dopo aver cambiato il proprietario di queste directory, abilita l'Apache's mod_rewrite poiché è richiesto da Laravel per trasformare correttamente gli URL da interpretare tramite la sua funzione di routing tramite .htaccess file.

sudo a2enmod riscrivi

Successivamente, dobbiamo configurare un host virtuale per l'applicazione Laravel. Le configurazioni dell'host virtuale si trovano in /etc/apache2/sites-available. Modificheremo il file host virtuale predefinito per distribuire l'applicazione Laravel. Apri il file di configurazione dell'host virtuale predefinito utilizzando l'editor nano:

sudo nano /etc/apache2/sites-available/000-default.conf

Cambia la radice del documento da /var/www/html a /var/www/LaravelApp/public e aggiungi il seguente frammento sotto la riga DocumentRoot:

 ConsentiIgnora tutto 

Tuo 000-default.conf dovrebbe assomigliare a qualcosa di simile ora con pochi commenti.

 ServerAdmin webmaster@localhost DocumentRoot /var/www/LaravelApp/public AllowOverride All ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combinato 

Riavvia il server Web Apache eseguendo il comando seguente:

sudo systemctl riavvia apache2

Ora vai al tuo browser e digita l'indirizzo IP del tuo server Ubuntu 20.04. Vedrai la pagina iniziale di Laravel invece della pagina di benvenuto predefinita di Apache.

Supponendo che tu abbia seguito questa guida finora, dovresti avere un'applicazione Laravel funzionante con un database MySQL chiamato laravel per questo. Da questo punto, puoi iniziare a sviluppare la tua applicazione Laravel da solo. Per saperne di più sul framework Laravel e sul suo utilizzo, visita la pagina dei documenti di Laravel.