Hvordan installere Laravel på Ubuntu 20.04

Alt du trenger å vite for å distribuere en Laravel-nettapplikasjon på en Ubuntu 20.04 LTS-maskin

Laravel er et veldig populært PHP-rammeverk med åpen kildekode med den uttrykksfulle og elegante syntaksen som brukes til å designe moderne og vakre nettapplikasjoner. Laravel tar sikte på å ta smerten ut av nettutvikling og gjøre det til en hyggelig og kreativ opplevelse, og gjøre webutviklere til netthåndverkere.

I denne veiledningen skal du lære hvordan du installerer Laravel med LAMP-stack på en Ubuntu 20.04-server for å få nettapplikasjonen din i gang.

Forutsetninger

For å følge denne veiledningen trenger du en Ubuntu 20.04 LTS-server og være logget på som en sudo bruker. Før vi begynner, oppdater og oppgrader Ubuntu 20.04-pakkene ved å kjøre:

sudo apt oppdatering && sudo apt oppgradering

Installere LAMPE Stack

LAMPE er et akronym for L inux operativsystem, EN pache webserver, M ySQL-database og P HP programmeringsspråk. Vi er allerede på Ubuntu 20.04 som markerer Linux i LAMP-stabelen. Så vi skal installere resten av tre pakker for å fullføre LAMP-stabelen for Laravel-applikasjonen vår.

Det er ingen meta-pakke tilgjengelig for å installere LAMP-stack i Ubuntu 20.04-lagrene. Men vi kan bruke en fin liten funksjon av apt pakkebehandler kalt oppgaver. Oppgaver er merket med navnet på den tilgjengelige oppgaven med en kadett (^) lagt til den.

sudo apt install lamp-server^

Denne kommandoen vil søke i pakkelistefilene etter alle "Task:"-feltet og installere alle pakker med "lamp-server" i oppgavefeltet. Så LAMP-stakken som består av Apache-, MySQL- og PHP-pakker med alle deres avhengigheter vil bli installert på Ubuntu-serveren din.

Konfigurer brannmur

Når du har installert LAMP-stack, må du også konfigurere den ukompliserte brannmuren (UFW) og endre reglene slik at du får tilgang til Apache-serveren fra internett.

UFW gir enkle applikasjonsprofiler som kan brukes til å endre regler og veksle mellom trafikk på nettverksportene. Kjør følgende kommando for å liste alle applikasjonene som har tilgang til nettverksportene:

sudo ufw app liste

Du vil se en utgang som dette:

Tilgjengelige applikasjoner: Apache Apache Full Apache Secure OpenSSH

Nettverksportene disse profilene åpner på Ubuntu 20.04-serveren er oppført nedenfor:

  • Apache: Denne profilen åpner bare porten 80 (tillater HTTP-trafikk)
  • Apache Full: Denne profilen åpner begge 80 & 443 porter (tillater HTTP- og HTTPS-trafikk)
  • Apache Secure: Denne profilen åpner kun porten 443 (tillater HTTPS-trafikk)
  • OpenSSH: Denne profilen åpner port 22 som tillater SSH-protokoll

Du må aktivere 'Apache Full'-profilen som vil tillate trafikk til Apache-nettserveren fra internett. I tillegg må du også aktivere 'OpenSSH'-profilen som tillater trafikk på port 22 (SSH) på Ubuntu 20.04-serveren. Hvis du aktiverer UFW uten å tillate 'OpenSSH'-profil, vil du ikke kunne koble til serveren din ved å bruke SSH.

For å endre UFW-regelen og tillate trafikk på havn 80 og 22, løpe:

sudo ufw tillate 'Apache Full' sudo ufw tillate 'OpenSSH'

Aktiver deretter UFW-brannmuren ved å bruke følgende kommando:

sudo ufw aktiver

Du kan få en melding som sier "kommando kan forstyrre eksisterende ssh-tilkoblinger. Fortsett med operasjoner (y|n)?". trykk Y for å fortsette siden vi allerede har lagt til en regel for å tillate SSH i UFW.

Nå kan du få tilgang til Apaches standardwebside ved å bruke IP-adressen til Ubuntu-serveren din fra internett. For å gjøre det, åpne nettleseren din og skriv inn IP-adressen til Ubuntu 20.04-serveren i URL-linjen og trykk enter.

