Laravel is een krachtig PHP-framework, maar vereist een specifieke mappenstructuur die niet volledig overeenkomt met de standaard setup van onze shared webhosting. In dit artikel leggen we uit hoe je Laravel correct deployt op een $$BrandName$$ hostingpakket.
Standaard niet mogelijk
Op een $$BrandName$$ hostingpakket wordt je website standaard geladen vanuit de map www.
Laravel daarentegen verwacht dat de publiek toegankelijke bestanden zich in de map public bevinden.
Dit zorgt voor een conflict:
- Hosting verwacht:
www - Laravel verwacht:
public
Als je hier niets aan doet, zal je website niet correct werken of zelfs helemaal niet zichtbaar zijn.
Oplossing: symlink van www naar public
De aanbevolen oplossing is om een symbolische link (symlink) te maken van de map www naar de map public.
Op die manier:
- Ziet de hosting nog steeds een
www-map - Maar worden de bestanden effectief geladen vanuit Laravel’s
public-map
Stap 1: Upload je Laravel-project
Upload je volledige Laravel-project naar je hostingpakket, bijvoorbeeld via FTP of Git.
Zorg ervoor dat de structuur er ongeveer zo uitziet:
/home/gebruikersnaam/
├── app
├── bootstrap
├── config
├── public
├── resources
├── routes
└── ...
Stap 2: Wijzig de naam van de www-map
Verander de naam van de map www naar iets als www_old
Stap 3: Maak een symlink via SSH
Maak verbinding met je hosting via SSH en voer het volgende commando uit:
ln -s public www
Wat doet dit commando?
wwwwordt een verwijzing naarpublic- De webserver denkt dat hij uit
wwwserveert - Maar in werkelijkheid gebruikt hij Laravel’s
public-map
Alternatieve oplossing
In plaats van een symlink te gebruiken, kan je Laravel ook aanpassen zodat het framework de www-map gebruikt in plaats van public.
Dit vereist aanpassingen in de Laravel-configuratie en wordt minder aangeraden.
Meer info hierover vind je hier:
https://developerhowto.com/2018/11/12/how-to-change-the-laravel-public-folder/