Ebben az útmutatóban bemutatom, hogyan deployolhatsz Laravel 13 alkalmazást shared hosting környezetben a public_html mappa használatával a Laravel alapértelmezett public könyvtára helyett. A cikk kitér a Vite konfigurációra, a public path módosítására, a storage kezelésére és a production-ready beállításokra is.
A Laravel alkalmazások shared hosting környezetben történő deployolása sokszor problémás lehet, mert a legtöbb szolgáltató a public_html mappát használja document rootként a Laravel alapértelmezett public könyvtára helyett.
Laravel 13 alatt több tiszta megoldás is létezik erre a problémára. Ebben az útmutatóban azt mutatom meg, hogyan használhatod a public_html mappát Laravel public directoryként, miközben az alkalmazás struktúrája biztonságos és karbantartható marad.
Miért más a shared hosting?
VPS vagy cloud szervereken a webszerver általában közvetlenül a Laravel public könyvtárára mutat.
Shared hosting esetén azonban:
a domain általában a
public_htmlmappára mutatnem tudod módosítani a szerver konfigurációját
korlátozott hozzáférésed van Apache vagy Nginx beállításokhoz
az alkalmazás fájljai sokszor a
public_htmlfölött helyezkednek el
Egy tipikus shared hosting struktúra például így néz ki:
/home/felhasznalo/
├── laravel-app/
│ ├── app/
│ ├── bootstrap/
│ ├── storage/
│ └── ...
└── public_html/1. lehetőség (ajánlott): a domain mutasson a Laravel public mappára
Néhány hosting szolgáltató lehetővé teszi a document root módosítását.
Ha van rá lehetőség, állítsd be ezt az útvonalat:
/home/felhasznalo/laravel-app/publicEz a legtisztább és legbiztonságosabb megoldás.
Ha a szolgáltatód ezt nem támogatja, akkor használd a következő megoldást.
2. lehetőség: public_html használata Laravel public mappaként
1. lépés: a Laravel public path módosítása
Nyisd meg a következő fájlt:
app/Providers/AppServiceProvider.phpAdd hozzá ezt a kódot a register() metódushoz:
public function register(): void
{
$this->app->bind('path.public', function () {
return base_path('../public_html');
});
}Ez arra utasítja a Laravel alkalmazást, hogy a public_html könyvtárat használja a default public mappa helyett.
A mappa struktúrádtól függően előfordulhat, hogy módosítanod kell az útvonalat.
2. lépés: Vite konfiguráció beállítása
Laravel 13 már Vite-ot használ Laravel Mix helyett.
Nyisd meg a következő fájlt:
vite.config.jsMajd módosítsd a build output mappát:
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
export default defineConfig({
plugins: [
laravel([
'resources/css/app.css',
'resources/js/app.js',
]),
],
build: {
outDir: '../public_html/build',
emptyOutDir: true,
},
});Így a buildelt CSS és JavaScript fájlok közvetlenül a public_html/build mappába kerülnek.
Frontend assetek buildelése:
npm run build3. lépés: az index.php fájl módosítása
Másold át a Laravel alapértelmezett public/index.php fájlját ide:
public_html/index.phpEzután módosítsd az útvonalakat:
require __DIR__.'/../laravel-app/vendor/autoload.php';
$app = require_once __DIR__.'/../laravel-app/bootstrap/app.php';Az útvonalakat igazítsd a saját mappa struktúrádhoz.
4. lépés: storage symlink létrehozása
Laravelnek szüksége van a public storage fájlok elérésére.
Futtasd ezt a parancsot:
php artisan storage:linkHa a hosting szolgáltató nem támogatja a symlinkeket, akkor manuálisan hozd létre ezt a mappát:
public_html/storageMajd másold át ide a fájlokat innen:
storage/app/public5. lépés: .htaccess ellenőrzése
Győződj meg róla, hogy a public_html/.htaccess fájl tartalmazza a Laravel rewrite szabályait:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>Enélkül a Laravel route-ok könnyen 404 hibát adhatnak.
Biztonsági ajánlások
Shared hosting használata esetén:
a
.envfájl maradjon apublic_htmlmappán kívüla
vendorkönyvtár soha ne legyen publikuskapcsold ki a directory listinget, ha lehetséges
mindig használj HTTPS-t
rendszeresen frissítsd a Laravel dependencyket
Production környezetben ezt is ellenőrizd:
APP_ENV=production
APP_DEBUG=falseDeploy előtt optimalizáld az alkalmazást:
php artisan optimizeÖsszegzés
A shared hosting nem ideális Laravel alkalmazások futtatására, de kisebb projektekhez, MVP-khez vagy ügyféloldali weboldalakhoz továbbra is teljesen jól használható.
Ha a hosting szolgáltatód nem támogatja a document root módosítását, akkor a public_html használata Laravel public directoryként egy tiszta és megbízható megoldás Laravel 13 alatt.