//Din_ubuntu_server_ip

Denne siden bekrefter at Apache-nettserveren kjører riktig og at UFW-reglene er riktig konfigurert.

Sette opp MySQL-database for Laravel

Laravel 7 gjør interaksjon med databaser ekstremt enkel på tvers av de ulike database-backends den støtter, for eksempel MySQL versjon 5.6+, PostgreSQL 9.4+, SQLite 3.8.8+ og SQL Server 2017+. Vi har allerede den nyeste MySQL-pakken installert med lampe-sever^ oppgave. Så i denne delen vil vi konfigurere MySQL-serveren og deretter se på hvordan du setter opp en ny MySQL-bruker og database for Laravel-applikasjonen.

Konfigurer MySQL

MySQL-databasen kommer med et forhåndsinstallert sikkerhetsskript som kan brukes til å fjerne noen usikre standardinnstillinger. Det anbefales at du kjører dette skriptet før du distribuerer Laravel-applikasjonen.

sudo mysql_secure_installation

Kommandoen ovenfor vil utføre sikkerhetsskriptet som vil stille deg en rekke spørsmål for å konfigurere MySQL-serveren.

Først vil du bli spurt om du vil sette opp VALIDER PASSORD plugg inn. Denne plugin-en sjekker passordet ditt og rangerer dem som sikre eller usikre basert på passordvalideringspolicynivået du snart vil velge. Så trykk Y hvis du vil aktivere denne plugin-en.

Produksjon: Sikring av MySQL-serverdistribusjon. Koble til MySQL med et tomt passord. VALIDER PASSORDKOMPONENT kan brukes til å teste passord og forbedre sikkerheten. Den sjekker styrken til passordet og lar brukerne angi bare de passordene som er sikre nok. Vil du sette opp VALIDATE PASSWORD-komponenten? Trykk y|Y for Ja, en hvilken som helst annen tast for Nei: Y

Angi deretter policynivået for passordvalidering ved å skrive inn 0, 1 eller 2 avhengig av hvor sterkt du vil opprette passordet ditt for databasene dine.

Produksjon: Det er tre nivåer for passordvalideringspolicy: LAV Lengde >= 8 MEDIUM Lengde >= 8, numerisk, blandet store og små bokstaver og spesialtegn STERK Lengde >= 8, numerisk, blandet store og små bokstaver, spesialtegn og ordbokfil Vennligst skriv inn 0 = LAV, 1 = MIDDELS og 2 = STERK: 2

Deretter vil du bli bedt om å angi et nytt passord for MySQL root-bruker. Skriv inn et passende passord for MySQL-roten din. VALIDATE PASSWORD-pluginen vil gi deg den estimerte styrken til passordet ditt i henhold til passordvalideringsnivået ditt. trykk Y for å fortsette med passordet du oppga.

Produksjon: Vennligst angi passordet for root her. Nytt passord: Skriv inn nytt passord på nytt: Estimert styrke på passordet: 100 Ønsker du å fortsette med passordet som er oppgitt?(Trykk y|Y for Ja, en hvilken som helst annen tast for Nei) : Y

trykk Y for resten av meldingene, vil de fjerne noen anonyme brukere og testdatabasene, deaktivere ekstern rotpålogging og laste inn de nye innstillingene for MySQL-serveren på nytt. Når du er ferdig, test databasen ved å kjøre:

sudo mysql

Kommandoen ovenfor vil åpne MySQL-konsollen og koble til MySQL-databasen som rot bruker. Du vil se en utgang som dette:

Produksjon: Velkommen til MySQL-skjermen. Kommandoer slutter med ; eller \g. Din MySQL-tilkoblings-ID er 10 Serverversjon: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2020, Oracle og/eller dets tilknyttede selskaper. Alle rettigheter forbeholdt. Oracle er et registrert varemerke for Oracle Corporation og/eller dets tilknyttede selskaper. Andre navn kan være varemerker for sine respektive eiere. Skriv 'hjelp;' eller '\h' for hjelp. Skriv '\c' for å slette gjeldende inndatasetning. mysql>

