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.