Laravel installeren op Ubuntu 20.04

Alles wat u moet weten om een ​​Laravel-webtoepassing op een Ubuntu 20.04 LTS-machine te implementeren

Laravel is een zeer populair open-source PHP-framework met de expressieve en elegante syntaxis die wordt gebruikt om moderne en mooie webapplicaties te ontwerpen. Laravel heeft als doel de pijn uit webontwikkeling te halen en er een plezierige en creatieve ervaring van te maken, waardoor webontwikkelaars web-ambachtslieden worden.

In deze handleiding leert u hoe u Laravel met LAMP-stack op een Ubuntu 20.04-server installeert om uw webtoepassing in gebruik te nemen.

Vereisten

Om deze handleiding te volgen, heb je een Ubuntu 20.04 LTS-server nodig en moet je ingelogd zijn als een sudo gebruiker. Voordat we beginnen, moet u de Ubuntu 20.04-pakketten bijwerken en upgraden door het volgende uit te voeren:

sudo apt update && sudo apt upgrade

LAMP-stack installeren

LAMP is een acroniem voor: L inux-besturingssysteem, EEN pache webserver, m ySQL-database en P HP programmeertaal. We zijn al op Ubuntu 20.04 die de Linux in LAMP-stack aanvinkt. Dus we gaan de rest van de drie pakketten installeren om de LAMP-stack voor onze Laravel-toepassing te voltooien.

Er is geen metapakket beschikbaar om LAMP-stack te installeren in de Ubuntu 20.04-repositories. Maar we kunnen wel een leuke functie gebruiken van: geschikt pakketbeheerder genaamd taken. Taken worden aangeduid met de naam van de beschikbare taak met een cadet (^) eraan toegevoegd.

sudo apt install lamp-server^

Deze opdracht doorzoekt de pakketlijstbestanden voor alle "Taak:" -velden en installeert alle pakketten met "lamp-server" in hun taakveld. Dus de LAMP-stack bestaande uit Apache-, MySQL- en PHP-pakketten met al hun afhankelijkheden wordt op uw Ubuntu-server geïnstalleerd.

Firewall configureren

Nadat u de LAMP-stack hebt geïnstalleerd, moet u ook de ongecompliceerde firewall (UFW) configureren en de regels ervan wijzigen, zodat u vanaf internet toegang hebt tot de Apache-server.

UFW biedt eenvoudige applicatieprofielen die kunnen worden gebruikt om regels te wijzigen en verkeer op de netwerkpoorten te schakelen. Voer de volgende opdracht uit om alle toepassingen weer te geven die toegang hebben tot de netwerkpoorten:

sudo ufw app-lijst

U ziet een uitvoer zoals deze:

Beschikbare applicaties: Apache Apache Volledige Apache Secure OpenSSH

De netwerkpoorten die deze profielen openen op uw Ubuntu 20.04-server staan ​​hieronder vermeld:

  • Apache: dit profiel opent alleen de poort 80 (staat HTTP-verkeer toe)
  • Apache Full: Dit profiel opent beide 80 & 443 poorten (maakt HTTP- en HTTPS-verkeer mogelijk)
  • Apache Secure: dit profiel opent alleen de poort 443 (staat HTTPS-verkeer toe)
  • OpenSSH: Dit profiel opent poort 22 waarmee het SSH-protocol mogelijk is

U moet het profiel 'Apache Full' inschakelen, zodat verkeer vanaf internet naar de Apache-webserver kan. Bovendien moet u ook het 'OpenSSH'-profiel inschakelen dat het verkeer op de poort toestaat 22 (SSH) op uw Ubuntu 20.04-server. Als u UFW inschakelt zonder het 'OpenSSH'-profiel toe te staan, kunt u geen verbinding maken met uw server via SSH.

De UFW-regel wijzigen en verkeer op poort toestaan 80 en 22, loop:

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

Schakel vervolgens de UFW-firewall in met de volgende opdracht:

sudo ufw inschakelen

Mogelijk krijgt u de melding "opdracht kan bestaande ssh-verbindingen verstoren. Ga verder met bewerkingen (y|n)?”. druk op ja om door te gaan omdat we al een regel hebben toegevoegd om SSH in UFW toe te staan.

Nu hebt u vanaf internet toegang tot de Apache-standaardwebpagina met behulp van het IP-adres van uw Ubuntu-server. Open hiervoor uw browser en typ het IP-adres van uw Ubuntu 20.04-server in de URL-balk en druk op enter.

//Uw_ubuntu_server_ip