Du har kanskje lagt merke til at du ikke trengte å skrive inn passordet du har angitt for MySQL root-bruker. Det er fordi standard autentiseringsmetode for administrativ MySQL root-bruker er caching_sha2_autentisering i stedet for mysql_native_password metode som bruker et passord for å logge på.

Så som standard kan du bare logge på som MySQL root-bruker med sudo aktiverte brukere som fungerer som ekstra sikkerhet for MySQL-serveren. Men MySQL PHP-bibliotek støtter ikke caching_sha2_autentisering metode. Derfor må vi bruke mysql_native_password metode når vi oppretter en ny bruker for Laravel da den bruker passord for å koble til og samhandle med databasen.

Opprett en ny MySQL-bruker og -database

Det er alltid en god praksis å opprette en ny bruker og database spesifikt for applikasjonen din i stedet for å bruke MySQL-rotbruker- og testdatabaser. Så vi skal sette opp en ny MySQL-bruker kalt laravel_user og en database kalt laravel. Hvis du har fulgt veiledningen til dette punktet, bør du ha MySQL-konsollen åpen. For å opprette brukeren kalt laravel_user kjør følgende spørring i MySQL-konsollen:

Merk: Bytt ut testpass i MySQL-spørringen nedenfor med et sterkt passord.

LAG BRUKER 'laravel_user'@'%' IDENTIFISERT MED mysql_native_password VED 'testpass';

Deretter oppretter du en database kalt laravel for Laravel-applikasjonen vår ved å kjøre denne spørringen:

LAG DATABASE laravel;

Bare MySQL root-brukeren har tillatelser til den nyopprettede databasen laravel. Gi alle tillatelsene over laravel database til laravel_user ved å kjøre:

GIR ALLE PÅ laravel.* TIL 'laravel_user'@'%';

Så vi har nå en ny MySQL-bruker og en database, gå ut av MySQL-konsollen ved å kjøre:

EXIT;

Test din nye MySQL-bruker ved å logge på MySQL-konsollen med den, for å gjøre det, kjør denne kommandoen i terminal:

mysql -u laravel_user -s

Legg merke til -s flagg i kommandoen, vil den be deg om passordet du brukte mens du opprettet laravel_user (testpass i spørringen). Etter at du har logget på MySQL-konsollen som laravel_user, bekreft at brukeren har tilgang til laravel database ved å kjøre:

VIS DATABASER;
Produksjon: +----------------------------+ | Database | +----------------------------+ | laravel | | informasjonsskjema | +--------------------+ 2 rader i sett (0,01 sek)

Ovennevnte utgang bekrefter at MySQL-brukeren laravel_user har tillatelser til databasen laravel. Gå ut av MySQL-konsollen ved å bruke EXIT; spørring slik at vi kan fortsette å lage DemoApp Laravel-applikasjonen.

Installerer Laravel

Laravel-rammeverket bruker Composer til å laste ned og administrere avhengighetene. Så vi må installere Composer på Ubuntu 20.04-maskinen vår før vi kan lage en Laravel-applikasjon.

Installer Composer

Composer er et avhengighetsbehandlingsverktøy for PHP, som gjør installasjon og oppdatering av PHP-rammeverket og -bibliotekene så mye enklere. Vi skal se på hvordan du installerer Composer raskt i denne opplæringen, slik at vi kan bruke den til å laste ned og administrere Laravel-rammeverket.

Du må installere noen tilleggspakker som kreves av Composer for å fungere som f.eks php-cli å kjøre PHP-skript i terminalen og pakke opp for å hjelpe Composer med å trekke ut pakkene. Installer begge ved å kjøre:

sudo apt installer php-cli unzip

For å installere Composer globalt, last ned Composer-installasjonsskriptet med krølle og installer den ved å bruke følgende kommando:

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

Til slutt, kontroller at komponisten er installert riktig ved å kjøre:

komponist
 ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / /_ / / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Komponistversjon 1.10.8 2020-06- 24 21:23:30 Bruk: kommando [alternativer] [argumenter]

Denne utgangen bekrefter at Composer fungerer som den skal på Ubuntu 20.04-serveren din, du kan begynne å bruke den til å installere og administrere PHP-rammeverk og -biblioteker.

