Pengalaman Deploy Laravel dari MAMP ke Shared Hosting: Struktur Folder yang Aman
Panduan deploy Laravel dari MAMP lokal ke shared hosting dengan struktur folder aman, public directory, .env, storage link, cache, dan checklist pasca-launch.
Pengalaman Deploy Laravel dari MAMP ke Shared Hosting: Struktur Folder yang Aman
Banyak project Laravel lokal berjalan lancar di MAMP, tetapi bermasalah saat dipindahkan ke shared hosting. Masalah yang paling sering muncul adalah folder public, file .env, permission storage, URL asset, dan cache config yang masih mengarah ke environment lokal.
Artikel ini membahas pendekatan deploy Laravel dari MAMP ke shared hosting dengan fokus keamanan dan kestabilan. Panduan ini cocok untuk website company profile, sistem internal ringan, landing page custom, atau aplikasi kecil yang belum membutuhkan VPS.
Jawaban Singkat
Deploy Laravel ke shared hosting yang aman dilakukan dengan menaruh core Laravel di luar public_html, menaruh isi folder public di public_html, mengatur path index.php, mengisi .env production, menjalankan cache config, memastikan permission storage, dan melakukan checklist keamanan setelah launch.
1. Struktur Folder yang Disarankan
Struktur paling aman adalah memisahkan folder Laravel dari web root.
Contoh:
/home/username/
laravel-app/
app/
bootstrap/
config/
database/
public/
resources/
routes/
storage/
vendor/
.env
public_html/
index.php
build/
css/
js/
images/
Dengan struktur ini, file penting seperti .env, composer.json, storage, dan source code tidak terbuka langsung ke publik.
2. Edit index.php di public_html
Jika isi folder public Laravel dipindahkan ke public_html, file index.php perlu diarahkan ke lokasi core Laravel.
Contoh:
require __DIR__.'/../laravel-app/vendor/autoload.php';
$app = require_once __DIR__.'/../laravel-app/bootstrap/app.php';
Sesuaikan laravel-app dengan nama folder Anda. Kesalahan path di sini biasanya menyebabkan error 500.
3. Setup .env Production
File .env lokal dari MAMP biasanya belum siap untuk production. Pastikan nilai berikut sudah benar:
APP_ENV=production
APP_DEBUG=false
APP_URL=https://domainanda.com
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=user_database
DB_PASSWORD=password_database
Jangan pernah membiarkan APP_DEBUG=true di production. Error detail bisa membocorkan path server, query, environment variable, dan informasi sensitif lain.
4. Jalankan Composer dengan Mode Production
Jika hosting mendukung SSH, jalankan:
composer install --no-dev --optimize-autoloader
php artisan config:cache
php artisan route:cache
php artisan view:cache
Jika hosting tidak mendukung SSH, jalankan composer di lokal dengan environment yang sesuai, lalu upload folder vendor. Pastikan versi PHP lokal dan hosting kompatibel.
5. Permission Storage dan Cache
Laravel butuh akses tulis ke folder tertentu:
storage/
bootstrap/cache/
Jika muncul error seperti The stream or file could not be opened, biasanya permission belum benar.
Gunakan permission yang aman sesuai hosting. Hindari 777 jika tidak diperlukan. Banyak shared hosting cukup dengan 755 untuk folder dan 644 untuk file, tetapi beberapa konfigurasi butuh penyesuaian.
6. Storage Link untuk File Upload
Jika aplikasi menggunakan upload file, jalankan:
php artisan storage:link
Pada shared hosting tanpa SSH, Anda bisa membuat symlink manual jika panel hosting mendukung. Jika tidak, pertimbangkan menyesuaikan disk storage agar file publik disimpan di folder yang memang bisa diakses.
7. Checklist Setelah Launch
Setelah website online, jangan langsung selesai. Lakukan checklist berikut:
- Buka homepage, halaman login, form, dan halaman penting.
- Cek
APP_DEBUG=false. - Cek HTTPS aktif.
- Cek mixed content di browser console.
- Cek form email atau SMTP.
- Cek sitemap dan robots.txt jika website publik.
- Cek broken link.
- Cek halaman 404.
- Submit sitemap ke Google Search Console.
- Pasang Google Analytics atau tracking lain jika dibutuhkan.
Untuk kebutuhan SEO dan indexing, baca juga artikel tentang struktur konten jasa website dan halaman Jasa SEO Maintenance Bali.
Jika website Laravel digunakan untuk bisnis lokal, pastikan juga membaca cara membuat sitemap dan robots.txt untuk website baru serta struktur konten jasa website yang siap SEO, AEO, dan GEO. Dua hal ini membantu website tidak hanya berhasil online, tetapi juga lebih mudah dicrawl dan dipahami mesin pencari.
8. Kapan Harus Pindah ke VPS?
Shared hosting cocok untuk website sederhana, tetapi kurang ideal untuk aplikasi Laravel yang membutuhkan queue, scheduler, websocket, background jobs, atau traffic tinggi.
Pertimbangkan VPS jika:
- Aplikasi memakai queue worker.
- Ada banyak upload file.
- Butuh Redis.
- Butuh cron/scheduler yang stabil.
- Traffic mulai tinggi.
- Butuh kontrol penuh atas Nginx, PHP-FPM, dan deployment pipeline.
FAQ Deploy Laravel dari MAMP ke Hosting
Apakah folder Laravel boleh ditaruh langsung di public_html?
Sebaiknya tidak. Jika seluruh folder Laravel ada di public_html, file sensitif bisa lebih berisiko terbuka jika konfigurasi server salah.
Kenapa website Laravel error 500 setelah upload?
Penyebab umum adalah path index.php salah, .env belum benar, permission storage bermasalah, versi PHP tidak kompatibel, atau vendor belum terupload.
Apakah perlu menjalankan php artisan key:generate?
Perlu jika APP_KEY belum ada. Tetapi untuk production, pastikan key tidak berubah sembarangan karena bisa memengaruhi data terenkripsi dan session.
Apakah Laravel di shared hosting bagus untuk SEO?
Bisa, selama website cepat, mobile-friendly, punya meta tag, sitemap, schema, robots.txt, dan struktur konten yang jelas.
Kesimpulan
Deploy Laravel dari MAMP ke shared hosting bukan sekadar upload file. Struktur folder, .env, permission, cache, HTTPS, dan Search Console perlu diperhatikan agar website aman, stabil, dan siap diindex.
Jika project mulai kompleks, gunakan VPS atau managed hosting agar deployment, queue, scheduler, dan security lebih mudah dikontrol.