Deze pagina bevestigt dat de Apache-webserver correct werkt en dat de UFW-regels correct zijn ingesteld.

MySQL-database instellen voor Laravel

Laravel 7 maakt interactie met databases uiterst eenvoudig in de verschillende database-backends die het ondersteunt, zoals MySQL versie 5.6+, PostgreSQL 9.4+, SQLite 3.8.8+ en SQL Server 2017+. We hebben al het nieuwste MySQL-pakket geïnstalleerd met de lamp-sever^ taak. Dus in deze sectie zullen we de MySQL-server configureren en vervolgens kijken hoe we een nieuwe MySQL-gebruiker en database voor de Laravel-toepassing kunnen instellen.

MySQL configureren

De MySQL-database wordt geleverd met een vooraf geïnstalleerd beveiligingsscript dat kan worden gebruikt om enkele onveilige standaardinstellingen te verwijderen. Het wordt aanbevolen dat u dit script uitvoert voordat u uw Laravel-toepassing implementeert.

sudo mysql_secure_installation

De bovenstaande opdracht voert het beveiligingsscript uit dat u een reeks vragen zal stellen voor het configureren van de MySQL-server.

Eerst wordt u gevraagd of u de VALIDEER WACHTWOORD inpluggen. Deze plug-in controleert uw wachtwoord en rangschikt ze als veilig of onveilig op basis van het wachtwoordvalidatiebeleidsniveau dat u binnenkort zult kiezen. Dus druk op ja als u deze plug-in wilt inschakelen.

Uitgang: De implementatie van de MySQL-server beveiligen. Verbinding maken met MySQL met een leeg wachtwoord. VALIDATE WACHTWOORDCOMPONENT kan worden gebruikt om wachtwoorden te testen en de beveiliging te verbeteren. Het controleert de sterkte van het wachtwoord en stelt de gebruikers in staat alleen die wachtwoorden in te stellen die veilig genoeg zijn. Wilt u de component VALIDATE PASSWORD instellen? Druk op y|Y voor Ja, een andere toets voor Nee: ja

Stel vervolgens het wachtwoordvalidatiebeleidsniveau in door ofwel in te voeren: 0, 1 of 2 afhankelijk van hoe sterk u uw wachtwoord voor uw databases wilt maken.

Uitgang: Er zijn drie niveaus van wachtwoordvalidatiebeleid: LAAG Lengte >= 8 MEDIUM Lengte >= 8, numeriek, hoofdletters en speciale tekens STRONG Lengte >= 8, numeriek, hoofdletters, speciale tekens en woordenboekbestand Voer 0 = LAAG in, 1 = MEDIUM en 2 = STERK: 2

Vervolgens wordt u gevraagd een nieuw wachtwoord in te voeren voor de MySQL-rootgebruiker. Voer een geschikt wachtwoord in voor uw MySQL-root. De plug-in VALIDATE PASSWORD geeft u de geschatte sterkte van uw wachtwoord op basis van uw wachtwoordvalidatieniveau. druk op ja om verder te gaan met het door u opgegeven wachtwoord.

Uitgang: Stel hier het wachtwoord voor root in. Nieuw wachtwoord: Voer nieuw wachtwoord opnieuw in: Geschatte sterkte van het wachtwoord: 100 Wilt u doorgaan met het verstrekte wachtwoord? (Druk op y|Y voor Ja, een andere toets voor Nee) : ja

druk op ja voor de rest van de prompts zullen ze enkele anonieme gebruikers en de testdatabases verwijderen, root-login op afstand uitschakelen en de nieuwe instellingen voor de MySQL-server opnieuw laden. Als u klaar bent, test u uw database door het volgende uit te voeren:

sudo mysql

De bovenstaande opdracht opent de MySQL-console en maakt verbinding met de MySQL-database als de wortel gebruiker. U ziet een uitvoer zoals deze:

Uitgang: Welkom bij de MySQL-monitor. Commando's eindigen met ; of \g. Uw MySQL-verbindings-ID is 10 Serverversie: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2020, Oracle en/of zijn gelieerde ondernemingen. Alle rechten voorbehouden. Oracle is een gedeponeerd handelsmerk van Oracle Corporation en/of haar gelieerde ondernemingen. Andere namen kunnen handelsmerken zijn van hun respectievelijke eigenaren. Typ 'help;' of '\h' voor hulp. Typ '\c' om de huidige invoeropdracht te wissen. mysql>