Lag en Laravel-applikasjon

Vi har stort sett alt som kreves for å lage en Laravel-applikasjon på Ubuntu 20.04-serveren vår bortsett fra noen få PHP-utvidelser. Installer disse manglende utvidelsene ved å bruke følgende kommando:

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

Nå kan vi installere Laravel og lage en ny Laravel-applikasjon ved hjelp av Composer. Først må du kontrollere at du er i brukerens hjemmekatalog:

cd ~

Lag deretter et nytt Laravel-prosjekt ved å bruke komponistens skape-prosjekt kommando:

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

Kommandoen ovenfor vil opprette et nytt prosjekt kalt LaravelApp, og den vil også installere og konfigurere Laravel Framework for deg. Du vil se en utgang som ligner denne:

Produksjon: Opprette et "laravel/laravel"-prosjekt på "./LaravelApp" Installere laravel/laravel (v7.12.0) Installere laravel/laravel (v7.12.0): Laster ned (100%) Opprettet prosjekt i /home/ath/LaravelApp @php - r "file_exists('.env') || copy('.env.example', '.env');" Laster komponistlagre med pakkeinformasjon Oppdatering av avhengigheter (inkludert require-dev) Pakkeoperasjoner: 97 installasjoner, 0 oppdateringer, 0 fjerninger Installering av voku/portable-ascii (1.5.2): Laster ned (100 %) Installerer symfony/polyfill-ctype (v1) .17.1): Laster ned (100%) Installerer phpoption/phpoption (1.7.4): Laster ned (100%) Installerer vlucas/phpdotenv (v4.1.7): Laster ned (100%) Installerer symfony/css-selector (v5.1.2) : Laster ned (100%) ....

Når installasjonen er fullført, gå til programmets rotkatalog og kjør deretter Laravel håndverker kommando for å bekrefte at alle komponenter er riktig installert:

cd LaravelApp/ php artisan
Produksjon: Laravel Framework 7.18.0 Bruk: kommando [alternativer] [argumenter] Alternativer: -h, --help Vis denne hjelpemeldingen -q, --quiet Ikke skriv ut noen melding -V, --version Vis denne applikasjonsversjonen --ansi Force ANSI output --no-ansi Deaktiver ANSI output -n, --no-interaction Ikke still noen interaktive spørsmål --env[=ENV] Miljøet kommandoen skal kjøre under -v|vv|vvv, --verbose Øk omfanget av meldinger: 1 for normal utgang, 2 for mer detaljert utgang og 3 for feilsøking ....

Denne utgangen bekrefter at installasjonen var vellykket og at alle filene er på plass og at Laravel-kommandolinjeverktøyene fungerer som de skal. Vi må imidlertid fortsatt konfigurere applikasjonen for å sette opp databasen og noen få andre innstillinger.

Konfigurer Laravel-applikasjonen

Laravel-konfigurasjonsfilene er plassert i en katalog som heter konfig inne i programmets rotkatalog. I tillegg, da vi installerte Laravel gjennom Composer, opprettet den en miljøfil kalt '.env' i programmets rotkatalog. Miljøfilen inkluderer de miljøspesifikke konfigurasjonene, og den har forrang over innstillingene i de vanlige konfigurasjonsfilene som ligger inne i konfigurasjonskatalogen.

Merk: Miljøkonfigurasjonsfilen inneholder sensitiv informasjon om serveren din som databasepassord, Laravel-applikasjonsnøkler osv. Den bør derfor aldri deles offentlig.

Vi vil nå redigere .env fil for å endre konfigurasjonen og legge til databaselegitimasjonen til den. Åpne filen med nanoredigering ved å kjøre:

nano .env

