Alt hvad du behøver at vide for at implementere en Laravel-webapplikation på en Ubuntu 20.04 LTS-maskine
Laravel er en meget populær open source PHP-ramme med den udtryksfulde og elegante syntaks, der bruges til at designe moderne og smukke webapplikationer. Laravel sigter efter at tage smerten ud af webudvikling og gøre det til en fornøjelig og kreativ oplevelse, der gør webudviklere til webhåndværkere.
I denne vejledning skal du lære, hvordan du installerer Laravel med LAMP-stack på en Ubuntu 20.04-server for at få din webapplikation op at køre.
Forudsætninger
For at følge denne vejledning skal du bruge en Ubuntu 20.04 LTS-server og være logget ind som en sudo
bruger. Før vi begynder, skal du opdatere og opgradere Ubuntu 20.04-pakkerne ved at køre:
sudo apt opdatering && sudo apt opgradering
Installation af LAMPE Stack
LAMPE er et akronym for L inux operativsystem, EN pache webserver, M ySQL-database og P HP programmeringssprog. Vi er allerede på Ubuntu 20.04, som markerer Linux i LAMP-stakken. Så vi skal installere resten af tre pakker for at fuldføre LAMP-stak til vores Laravel-applikation.
Der er ingen meta-pakke tilgængelig til at installere LAMP-stak i Ubuntu 20.04-lagrene. Men vi kan bruge en fin lille funktion af passende
pakkehåndtering kaldet opgaver. Opgaver er angivet med navnet på den tilgængelige opgave med en kadet (^
) vedlagt den.
sudo apt installer lamp-server^
Denne kommando vil søge i pakkelistefilerne efter alle "Task:"-feltet og installere alle pakker med "lamp-server" i deres opgavefelt. Så LAMP-stakken bestående af Apache-, MySQL- og PHP-pakker med alle deres afhængigheder vil blive installeret på din Ubuntu-server.
Konfigurer Firewall
Når du har installeret LAMP-stack, skal du også konfigurere den ukomplicerede firewall (UFW) og ændre dens regler, så du kan få adgang til Apache-serveren fra internettet.
UFW leverer enkle applikationsprofiler, der kan bruges til at ændre regler og skifte trafik på netværksportene. Kør følgende kommando for at få vist alle de programmer, der har adgang til netværksportene:
sudo ufw app liste
Du vil se et output som dette:
Tilgængelige applikationer: Apache Apache Full Apache Secure OpenSSH
De netværksporte, som disse profiler åbner på din Ubuntu 20.04-server, er angivet nedenfor:
- Apache: Denne profil åbner kun porten
80
(tillader HTTP-trafik) - Apache Full: Denne profil åbner begge
80
&443
porte (tillader HTTP- og HTTPS-trafik) - Apache Secure: Denne profil åbner kun porten
443
(tillader HTTPS-trafik) - OpenSSH: Denne profil åbner port
22
som tillader SSH-protokol
Du skal aktivere 'Apache Full'-profilen, som tillader trafik til Apache-webserveren fra internettet. Derudover skal du også aktivere 'OpenSSH'-profilen, som tillader trafikken på havnen 22
(SSH) på din Ubuntu 20.04-server. Hvis du aktiverer UFW uden at tillade 'OpenSSH' profil, ville du ikke være i stand til at oprette forbindelse til din server ved hjælp af SSH.
For at ændre UFW-reglen og tillade trafik på havn 80
og 22
, løb:
sudo ufw tillade 'Apache Full' sudo ufw tillad 'OpenSSH'
Aktiver derefter UFW-firewallen ved hjælp af følgende kommando:
sudo ufw aktivere
Du får muligvis en prompt, der siger "kommando kan forstyrre eksisterende ssh-forbindelser. Fortsæt med operationer (y|n)?”. Trykke Y
for at fortsætte, da vi allerede har tilføjet en regel for at tillade SSH i UFW.
Nu kan du få adgang til Apaches standardwebside ved hjælp af IP-adressen på din Ubuntu-server fra internettet. For at gøre det skal du åbne din browser og indtaste IP-adressen på din Ubuntu 20.04-server i URL-linjen og trykke på enter.
//Din_ubuntu_server_ip
Denne side bekræfter, at Apache-webserveren kører korrekt, og at UFW-reglerne er konfigureret korrekt.
Opsætning af MySQL-database for Laravel
Laravel 7 gør interaktion med databaser ekstremt enkel på tværs af de forskellige database-backends, den understøtter, såsom MySQL version 5.6+, PostgreSQL 9.4+, SQLite 3.8.8+ og SQL Server 2017+. Vi har allerede den seneste MySQL-pakke installeret med lampeafbryder^
opgave. Så i dette afsnit vil vi konfigurere MySQL-serveren og derefter se på, hvordan man opsætter en ny MySQL-bruger og database til Laravel-applikationen.
Konfigurer MySQL
MySQL-databasen leveres med et forudinstalleret sikkerhedsscript, der kan bruges til at fjerne nogle usikre standardindstillinger. Det anbefales, at du kører dette script, før du implementerer dit Laravel-program.
sudo mysql_secure_installation
Ovenstående kommando vil udføre sikkerhedsscriptet, som vil stille dig en række spørgsmål til konfiguration af MySQL-serveren.
Først bliver du spurgt, om du vil konfigurere VALIDER ADGANGSKODE
plugin. Dette plugin tjekker din adgangskode og rangerer den som sikker eller usikker baseret på det politikniveau for adgangskodevalidering, du snart vil vælge. Så tryk Y hvis du vil aktivere dette plugin.
Produktion: Sikring af MySQL-serverinstallationen. Opretter forbindelse til MySQL ved hjælp af en tom adgangskode. VALIDER PASSWORD COMPONENT kan bruges til at teste adgangskoder og forbedre sikkerheden. Det kontrollerer adgangskodens styrke og giver brugerne mulighed for kun at indstille de adgangskoder, der er sikre nok. Vil du konfigurere VALIDATE PASSWORD-komponenten? Tryk på y|Y for Ja, enhver anden tast for Nej: Y
Indstil derefter adgangskodevalideringspolitikniveauet ved enten at indtaste 0
, 1
eller 2
afhængigt af hvor stærkt du vil oprette din adgangskode til dine databaser.
Produktion: Der er tre niveauer af adgangskodevalideringspolitik: LAV Længde >= 8 MIDDELLængde >= 8, numerisk, blandet store og små bogstaver og specialtegn STÆRK Længde >= 8, numerisk, blandet store og små bogstaver, specialtegn og ordbogsfil Indtast venligst 0 = LAV, 1 = MIDDEL og 2 = STÆRK: 2
Dernæst bliver du bedt om at indtaste en ny adgangskode til MySQL root-bruger. Indtast en passende adgangskode til din MySQL-rod. VALIDATE PASSWORD-pluginnet giver dig den anslåede styrke af din adgangskode i henhold til dit valideringsniveau for adgangskode. Trykke Y
for at fortsætte med den adgangskode, du har angivet.
Produktion: Indstil venligst adgangskoden til root her. Ny adgangskode: Indtast ny adgangskode igen: Anslået styrke af adgangskoden: 100 Ønsker du at fortsætte med den angivne adgangskode? (Tryk på y|Y for Ja, en hvilken som helst anden tast for Nej) : Y
Trykke Y
for resten af meddelelserne vil de fjerne nogle anonyme brugere og testdatabaserne, deaktivere eksternt root-login og genindlæse de nye indstillinger for MySQL-serveren. Når du er færdig, test din database ved at køre:
sudo mysql
Ovenstående kommando åbner MySQL-konsollen og forbinder til MySQL-databasen som rod bruger. Du vil se et output som dette:
Produktion: Velkommen til MySQL-skærmen. Kommandoer slutter med ; eller \g. Dit MySQL-forbindelses-id er 10 Serverversion: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2020, Oracle og/eller dets tilknyttede selskaber. Alle rettigheder forbeholdes. Oracle er et registreret varemærke tilhørende Oracle Corporation og/eller dets datterselskaber. Andre navne kan være varemærker tilhørende deres respektive ejere. Skriv 'hjælp;' eller '\h' for at få hjælp. Skriv '\c' for at rydde den aktuelle inputsætning. mysql>
Du har måske bemærket, at du ikke behøvede at indtaste den adgangskode, du har indstillet til MySQL root-bruger. Det skyldes, at standardgodkendelsesmetoden for administrativ MySQL root-bruger er caching_sha2_godkendelse
i stedet for mysql_native_password
metode, der bruger en adgangskode til at logge ind.
Så som standard kan du kun logge ind som MySQL root-bruger med sudo
aktiverede brugere, der fungerer som ekstra sikkerhed for MySQL-serveren. Men MySQL PHP-biblioteket understøtter ikke caching_sha2_godkendelse
metode. Derfor skal vi bruge mysql_native_password
metode, når vi opretter en ny bruger til Laravel, da den bruger adgangskoder til at forbinde og interagere med databasen.
Opret en ny MySQL-bruger og -database
Det er altid en god praksis at oprette en ny bruger og database specifikt til din applikation i stedet for at bruge MySQL root-bruger- og testdatabaser. Så vi vil oprette en ny MySQL-bruger kaldet laravel_user
og en database kaldet laravel
. Hvis du har fulgt vejledningen til dette punkt, bør du have MySQL-konsollen åben. For at oprette brugeren kaldet laravel_user
kør følgende forespørgsel i MySQL-konsollen:
Bemærk: Udskift testpass
i nedenstående MySQL-forespørgsel med en stærk adgangskode.
OPRET BRUGER 'laravel_user'@'%' IDENTIFICERET MED mysql_native_password VED 'testpass';
Opret derefter en database kaldet laravel
til vores Laravel-applikation ved at køre denne forespørgsel:
OPRET DATABASE laravel;
Kun MySQL root-brugeren har tilladelser til den nyoprettede database laravel. Giv alle tilladelser over laravel
database til laravel_user
ved at køre:
GIV ALLE PÅ laravel.* TIL 'laravel_user'@'%';
Så vi har nu en ny MySQL-bruger og en database, forlad MySQL-konsollen ved at køre:
AFSLUT;
Test din nye MySQL-bruger ved at logge ind på MySQL-konsollen med den, for at gøre det, kør denne kommando i terminalen:
mysql -u laravel_user -s
Læg mærke til -s
flag i kommandoen, vil den bede dig om den adgangskode, du brugte, mens du oprettede laravel_user
(testpass
i forespørgslen). Når du har logget på MySQL-konsollen som laravel_user
, bekræft, at brugeren har adgang til laravel
database ved at køre:
VIS DATABASER;
Produktion: +---------------------------+ | Database | +---------------------------+ | laravel | | informationsskema | +--------------------+ 2 rækker i sæt (0,01 sek.)
Ovenstående output bekræfter, at MySQL-brugeren laravel_user
har tilladelser til databasen laravel
. Afslut MySQL-konsollen ved hjælp af AFSLUT;
forespørgsel, så vi kan fortsætte med at oprette DemoApp Laravel-applikationen.
Installation af Laravel
Laravel-rammen bruger Composer til at downloade og administrere dens afhængigheder. Så vi skal installere Composer på vores Ubuntu 20.04-maskine, før vi kan oprette en Laravel-applikation.
Installer Composer
Composer er et afhængighedshåndteringsværktøj til PHP, som gør installation og opdatering af PHP-rammerne og -biblioteker så meget nemmere. Vi skal se på, hvordan du installerer Composer hurtigt i denne tutorial, så vi kan bruge den til at downloade og administrere Laravel-rammen.
Du skal installere nogle ekstra pakker, der kræves af Composer for at fungere som f.eks php-cli
at køre PHP-scripts i terminalen og unzip
for at hjælpe Composer med at udtrække pakkerne. Installer dem begge ved at køre:
sudo apt installer php-cli unzip
For derefter at installere Composer globalt, skal du downloade Composer-installationsscriptet med krølle
og installer det ved hjælp af følgende kommando:
curl -sS //getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filnavn=komponist
Til sidst skal du kontrollere, at komponisten er installeret korrekt ved at køre:
komponist
______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / /_ / / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Komponist version 1.10.8 2020-06- 24 21:23:30 Brug: kommando [indstillinger] [argumenter]
Dette output bekræfter, at Composer fungerer korrekt på din Ubuntu 20.04-server, du kan begynde at bruge den til at installere og administrere PHP-rammer og biblioteker.
Opret en Laravel-applikation
Vi har stort set alt, der kræves for at oprette en Laravel-applikation på vores Ubuntu 20.04-server, bortset fra få PHP-udvidelser. Installer disse manglende udvidelser ved hjælp af følgende kommando:
sudo apt installer php-mbstring php-xml php-bcmath php-zip php-json
Nu kan vi installere Laravel og oprette en ny Laravel-applikation ved hjælp af Composer. Først skal du sikre dig, at du er i din brugers hjemmemappe:
cd ~
Opret derefter et nyt Laravel-projekt ved hjælp af Composer's skabe-projekt
kommando:
komponist create-project --prefer-dist laravel/laravel LaravelApp
Ovenstående kommando vil oprette et nyt projekt kaldet LaravelApp, og det vil også installere og konfigurere Laravel Framework for dig. Du vil se et output, der ligner dette:
Produktion: Oprettelse af et "laravel/laravel"-projekt på "./LaravelApp" Installation af laravel/laravel (v7.12.0) Installation af laravel/laravel (v7.12.0): Downloader (100%) Oprettet projekt i /home/ath/LaravelApp @php - r "file_exists('.env') || copy('.env.example', '.env');" Indlæser komponistlagre med pakkeoplysninger Opdatering af afhængigheder (inklusive require-dev) Pakkehandlinger: 97 installationer, 0 opdateringer, 0 fjernelser Installation af voku/portable-ascii (1.5.2): Downloader (100%) Installation af symfony/polyfill-ctype (v1) .17.1): Downloader (100%) Installation af phpoption/phpoption (1.7.4): Downloader (100%) Installation af vlucas/phpdotenv (v4.1.7): Downloader (100%) Installation af symfony/css-selector (v5.1.2) : Downloader (100%) ....
Når installationen er færdig, skal du gå til programmets rodmappe og derefter køre Laravel's håndværker
kommando for at kontrollere, at alle komponenter er installeret korrekt:
cd LaravelApp/ php håndværker
Produktion: Laravel Framework 7.18.0 Brug: kommando [options] [argumenter] Valgmuligheder: -h, --help Vis denne hjælpemeddelelse -q, --quiet Udskriv ingen besked -V, --version Vis denne applikationsversion --ansi Tving ANSI-output --no-ansi Deaktiver ANSI-output -n, --no-interaction Stil ikke noget interaktivt spørgsmål --env[=ENV] Det miljø kommandoen skal køre under -v|vv|vvv, --verbose Forøg meddelelsernes ordlyd: 1 for normal output, 2 for mere detaljeret output og 3 for debug ....
Dette output bekræfter, at installationen var vellykket, og at alle filerne er på plads, og at Laravels kommandolinjeværktøjer fungerer korrekt. Vi mangler dog stadig at konfigurere applikationen til at opsætte databasen og et par andre indstillinger.
Konfigurer Laravel-applikationen
Laravel-konfigurationsfilerne er placeret i en mappe kaldet config
inde i programmets rodmappe. Derudover, da vi installerede Laravel gennem Composer, oprettede den en miljøfil kaldet '.env' i programmets rodmappe. Miljøfilen inkluderer de miljøspecifikke konfigurationer, og den har forrang over indstillingerne i de almindelige konfigurationsfiler, der findes inde i konfigurationsmappen.
Bemærk: Miljøkonfigurationsfilen indeholder følsomme oplysninger om din server, såsom databaseadgangskoder, Laravel-applikationsnøgler osv. Den bør derfor aldrig deles offentligt.
Vi vil nu redigere .env
fil for at ændre konfigurationen og tilføje databaselegitimationsoplysningerne til den. Åbn filen ved hjælp af nano-editor ved at køre:
nano .env
Der er mange konfigurationsvariabler i dette .env
fil. Vi behøver ikke at ændre hver enkelt af dem, da Composer har konfigureret de fleste indstillinger automatisk. Så her er listen over nogle primære konfigurationsvariabler, som du skal kende til:
APP_NAME
: Applikationsnavnet, der bruges til meddelelser og beskeder, så vi vil indstille det til 'LaravelApp'.APP_ENV
: Denne variabel bruges til at angive det aktuelle applikationsmiljø. Det kan indstilles til lokale, udviklings-, test- eller produktionsmiljøer. Vi vil indstille det til udviklingsmiljøet for nu.APP_KEY
: Unik applikationsnøgle, der bruges til at skabe salte og hash til webappen. Det genereres automatisk, når du installerer Laravel via Composer, så der er ingen grund til at ændre dette.APP_DEBUG
: Den kan indstilles til enten sand eller falsk, afhængig af om du vil vise fejl på klientsiden. Indstil den til falsk, når du flytter til produktionsmiljøet.APP_URL
: Grundlæggende URL eller IP for applikationen, skift det til dit domænenavn, hvis du har et til din Laravel-app, ellers hold det urørt indtil videre.DB_DATABASE
: Navnet på den database, du ønsker at bruge med Laravel-applikationen. Vi kommer til at bruge MySQL-databasen 'laravel', vi oprettede, mens vi konfigurerede MySQL.DB_USERNAME
: Brugernavn for at oprette forbindelse til databasen. Vi kommer til at bruge MySQL-brugeren 'laravel_user', vi oprettede.DB_PASSWORD
: Adgangskoden til at oprette forbindelse til databasen.
APP_NAME=LaravelApp
APP_ENV=udvikling
APP_KEY=base64:Application_unique_key
APP_DEBUG=sand APP_URL=//domæne_eller_IP
LOG_CHANNEL=stak DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laravel_user
DB_PASSWORD=testpass
Foretag ændringer i .env
fil i overensstemmelse hermed, og når du er færdig med at redigere, skal du gemme og afslutte filen ved at bruge CTRL+X
tryk derefter på Y
og tryk på enter for at bekræfte. Nu er der kun tilbage at konfigurere Apache-serveren og oprette en virtuel vært til vores Laravel-applikation.
Opsætning af Apache Web Server
Vi har installeret Laravel i den lokale mappe i brugerens hjemmemappe. Selvom dette fungerer perfekt til lokal udvikling, anbefales det at praktisere at have webapplikationsmappen placeret i /var/www
. Grunden til, at vi ikke installerede Laravel i /var/www
direkte, fordi det ejes af root og Composer ikke bør bruges med sudo
.
Så brug mv
kommando for at flytte Laravel-applikationsmappen og dens indhold til /var/www
:
sudo mv ~/Laravel/ /var/www
LaravelApp-biblioteket ejes af brugeren, så du kan stadig redigere og foretage ændringer i filerne uden at bruge sudo
kommando. Men Apache-webserveren har brug for adgang til applikationens cache og lagringsmapper, da Laravel gemmer applikationsgenererede filer i den. Skift ejeren af disse mapper til www-data
bruger, der bruger 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
Efter at have ændret ejeren af disse mapper, skal du aktivere Apache'erne mod_rewrite
da det er påkrævet af Laravel at transformere URL'er korrekt til at blive fortolket af dens routingfunktion via .htaccess
fil.
sudo a2enmod omskrivning
Dernæst skal vi konfigurere en virtuel vært til Laravel-applikationen. De virtuelle værtskonfigurationer er placeret på /etc/apache2/sites-available
. Vi vil redigere den virtuelle standardværtsfil for at implementere Laravel-applikationen. Åbn den virtuelle værtsstandardkonfigurationsfil ved hjælp af nano-editor:
sudo nano /etc/apache2/sites-available/000-default.conf
Skift dokumentroden fra /var/www/html
til /var/www/LaravelApp/public
og tilføj følgende uddrag under DocumentRoot-linjen:
TilladTilsidesæt alle
Dine 000-default.conf
skulle se sådan ud nu 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 kombineret
Genstart Apache-webserveren ved at køre følgende kommando:
sudo systemctl genstart apache2
Gå nu til din browser og skriv IP-adressen på din Ubuntu 20.04-server. Du vil se Laravels startside i stedet for Apaches standardvelkomstside.
Forudsat at du har fulgt denne vejledning indtil videre, bør du have en fungerende Laravel-applikation med en MySQL-database kaldet laravel
for det. Fra dette tidspunkt kan du begynde at udvikle din Laravel-applikation på egen hånd. Besøg Laravel-dokumentsiden for at lære mere om Laravel-rammen og dens brug.