Het is je misschien opgevallen dat je het wachtwoord dat je hebt ingesteld voor de MySQL-rootgebruiker niet hoefde in te voeren. Dat komt omdat de standaard authenticatiemethode voor de administratieve MySQL-rootgebruiker is: caching_sha2_authentication in plaats van de mysql_native_password methode die een wachtwoord gebruikt om in te loggen.

U kunt dus standaard alleen inloggen als MySQL-rootgebruiker met: sudo ingeschakelde gebruikers die fungeren als extra beveiliging voor de MySQL-server. Maar MySQL PHP-bibliotheek ondersteunt niet caching_sha2_authentication methode. Daarom moeten we gebruiken mysql_native_password methode wanneer we een nieuwe gebruiker voor Laravel maken, omdat het wachtwoorden gebruikt om verbinding te maken en te communiceren met de database.

Een nieuwe MySQL-gebruiker en -database maken

Het is altijd een goede gewoonte om een ​​nieuwe gebruiker en database speciaal voor uw toepassing te maken in plaats van MySQL-rootgebruikers- en testdatabases te gebruiken. Dus we gaan een nieuwe MySQL-gebruiker instellen met de naam laravel_user en een database genaamd laravel. Als je de tutorial tot nu toe hebt gevolgd, zou je de MySQL-console moeten hebben geopend. Om de gebruiker met de naam aan te maken laravel_user voer de volgende query uit in de MySQL-console:

Opmerking: Vervang de testpass in de onderstaande MySQL-query met een sterk wachtwoord.

MAAK GEBRUIKER 'laravel_user'@'%' GEDENTIFICEERD MET mysql_native_password DOOR 'testpass';

Maak vervolgens een database met de naam laravel voor onze Laravel-toepassing door deze query uit te voeren:

MAAK DATABASE laravel;

Alleen de MySQL-rootgebruiker heeft machtigingen voor de nieuw gemaakte database laravel. Verleen alle machtigingen over de laravel database naar de laravel_user door rennen:

VERLENEN ALLES OP laravel.* AAN 'laravel_user'@'%';

Dus we hebben nu een nieuwe MySQL-gebruiker en een database, verlaat de MySQL-console door het volgende uit te voeren:

UITGANG;

Test uw nieuwe MySQL-gebruiker door in te loggen op de MySQL-console, voer hiervoor deze opdracht uit in terminal:

mysql -u laravel_user -p

let op de -P markeer in de opdracht, het zal u om het wachtwoord vragen dat u hebt gebruikt bij het maken van de laravel_user (testpass in de vraag). Nadat u zich hebt aangemeld bij de MySQL-console als: laravel_user, bevestig dat de gebruiker toegang heeft tot de laravel database door uit te voeren:

TOON DATABANKEN;
Uitgang: +--------------------+ | Database | +--------------------+ | laravel | | information_schema | +--------------------+ 2 rijen in set (0.01 sec)

De bovenstaande uitvoer bevestigt dat de MySQL-gebruiker laravel_user heeft machtigingen voor de database laravel. Verlaat de MySQL-console met de UITGANG; query zodat we kunnen doorgaan met het maken van de DemoApp Laravel-toepassing.

Laravel installeren

Het Laravel-framework gebruikt Composer om de afhankelijkheden te downloaden en te beheren. We moeten Composer dus op onze Ubuntu 20.04-machine installeren voordat we een Laravel-toepassing kunnen maken.

Composer installeren

Composer is een afhankelijkheidsbeheertool voor PHP, die het installeren en bijwerken van de PHP-frameworks en -bibliotheken zo veel eenvoudiger maakt. We gaan in deze tutorial kijken hoe je Composer snel kunt installeren, zodat we het kunnen gebruiken om het Laravel-framework te downloaden en te beheren.

U moet enkele aanvullende pakketten installeren die Composer nodig heeft om te functioneren, zoals: php-klik om PHP-scripts in de terminal uit te voeren en uitpakken om Composer te helpen de pakketten te extraheren. Installeer ze allebei door het volgende uit te voeren:

sudo apt install php-cli unzip

Om Composer wereldwijd te installeren, downloadt u het Composer-installatiescript met: krullen en installeer het met de volgende opdracht:

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

Controleer ten slotte of de componist correct is geïnstalleerd door het volgende uit te voeren:

componist
 ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_ / / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Componist versie 1.10.8 2020-06- 24 21:23:30 Gebruik: commando [opties] [argumenten]

Deze uitvoer bevestigt dat de Composer correct werkt op uw Ubuntu 20.04-server, u kunt hem gaan gebruiken om PHP-frameworks en -bibliotheken te installeren en te beheren.

