Allt du behöver veta för att distribuera en Laravel-webbapplikation på en Ubuntu 20.04 LTS-maskin
Laravel är ett mycket populärt PHP-ramverk med öppen källkod med den uttrycksfulla och eleganta syntaxen som används för att designa moderna och vackra webbapplikationer. Laravel strävar efter att ta bort smärtan av webbutveckling och göra det till en njutbar och kreativ upplevelse, och förvandla webbutvecklare till webbhantverkare.
I den här guiden kommer du att lära dig hur du installerar Laravel med LAMP-stack på en Ubuntu 20.04-server för att få igång din webbapplikation.
Förutsättningar
För att följa den här guiden behöver du en Ubuntu 20.04 LTS-server och vara inloggad som en sudo
användare. Innan vi börjar, uppdatera och uppgradera Ubuntu 20.04-paketen genom att köra:
sudo apt uppdatering && sudo apt uppgradering
Installera LAMP Stack
LAMPA är en akronym för L inux operativsystem, A pache webbserver, M ySQL-databas och P HP programmeringsspråk. Vi är redan på Ubuntu 20.04 som markerar Linux i LAMP-stacken. Så vi kommer att installera resten av tre paket för att slutföra LAMP-stack för vår Laravel-applikation.
Det finns inget metapaket tillgängligt för att installera LAMP-stack i Ubuntu 20.04-förråden. Men vi kan använda en snygg liten funktion av benägen
pakethanteraren kallas uppgifter. Uppgifter betecknas med namnet på den tillgängliga uppgiften med en kadett (^
) bifogas till den.
sudo apt installera lamp-server^
Detta kommando kommer att söka i paketlistfilerna efter alla "Task:"-fält och installera alla paket med "lamp-server" i deras uppgiftsfält. Så LAMP-stacken som består av Apache-, MySQL- och PHP-paket med alla deras beroenden kommer att installeras på din Ubuntu-server.
Konfigurera brandvägg
När du har installerat LAMP-stack måste du också konfigurera den okomplicerade brandväggen (UFW) och ändra dess regler så att du kan komma åt Apache-servern från internet.
UFW tillhandahåller enkla applikationsprofiler som kan användas för att ändra regler och växla trafik på nätverksportarna. Kör följande kommando för att lista alla program som har åtkomst till nätverksportarna:
sudo ufw app lista
Du kommer att se en utdata som denna:
Tillgängliga applikationer: Apache Apache Full Apache Secure OpenSSH
Nätverksportarna som dessa profiler öppnar på din Ubuntu 20.04-server listas nedan:
- Apache: Denna profil öppnar bara porten
80
(tillåter HTTP-trafik) - Apache Full: Den här profilen öppnar båda
80
&443
portar (tillåter HTTP- och HTTPS-trafik) - Apache Secure: Denna profil öppnar endast porten
443
(tillåter HTTPS-trafik) - OpenSSH: Den här profilen öppnar porten
22
som tillåter SSH-protokoll
Du måste aktivera "Apache Full"-profilen som tillåter trafik till Apache-webbservern från internet. Dessutom måste du också aktivera "OpenSSH"-profilen som tillåter trafiken på porten 22
(SSH) på din Ubuntu 20.04-server. Om du aktiverar UFW utan att tillåta 'OpenSSH'-profilen skulle du inte kunna ansluta till din server med SSH.
För att ändra UFW-regeln och tillåta trafik på hamn 80
och 22
, springa:
sudo ufw tillåter 'Apache Full' sudo ufw tillåter 'OpenSSH'
Aktivera sedan UFW-brandväggen med följande kommando:
sudo ufw aktivera
Du kan få en prompt som säger "kommandot kan störa befintliga ssh-anslutningar. Fortsätt med operationer (y|n)?”. Tryck Y
att fortsätta eftersom vi redan har lagt till en regel för att tillåta SSH i UFW.
Nu kan du komma åt Apaches standardwebbsida med IP-adressen till din Ubuntu-server från internet. För att göra det öppnar du din webbläsare och skriver in IP-adressen till din Ubuntu 20.04-server i URL-fältet och trycker på Retur.
//Din_ubuntu_server_ip
Den här sidan bekräftar att Apache-webbservern körs korrekt och att UFW-reglerna är korrekt inställda.
Konfigurera MySQL-databas för Laravel
Laravel 7 gör det extremt enkelt att interagera med databaser över de olika databasbackends som den stöder såsom MySQL version 5.6+, PostgreSQL 9.4+, SQLite 3.8.8+ och SQL Server 2017+. Vi har redan det senaste MySQL-paketet installerat med lampavskiljare^
uppgift. Så i det här avsnittet kommer vi att konfigurera MySQL-servern och sedan titta på hur man ställer in en ny MySQL-användare och databas för Laravel-applikationen.
Konfigurera MySQL
MySQL-databasen levereras med ett förinstallerat säkerhetsskript som kan användas för att ta bort vissa osäkra standardinställningar. Det rekommenderas att du kör det här skriptet innan du distribuerar din Laravel-applikation.
sudo mysql_secure_installation
Ovanstående kommando kommer att köra säkerhetsskriptet som ger dig en rad frågor för att konfigurera MySQL-servern.
Först kommer du att bli tillfrågad om du vill ställa in VALIDERA LÖSENORD
plugin. Denna plugin kontrollerar ditt lösenord och rangordnar dem som säkra eller osäkra baserat på den policynivå för lösenordsvalidering som du snart kommer att välja. Så tryck Y om du vill aktivera denna plugin.
Produktion: Säkra MySQL-serverdistributionen. Ansluter till MySQL med ett tomt lösenord. VALIDERA LÖSENORDSKOMPONENT kan användas för att testa lösenord och förbättra säkerheten. Den kontrollerar lösenordets styrka och låter användarna endast ställa in de lösenord som är tillräckligt säkra. Vill du konfigurera komponenten VALIDATE PASSWORD? Tryck på y|Y för Ja, valfri annan tangent för Nej: Y
Ställ sedan in policynivån för lösenordsvalidering genom att antingen gå in 0
, 1
eller 2
beroende på hur starkt du vill skapa ditt lösenord för dina databaser.
Produktion: Det finns tre nivåer av lösenordsvalideringspolicy: LÅG Längd >= 8 MEDEL Längd >= 8, numeriska, blandade skiftlägen och specialtecken STARK Längd >= 8, numeriska, blandade skiftlägen, specialtecken och ordboksfil Vänligen ange 0 = LÅG, 1 = MEDIUM och 2 = STARK: 2
Därefter kommer du att bli ombedd att ange ett nytt lösenord för MySQL root-användare. Ange ett lämpligt lösenord för din MySQL-rot. Insticksprogrammet VALIDATE PASSWORD ger dig den uppskattade styrkan på ditt lösenord enligt din lösenordsvalideringsnivå. Tryck Y
för att fortsätta med lösenordet du angav.
Produktion: Vänligen ange lösenordet för root här. Nytt lösenord: Ange nytt lösenord igen: Uppskattad styrka för lösenordet: 100 Vill du fortsätta med det angivna lösenordet? (Tryck på y|Y för Ja, valfri annan tangent för Nej) : Y
Tryck Y
för resten av uppmaningarna kommer de att ta bort några anonyma användare och testdatabaserna, inaktivera fjärrinloggning för roten och ladda om de nya inställningarna för MySQL-servern. När du är klar, testa din databas genom att köra:
sudo mysql
Ovanstående kommando öppnar MySQL-konsolen och ansluter till MySQL-databasen som rot användare. Du kommer att se en utdata som denna:
Produktion: Välkommen till MySQL-skärmen. Kommandon slutar med ; eller \g. Ditt MySQL-anslutnings-id är 10 Serverversion: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2020, Oracle och/eller dess dotterbolag. Alla rättigheter förbehållna. Oracle är ett registrerat varumärke som tillhör Oracle Corporation och/eller dess dotterbolag. Andra namn kan vara varumärken som tillhör sina respektive ägare. Skriv 'hjälp;' eller '\h' för hjälp. Skriv '\c' för att rensa den aktuella inmatningssatsen. mysql>
Du kanske har märkt att du inte behövde ange lösenordet du har angett för MySQL root-användare. Det beror på att standardautentiseringsmetoden för administrativ MySQL-rotanvändare är caching_sha2_autentisering
istället för mysql_native_password
metod som använder ett lösenord för att logga in.
Så som standard kan du bara logga in som MySQL root-användare med sudo
aktiverade användare som fungerar som ytterligare säkerhet för MySQL-servern. Men MySQL PHP-biblioteket stöder inte caching_sha2_autentisering
metod. Därför måste vi använda mysql_native_password
metod när vi skapar en ny användare för Laravel eftersom den använder lösenord för att ansluta och interagera med databasen.
Skapa en ny MySQL-användare och databas
Det är alltid bra att skapa en ny användare och databas specifikt för din applikation istället för att använda MySQL-rotanvändar- och testdatabaser. Så vi kommer att sätta upp en ny MySQL-användare som heter laravel_user
och en databas som heter laravel
. Om du har följt handledningen till denna punkt, bör du ha MySQL-konsolen öppen. För att skapa användaren som kallas laravel_user
kör följande fråga i MySQL-konsolen:
Notera: Ersätt testpass
i MySQL-frågan nedan med ett starkt lösenord.
SKAPA ANVÄNDARE 'laravel_user'@'%' IDENTIFIERAD MED mysql_native_password AV 'testpass';
Skapa sedan en databas som heter laravel
för vår Laravel-applikation genom att köra den här frågan:
SKAPA DATABAS laravel;
Endast MySQL-rotanvändaren har behörighet till den nyskapade databasen laravel. Ge alla behörigheter över laravel
databas till laravel_user
genom att köra:
BETYD ALLA PÅ laravel.* TILL 'laravel_user'@'%';
Så vi har nu en ny MySQL-användare och en databas, avsluta MySQL-konsolen genom att köra:
UTGÅNG;
Testa din nya MySQL-användare genom att logga in på MySQL-konsolen med den, kör detta kommando i terminalen för att göra det:
mysql -u laravel_user -s
Lägg märke till -s
flagga i kommandot, kommer det att fråga dig om lösenordet du använde när du skapade laravel_user
(testpass
i frågan). Efter att du har loggat in på MySQL-konsolen som laravel_user
, bekräfta att användaren har tillgång till laravel
databas genom att köra:
VISA DATABASER;
Produktion: +----------------------------+ | Databas | +----------------------------+ | laravel | | informationsschema | +--------------------+ 2 rader i set (0,01 sek)
Ovanstående utdata bekräftar att MySQL-användaren laravel_user
har behörigheter till databasen laravel
. Avsluta MySQL-konsolen med hjälp av UTGÅNG;
fråga så att vi kan fortsätta att skapa DemoApp Laravel-applikationen.
Installerar Laravel
Laravel-ramverket använder Composer för att ladda ner och hantera dess beroenden. Så vi måste installera Composer på vår Ubuntu 20.04-maskin innan vi kan skapa en Laravel-applikation.
Installera Composer
Composer är ett beroendehanterarverktyg för PHP, vilket gör installation och uppdatering av PHP-ramverk och bibliotek så mycket enklare. Vi kommer att titta på hur du snabbt installerar Composer i den här handledningen så att vi kan använda den för att ladda ner och hantera Laravel-ramverket.
Du måste installera några ytterligare paket som krävs av Composer för att fungera som t.ex php-cli
att köra PHP-skript i terminalen och packa upp
för att hjälpa Composer att extrahera paketen. Installera båda genom att köra:
sudo apt installera php-cli unzip
För att sedan installera Composer globalt, ladda ner Composer installationsskriptet med ringla
och installera det med följande kommando:
curl -sS //getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filnamn=kompositör
Slutligen, verifiera att kompositören installerades korrekt genom att köra:
kompositör
______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / /_ / / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Kompositör version 1.10.8 2020-06- 24 21:23:30 Användning: kommando [alternativ] [argument]
Denna utdata bekräftar att Composer fungerar korrekt på din Ubuntu 20.04-server, du kan börja använda den för att installera och hantera PHP-ramverk och bibliotek.
Skapa en Laravel-applikation
Vi har i stort sett allt som krävs för att skapa en Laravel-applikation på vår Ubuntu 20.04-server förutom några PHP-tillägg. Installera dessa saknade tillägg med följande kommando:
sudo apt installera php-mbstring php-xml php-bcmath php-zip php-json
Nu kan vi installera Laravel och skapa en ny Laravel-applikation med hjälp av Composer. Se först till att du är i din användares hemkatalog:
cd ~
Skapa sedan ett nytt Laravel-projekt med hjälp av kompositörens skapa-projekt
kommando:
kompositör skapa-projekt --prefer-dist laravel/laravel LaravelApp
Ovanstående kommando kommer att skapa ett nytt projekt som kallas LaravelApp och det kommer också att installera och konfigurera Laravel Framework åt dig. Du kommer att se en utdata som liknar denna:
Produktion: Skapa ett "laravel/laravel"-projekt på "./LaravelApp" Installera laravel/laravel (v7.12.0) Installera laravel/laravel (v7.12.0): Laddar ner (100%) Skapat projekt i /home/ath/LaravelApp @php - r "file_exists('.env') || copy('.env.example', '.env');" Laddar kompositlager med paketinformation Uppdatering av beroenden (inklusive require-dev) Paketoperationer: 97 installationer, 0 uppdateringar, 0 borttagningar Installation av voku/portable-ascii (1.5.2): Laddar ner (100%) Installerar symfony/polyfill-ctype (v1) .17.1): Laddar ner (100%) Installerar phpoption/phpoption (1.7.4): Laddar ner (100%) Installerar vlucas/phpdotenv (v4.1.7): Laddar ner (100%) Installerar symfony/css-selector (v5.1.2) : Laddar ner (100%) ....
När installationen är klar, gå till programmets rotkatalog och kör sedan Laravel's hantverkare
kommando för att verifiera att alla komponenter är korrekt installerade:
cd LaravelApp/ php artisan
Produktion: Laravel Framework 7.18.0 Användning: kommando [alternativ] [argument] Alternativ: -h, --help Visa detta hjälpmeddelande -q, --quiet Mata inte ut något meddelande -V, --version Visa denna applikationsversion --ansi Forcera ANSI-utgång --no-ansi Inaktivera ANSI-utgång -n, --no-interaction Ställ ingen interaktiv fråga --env[=ENV] Miljön kommandot ska köras under -v|vv|vvv, --verbose Öka innehållet i meddelanden: 1 för normal utdata, 2 för mer utförlig utdata och 3 för felsökning ....
Denna utdata bekräftar att installationen lyckades och att alla filer är på plats och att Laravels kommandoradsverktyg fungerar korrekt. Men vi behöver fortfarande konfigurera applikationen för att ställa in databasen och några andra inställningar.
Konfigurera Laravel-applikationen
Laravels konfigurationsfiler finns i en katalog som heter config
i programmets rotkatalog. Dessutom, när vi installerade Laravel genom Composer skapade den en miljöfil som heter '.env' i programmets rotkatalog. Miljöfilen inkluderar de miljöspecifika konfigurationerna och den har företräde framför inställningarna i de vanliga konfigurationsfilerna som finns i konfigurationskatalogen.
Notera: Miljökonfigurationsfilen innehåller känslig information om din server såsom databaslösenord, Laravel-applikationsnycklar etc. Den bör därför aldrig delas offentligt.
Vi kommer nu att redigera .env
filen för att ändra konfigurationen och lägga till databasuppgifterna till den. Öppna filen med nanoredigerare genom att köra:
nano .env
Det finns många konfigurationsvariabler i detta .env
fil. Vi behöver inte ändra var och en av dem, eftersom Composer har konfigurerat de flesta inställningar automatiskt. Så här är listan över några primära konfigurationsvariabler som du måste känna till:
APP-NAMN
: Applikationsnamnet som används för meddelanden och meddelanden, så vi kommer att ställa in det på 'LaravelApp'.APP_ENV
: Denna variabel används för att indikera den aktuella applikationsmiljön. Den kan ställas in på lokala, utvecklings-, test- eller produktionsmiljöer. Vi kommer att ställa in det till utvecklingsmiljön för nu.APP_KEY
: Unik applikationsnyckel som används för att skapa salter och hash för webbappen. Det genereras automatiskt när du installerar Laravel via Composer, så det finns ingen anledning att ändra detta.APP_DEBUG
: Det kan ställas in på antingen sant eller falskt, beroende på om du vill visa fel på klientsidan. Ställ in den på false när du flyttar till produktionsmiljön.APP_URL
: Basera URL eller IP för applikationen, ändra det till ditt domännamn om du har ett för din Laravel-app eller behåll den orörd tills vidare.DB_DATABASE
: Namnet på databasen du vill använda med Laravel-applikationen. Vi kommer att använda MySQL-databasen "laravel" som vi skapade när vi konfigurerade MySQL.DB_USERNAME
: Användarnamn för att ansluta till databasen. Vi kommer att använda MySQL-användaren 'laravel_user' som vi skapade.DB_LÖSENORD
: Lösenordet för att ansluta till databasen.
APP_NAME=LaravelApp
APP_ENV=utveckling
APP_KEY=base64:Application_unique_key
APP_DEBUG=true APP_URL=//domän_eller_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
Gör ändringar i .env
fil i enlighet med detta och när du är klar med redigeringen, spara och avsluta filen med hjälp av CTRL+X
tryck sedan på Y
och tryck på enter för att bekräfta. Nu återstår bara att konfigurera Apache-servern och skapa en virtuell värd för vår Laravel-applikation.
Konfigurera Apache Web Server
Vi har installerat Laravel i den lokala mappen i användarens hemkatalog. Även om detta fungerar perfekt för lokal utveckling, rekommenderas det att du har webbapplikationskatalogen placerad i /var/www
. Anledningen till att vi inte installerade Laravel i /var/www
direkt beror på att det ägs av root och Composer bör inte användas med sudo
.
Så använd mv
kommandot för att flytta Laravel-programmappen och dess innehåll till /var/www
:
sudo mv ~/Laravel/ /var/www
LaravelApp-katalogen ägs av användaren, så du kan fortfarande redigera och göra ändringar i filerna utan att använda sudo
kommando. Men Apache-webbservern behöver åtkomst till applikationens cache- och lagringskatalog eftersom Laravel lagrar applikationsgenererade filer i den. Ändra ägaren av dessa mappar till www-data
användare som använder 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 att ha bytt ägare till dessa kataloger, aktivera Apache mod_rewrite
eftersom det krävs av Laravel för att korrekt transformera webbadresser för att tolkas av dess routingfunktion via .htaccess
fil.
sudo a2enmod skriva om
Därefter måste vi konfigurera en virtuell värd för Laravel-applikationen. Den virtuella värdkonfigurationen finns på /etc/apache2/sites-available
. Vi kommer att redigera den virtuella standardvärdfilen för att distribuera Laravel-applikationen. Öppna standardkonfigurationsfilen för virtuell värd med nanoredigerare:
sudo nano /etc/apache2/sites-available/000-default.conf
Ändra dokumentroten från /var/www/html
till /var/www/LaravelApp/public
och lägg till följande utdrag under DocumentRoot-raden:
Tillåt Åsidosätt alla
Din 000-default.conf
borde se ut så här 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 kombinerad
Starta om Apache-webbservern genom att köra följande kommando:
sudo systemctl starta om apache2
Gå nu till din webbläsare och skriv IP-adressen till din Ubuntu 20.04-server. Du kommer att se Laravels startsida istället för Apaches standard välkomstsida.
Förutsatt att du har följt den här guiden hittills bör du ha en fungerande Laravel-applikation med en MySQL-databas som heter laravel
för det. Från denna punkt kan du börja utveckla din Laravel-applikation på egen hand. För att lära dig mer om Laravel-ramverket och dess användning besök Laravel-dokumentsidan.