Det er mange konfigurasjonsvariabler i dette .env fil. Vi trenger ikke å endre hver enkelt av dem, siden Composer har konfigurert de fleste innstillingene automatisk. Så her er listen over noen primære konfigurasjonsvariabler som du må vite om:

  • APP_NAME: Applikasjonsnavnet som brukes for varsling og meldinger, så vi skal sette det til 'LaravelApp'.
  • APP_ENV: Denne variabelen brukes til å indikere gjeldende applikasjonsmiljø. Den kan settes til lokale, utviklings-, test- eller produksjonsmiljøer. Vi skal sette det til utviklingsmiljøet for nå.
  • APP_KEY: Unik applikasjonsnøkkel som brukes til å lage salter og hasher for nettappen. Den genereres automatisk når du installerer Laravel via Composer, så det er ikke nødvendig å endre dette.
  • APP_DEBUG: Det kan settes til enten sant eller usant, avhengig av om du vil vise feil på klientsiden. Sett den til usann når du flytter til produksjonsmiljøet.
  • APP_URL: Base URL eller IP for applikasjonen, endre den til domenenavnet ditt hvis du har en for Laravel-appen din, ellers behold den urørt inntil videre.
  • DB_DATABASE: Navn på databasen du ønsker å bruke med Laravel-applikasjonen. Vi skal bruke MySQL-databasen 'laravel' vi opprettet mens vi konfigurerte MySQL.
  • DB_USERNAME: Brukernavn for å koble til databasen. Vi skal bruke MySQL-brukeren 'laravel_user' vi opprettet.
  • DB_PASSWORD: Passordet for å koble til databasen.
 APP_NAME= LaravelApp APP_ENV= utvikling APP_KEY= base64:Application_unique_key APP_DEBUG=ekte APP_URL= //domene_eller_IP LOG_CHANNEL=stabel DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME= laravel_user DB_PASSWORD= testpass

Gjør endringer i .env fil tilsvarende, og når du er ferdig med å redigere, lagre og avslutt filen ved å bruke CTRL+X trykk deretter Y og trykk enter for å bekrefte. Nå gjenstår det bare å konfigurere Apache-serveren og lage en virtuell vert for vår Laravel-applikasjon.

Sette opp Apache Web Server

Vi har installert Laravel i den lokale mappen i brukerens hjemmekatalog. Selv om dette fungerer helt fint for lokal utvikling, anbefales det å ha nettapplikasjonskatalog plassert i /var/www. Grunnen til at vi ikke installerte Laravel i /var/www direkte er fordi det eies av root og Composer ikke skal brukes med sudo.

Så bruk mv kommandoen for å flytte Laravel-applikasjonsmappen og innholdet til /var/www:

sudo mv ~/Laravel/ /var/www

LaravelApp-katalogen eies av brukeren, så du kan fortsatt redigere og gjøre endringer i filene uten å bruke sudo kommando. Men Apache-nettserveren trenger tilgang til hurtigbufferen og lagringskatalogene til applikasjonen, da Laravel lagrer applikasjonsgenererte filer i den. Endre eieren av disse mappene til www-data bruker som bruker chown kommando:

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

Etter å ha endret eieren av disse katalogene, aktiver Apache-ene mod_rewrite ettersom det kreves av Laravel å transformere URL-er på riktig måte for å bli tolket av rutefunksjonen via .htaccess fil.

sudo a2enmod omskrive

Deretter må vi sette opp en virtuell vert for Laravel-applikasjonen. De virtuelle vertskonfigurasjonene er plassert på /etc/apache2/sites-available. Vi skal redigere standard virtuell vertsfil for å distribuere Laravel-applikasjonen. Åpne standard konfigurasjonsfilen for virtuell vert ved hjelp av nanoredigering:

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

Endre dokumentroten fra /var/www/html til /var/www/LaravelApp/public og legg til følgende kodebit under DocumentRoot-linjen:

 Tillat Overstyr alle 

Din 000-default.conf bør se noe slikt ut nå med få kommentarer.

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

Start Apache-webserveren på nytt ved å kjøre følgende kommando:

sudo systemctl start apache2 på nytt

Gå nå til nettleseren din og skriv inn IP-adressen til din Ubuntu 20.04-server. Du vil se Laravel-startsiden i stedet for standard Apache-velkomstside.

Forutsatt at du har fulgt denne veiledningen så langt, bør du ha en fungerende Laravel-applikasjon med en MySQL-database kalt laravel for det. Fra dette tidspunktet kan du begynne å utvikle din Laravel-applikasjon på egen hånd. For å lære mer om Laravel-rammeverket og bruken av det, besøk Laravel-dokumentsiden.