Een Laravel-toepassing maken

We hebben vrijwel alles wat nodig is om een ​​Laravel-toepassing op onze Ubuntu 20.04-server te maken, behalve enkele PHP-extensies. Installeer deze ontbrekende extensies met de volgende opdracht:

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

Nu kunnen we Laravel installeren en een nieuwe Laravel-toepassing maken met behulp van Composer. Zorg er eerst voor dat u zich in de thuismap van uw gebruiker bevindt:

cd ~

Maak vervolgens een nieuw Laravel-project met behulp van de Composer's maak-project opdracht:

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

Met de bovenstaande opdracht wordt een nieuw project gemaakt met de naam LaravelApp en wordt ook het Laravel Framework voor u geïnstalleerd en geconfigureerd. U ziet een uitvoer die lijkt op deze:

Uitgang: Een "laravel/laravel"-project maken op "./LaravelApp" Laravel/laravel (v7.12.0) installeren Laravel/laravel (v7.12.0) installeren: downloaden (100%) Project gemaakt in /home/ath/LaravelApp @php - r "file_exists('.env') || copy('.env.example', '.env');" Compositor-repositories laden met pakketinformatie Afhankelijkheden bijwerken (inclusief required-dev) Pakketbewerkingen: 97 installaties, 0 updates, 0 verwijderingen Voku/portable-ascii (1.5.2) installeren: downloaden (100%) Symfony/polyfill-ctype installeren (v1 .17.1): downloaden (100%) phpoption/phpoption installeren (1.7.4): downloaden (100%) vlucas/phpdotenv installeren (v4.1.7): downloaden (100%) symfony/css-selector installeren (v5.1.2) : Downloaden (100%) ....

Wanneer de installatie is voltooid, gaat u naar de hoofdmap van de toepassing en voert u de Laravel's ambachtsman opdracht om te controleren of alle componenten correct zijn geïnstalleerd:

cd LaravelApp/ php artisan
Uitgang: Laravel Framework 7.18.0 Gebruik: commando [opties] [argumenten] Opties: -h, --help Toon dit helpbericht -q, --quiet Voer geen bericht uit -V, --version Toon deze applicatieversie --ansi ANSI-uitvoer forceren --no-ansi ANSI-uitvoer uitschakelen -n, --no-interaction Stel geen interactieve vraag --env[=ENV] De omgeving waarin de opdracht moet worden uitgevoerd onder -v|vv|vvv, --verbose Verhogen de breedsprakigheid van berichten: 1 voor normale uitvoer, 2 voor meer uitgebreide uitvoer en 3 voor debug ....

Deze uitvoer bevestigt dat de installatie is gelukt en dat alle bestanden aanwezig zijn en dat de opdrachtregelprogramma's van Laravel correct werken. We moeten echter nog steeds de applicatie configureren om de database en een paar andere instellingen in te stellen.

Laravel-toepassing configureren

De Laravel-configuratiebestanden bevinden zich in een map met de naam configuratie in de hoofdmap van de toepassing. Bovendien, toen we Laravel via Composer installeerden, creëerde het een omgevingsbestand met de naam '.env' in de hoofdmap van de toepassing. Het omgevingsbestand bevat de omgevingsspecifieke configuraties en heeft voorrang op de instellingen in de reguliere configuratiebestanden die zich in de configuratiemap bevinden.

Opmerking: het omgevingsconfiguratiebestand bevat gevoelige informatie over uw server, zoals databasewachtwoorden, Laravel-toepassingssleutels enz. Het mag daarom nooit openbaar worden gedeeld.

We zullen nu de bewerken .env bestand om de configuratie te wijzigen en de databasereferenties eraan toe te voegen. Open het bestand met nano-editor door het volgende uit te voeren:

nano .env

