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.