Er zijn veel configuratievariabelen hierin .env het dossier. We hoeven ze niet allemaal te wijzigen, aangezien Composer de meeste instellingen automatisch heeft geconfigureerd. Dus, hier is de lijst met enkele primaire configuratievariabelen waarvan u op de hoogte moet zijn:

  • APPLICATIE NAAM: De applicatienaam die wordt gebruikt voor meldingen en berichten, dus we gaan deze instellen op 'LaravelApp'.
  • APP_ENV: Deze variabele wordt gebruikt om de huidige applicatieomgeving aan te geven. Het kan worden ingesteld op lokale, ontwikkelings-, test- of productieomgevingen. We gaan het voorlopig in de ontwikkelomgeving zetten.
  • APP_KEY: Unieke applicatiesleutel die wordt gebruikt om salts en hashes voor de web-app te maken. Het wordt automatisch gegenereerd wanneer u Laravel via Composer installeert, dus het is niet nodig om dit te wijzigen.
  • APP_DEBUG: Het kan worden ingesteld op waar of onwaar, afhankelijk van of u fouten aan de clientzijde wilt weergeven. Stel deze in op false wanneer u naar de productieomgeving gaat.
  • APP_URL: Basis-URL of IP voor de applicatie, verander het in je domeinnaam als je er een hebt voor je Laravel-app of laat het voorlopig onaangeroerd.
  • DB_DATABASE: Naam van de database die u wilt gebruiken met de Laravel-toepassing. We gaan de MySQL-database 'laravel' gebruiken die we hebben gemaakt tijdens het configureren van MySQL.
  • DB_USERNAME: gebruikersnaam om verbinding te maken met de database. We gaan de MySQL-gebruiker 'laravel_user' gebruiken die we hebben gemaakt.
  • DB_PASSWORD: Het wachtwoord om verbinding te maken met de database.
 APP_NAME= LaravelApp APP_ENV= ontwikkeling APP_KEY= base64:Toepassing_unieke_sleutel APP_DEBUG=true APP_URL= //domein_of_IP LOG_CHANNEL=stapelen DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME= laravel_user DB_PASSWORD= testpass

Breng wijzigingen aan in de .env bestand dienovereenkomstig en wanneer u klaar bent met bewerken, slaat u het bestand op en sluit u het af met CTRL+X druk dan op ja en druk op enter om te bevestigen. Nu hoeft u alleen nog de Apache-server te configureren en een virtuele host voor onze Laravel-toepassing te maken.

Apache-webserver instellen

We hebben Laravel geïnstalleerd in de lokale map van de thuismap van de gebruiker. Hoewel dit prima werkt voor lokale ontwikkeling, is het aan te raden om de webtoepassingsmap te hebben in /var/www. De reden waarom we Laravel niet hebben geïnstalleerd in /var/www direct is omdat het eigendom is van root en Composer niet mag worden gebruikt met sudo.

Dus gebruik de mv commando om de Laravel-toepassingsmap en de inhoud ervan te verplaatsen naar /var/www:

sudo mv ~/Laravel/ /var/www

De LaravelApp-map is eigendom van de gebruiker, dus u kunt de bestanden nog steeds bewerken en wijzigen zonder de sudo opdracht. Maar de Apache-webserver heeft toegang nodig tot de cache- en opslagdirectory's van de applicatie, aangezien Laravel er door de applicatie gegenereerde bestanden in opslaat. Wijzig de eigenaar van deze mappen in de www-gegevens gebruiker die de gebruikt chown opdracht:

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

Nadat u de eigenaar van deze mappen hebt gewijzigd, schakelt u de Apache's mod_rewrite omdat Laravel het nodig heeft om URL's correct te transformeren om te worden geïnterpreteerd door de routeringsfunctie via .htaccess het dossier.

sudo a2enmod herschrijven

Vervolgens moeten we een virtuele host instellen voor de Laravel-toepassing. De configuraties van de virtuele host bevinden zich op: /etc/apache2/sites-beschikbaar. We gaan het standaard virtuele hostbestand bewerken om de Laravel-toepassing te implementeren. Open het standaard configuratiebestand van de virtuele host met behulp van nano-editor:

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

Wijzig de documenthoofdmap van /var/www/html naar /var/www/LaravelApp/public en voeg het volgende fragment toe onder de DocumentRoot-regel:

 ToestaanAlles overschrijven 

Jouw 000-default.conf zou er nu ongeveer zo uit moeten zien met weinig opmerkingen.

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

Start de Apache-webserver opnieuw door de volgende opdracht uit te voeren:

sudo systemctl herstart apache2

Ga nu naar uw browser en typ het IP-adres van uw Ubuntu 20.04-server. U ziet de Laravel-startpagina in plaats van de standaard Apache-welkomstpagina.

Ervan uitgaande dat u deze handleiding tot nu toe hebt gevolgd, zou u een werkende Laravel-toepassing moeten hebben met een MySQL-database genaamd laravel ervoor. Vanaf dit punt kunt u zelf beginnen met het ontwikkelen van uw Laravel-toepassing. Ga voor meer informatie over het Laravel-framework en het gebruik ervan naar de Laravel-documentatiepagina.