Cara Membuat Website dengan Laravel: Panduan Lengkap dari Nol

Mengapa Laravel Menjadi Framework PHP Paling Populer?
Cara membuat website dengan Laravel adalah topik yang selalu relevan bagi developer PHP di Indonesia. Laravel bukan sekadar framework - ia adalah ekosistem lengkap yang menawarkan solusi elegan untuk hampir setiap kebutuhan pengembangan web modern. Sejak diperkenalkan oleh Taylor Otwell pada 2011, Laravel telah berkembang menjadi framework PHP paling populer di dunia berdasarkan jumlah unduhan, bintang GitHub, dan komunitas aktif.
Apa yang membuat Laravel unggul dibandingkan framework PHP lain? Laravel hadir dengan Eloquent ORM yang intuitif untuk berinteraksi dengan database, sistem routing yang ekspresif, Blade templating engine yang powerful namun ringan, sistem migrasi database yang terstruktur, serta puluhan fitur bawaan seperti autentikasi, antrian tugas, penjadwalan, dan broadcasting. Semua ini dikemas dengan sintaks yang bersih dan dokumentasi kelas dunia.
Pada panduan ini, Anda akan belajar cara membuat website dengan Laravel dari nol - mulai dari persiapan lingkungan pengembangan, instalasi, memahami arsitektur MVC Laravel, membuat halaman dinamis dengan database, hingga siap untuk di-deploy ke hosting.
Persyaratan Sistem dan Persiapan Lingkungan
Sebelum mulai membuat website dengan Laravel, pastikan komputer Anda telah memenuhi persyaratan berikut:

| Komponen | Versi Minimum | Rekomendasi |
|---|---|---|
| PHP | PHP 8.2 | PHP 8.3 |
| Composer | 2.x | Versi terbaru |
| Database | MySQL 5.7 / MariaDB 10.3 | MySQL 8.0 / MariaDB 10.6 |
| Node.js | Node 18 | Node 20 LTS |
Untuk lingkungan pengembangan lokal di Windows, gunakan Laragon - solusi terbaik yang menyertakan PHP, MySQL, Apache/Nginx, dan Composer dalam satu installer ringan. Pengguna macOS bisa menggunakan Laravel Herd yang menawarkan pengalaman development Laravel yang sangat mulus tanpa konfigurasi rumit.
Langkah 1: Instalasi Laravel via Composer
Ada dua cara resmi untuk membuat project Laravel baru. Cara pertama menggunakan Laravel Installer:
# Install Laravel Installer secara global (cukup sekali)
composer global require laravel/installer
# Buat project baru
laravel new nama-website-saya
Cara kedua langsung menggunakan Composer:
composer create-project laravel/laravel nama-website-saya
Setelah proses instalasi selesai, masuk ke folder project dan jalankan development server bawaan Laravel:
cd nama-website-saya
php artisan serve
Buka browser dan akses http://localhost:8000. Jika halaman welcome Laravel muncul dengan tampilan yang indah, instalasi berhasil dan Anda siap untuk mulai membuat website dengan Laravel.
Langkah 2: Memahami Struktur Folder Laravel
Pemahaman struktur folder adalah fondasi penting dalam cara membuat website dengan Laravel. Berikut folder-folder utama yang perlu Anda ketahui:
nama-website-saya/
├── app/
│ ├── Http/
│ │ ├── Controllers/ ← Logika aplikasi (Controller)
│ │ └── Middleware/ ← Filter request HTTP
│ └── Models/ ← Model Eloquent (interaksi database)
├── bootstrap/ ← Bootstrapping framework
├── config/ ← Semua file konfigurasi
├── database/
│ ├── migrations/ ← Struktur tabel database
│ └── seeders/ ← Data awal database
├── public/ ← Document root web server (index.php, assets)
├── resources/
│ ├── views/ ← Template Blade (HTML)
│ ├── css/ ← File CSS sumber
│ └── js/ ← File JavaScript sumber
├── routes/
│ └── web.php ← Definisi route website
├── storage/ ← Cache, logs, file upload
├── .env ← Konfigurasi environment (JANGAN di-commit ke Git)
└── artisan ← CLI Laravel
Langkah 3: Konfigurasi Database di File .env
Laravel menggunakan file .env untuk menyimpan konfigurasi yang bersifat sensitif dan berbeda antar environment. Buka file .env di root project dan sesuaikan konfigurasi database:
APP_NAME="Website Saya"
APP_ENV=local
APP_KEY=base64:... # Sudah terisi otomatis saat instalasi
APP_DEBUG=true
APP_URL=http://localhost:8000
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database_saya
DB_USERNAME=root
DB_PASSWORD=
Buat database baru di MySQL sesuai nilai DB_DATABASE di atas. Anda bisa menggunakan phpMyAdmin atau perintah MySQL langsung:
mysql -u root -p
CREATE DATABASE nama_database_saya CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EXIT;
Langkah 4: Membuat Migrasi dan Model
Laravel menggunakan migrasi database - semacam version control untuk skema database. Ini memungkinkan Anda mendefinisikan struktur tabel menggunakan kode PHP dan mereplikasinya di mana saja.
Mari buat contoh website blog sederhana. Buat migrasi untuk tabel artikel:
# Buat migrasi sekaligus model
php artisan make:model Artikel -m
Perintah ini membuat dua file sekaligus: app/Models/Artikel.php dan file migrasi di database/migrations/. Buka file migrasi yang baru dibuat dan tambahkan kolom-kolom yang diperlukan:
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
return new class extends Migration {
public function up(): void
{
Schema::create('artikels', function (Blueprint $table) {
$table->id();
$table->string('judul');
$table->string('slug')->unique();
$table->text('ringkasan');
$table->longText('konten');
$table->string('penulis')->default('Admin');
$table->boolean('published')->default(false);
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('artikels');
}
};
Jalankan migrasi untuk membuat tabel di database:
php artisan migrate
Sekarang buka dan konfigurasi Model app/Models/Artikel.php:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class Artikel extends Model
{
protected $fillable = [
'judul',
'slug',
'ringkasan',
'konten',
'penulis',
'published',
];
protected $casts = [
'published' => 'boolean',
];
// Scope untuk artikel yang sudah dipublikasi
public function scopePublished($query)
{
return $query->where('published', true);
}
}
Langkah 5: Membuat Controller
Controller adalah jantung dari cara membuat website dengan Laravel. Ia menerima request dari user, mengambil data dari Model, lalu mengirimnya ke View untuk ditampilkan. Buat controller untuk artikel:
php artisan make:controller ArtikelController --resource
Flag --resource membuat controller dengan 7 method CRUD secara otomatis. Edit app/Http/Controllers/ArtikelController.php:
<?php
namespace AppHttpControllers;
use AppModelsArtikel;
use IlluminateHttpRequest;
use IlluminateSupportStr;
class ArtikelController extends Controller
{
// Tampilkan daftar semua artikel
public function index()
{
$artikels = Artikel::published()
->latest()
->paginate(10);
return view('artikel.index', compact('artikels'));
}
// Tampilkan satu artikel berdasarkan slug
public function show(string $slug)
{
$artikel = Artikel::where('slug', $slug)
->where('published', true)
->firstOrFail();
return view('artikel.show', compact('artikel'));
}
// Simpan artikel baru
public function store(Request $request)
{
$validated = $request->validate([
'judul' => 'required|string|max:255',
'ringkasan' => 'required|string|max:500',
'konten' => 'required|string',
'penulis' => 'required|string|max:100',
]);
$validated['slug'] = Str::slug($validated['judul']);
$validated['published'] = $request->boolean('published');
Artikel::create($validated);
return redirect()->route('artikel.index')
->with('success', 'Artikel berhasil disimpan!');
}
}

Langkah 6: Mendefinisikan Route
Route di Laravel mendefinisikan URL apa yang tersedia di website dan controller mana yang menanganinya. Buka routes/web.php:
<?php
use AppHttpControllersArtikelController;
use IlluminateSupportFacadesRoute;
// Halaman utama
Route::get('/', function () {
return view('welcome');
});
// Route untuk artikel (RESTful)
Route::get('/artikel', [ArtikelController::class, 'index'])->name('artikel.index');
Route::get('/artikel/{slug}', [ArtikelController::class, 'show'])->name('artikel.show');
Route::post('/artikel', [ArtikelController::class, 'store'])->name('artikel.store');
Untuk melihat semua route yang terdaftar di aplikasi Anda:
php artisan route:list
Langkah 7: Membuat View dengan Blade Template
Blade adalah templating engine bawaan Laravel yang sangat powerful. Blade memungkinkan Anda membuat layout yang dapat diwarisi, komponen yang dapat digunakan ulang, dan menyisipkan logika PHP dengan sintaks yang bersih.
Layout Utama: resources/views/layouts/app.blade.php
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@yield('title', 'Website Saya') - Laravel</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Segoe UI', sans-serif; color: #1e293b; }
nav { background: #1e293b; padding: 1rem 2rem; }
nav a { color: #fff; text-decoration: none; margin-right: 1.5rem; }
.container { max-width: 900px; margin: 0 auto; padding: 2rem; }
.card { border: 1px solid #e2e8f0; border-radius: 8px; padding: 1.5rem; margin-bottom: 1rem; }
.alert-success { background: #f0fdf4; border: 1px solid #22c55e; padding: 1rem; border-radius: 4px; margin-bottom: 1rem; color: #15803d; }
</style>
</head>
<body>
<nav>
<a href="{{ url('/') }}">Beranda</a>
<a href="{{ route('artikel.index') }}">Artikel</a>
</nav>
<div class="container">
@if(session('success'))
<div class="alert-success">{{ session('success') }}</div>
@endif
@yield('content')
</div>
</body>
</html>
Halaman Daftar Artikel: resources/views/artikel/index.blade.php
@extends('layouts.app')
@section('title', 'Daftar Artikel')
@section('content')
<h1 style="margin-bottom:1.5rem;">Daftar Artikel</h1>
@forelse($artikels as $artikel)
<div class="card">
<h2>
<a href="{{ route('artikel.show', $artikel->slug) }}"
style="color:#1e293b;text-decoration:none;">
{{ $artikel->judul }}
</a>
</h2>
<p style="color:#64748b;margin:.5rem 0;">{{ $artikel->ringkasan }}</p>
<small style="color:#94a3b8;">
Oleh {{ $artikel->penulis }} —
{{ $artikel->created_at->translatedFormat('d F Y') }}
</small>
</div>
@empty
<p>Belum ada artikel yang dipublikasikan.</p>
@endforelse
<div style="margin-top:1.5rem;">
{{ $artikels->links() }}
</div>
@endsection
Langkah 8: Mengisi Data dengan Database Seeder
Laravel menyediakan fitur Seeder untuk mengisi database dengan data awal atau data dummy untuk keperluan testing:
# Buat seeder
php artisan make:seeder ArtikelSeeder
Edit file database/seeders/ArtikelSeeder.php:
<?php
namespace DatabaseSeeders;
use AppModelsArtikel;
use IlluminateDatabaseSeeder;
use IlluminateSupportStr;
class ArtikelSeeder extends Seeder
{
public function run(): void
{
$artikels = [
['judul' => 'Pengenalan Laravel untuk Pemula', 'penulis' => 'Admin'],
['judul' => 'Cara Membuat REST API dengan Laravel', 'penulis' => 'Admin'],
['judul' => 'Tutorial Eloquent ORM Laravel', 'penulis' => 'Admin'],
];
foreach ($artikels as $data) {
Artikel::create([
'judul' => $data['judul'],
'slug' => Str::slug($data['judul']),
'ringkasan' => 'Ini adalah ringkasan dari artikel ' . $data['judul'],
'konten' => '<p>Konten lengkap artikel ' . $data['judul'] . '</p>',
'penulis' => $data['penulis'],
'published' => true,
]);
}
}
}
Jalankan seeder:
php artisan db:seed --class=ArtikelSeeder
Langkah 9: Fitur Autentikasi dengan Laravel Breeze
Salah satu keunggulan Laravel dalam cara membuat website adalah kemudahan menambahkan fitur autentikasi lengkap dengan paket resmi. Laravel Breeze menyediakan implementasi autentikasi yang ringan dan mudah dikustomisasi:
# Install Laravel Breeze
composer require laravel/breeze --dev
# Publish scaffold Breeze (pilih Blade untuk tampilan sederhana)
php artisan breeze:install blade
# Install dependencies frontend
npm install && npm run dev
# Jalankan migrasi untuk tabel users
php artisan migrate
Dengan hanya beberapa perintah, website Laravel Anda sudah memiliki fitur register, login, logout, verifikasi email, dan reset password yang lengkap dan siap pakai.
Langkah 10: Optimasi untuk Production
Sebelum meluncurkan website Laravel Anda ke publik, jalankan beberapa optimasi penting:
# Ubah APP_ENV dan APP_DEBUG di .env
APP_ENV=production
APP_DEBUG=false
# Compile dan minify assets frontend
npm run build
# Cache konfigurasi, route, dan view
php artisan config:cache
php artisan route:cache
php artisan view:cache
# Optimasi autoloader Composer
composer install --optimize-autoloader --no-dev
# Shortcut untuk semua optimasi sekaligus
php artisan optimize
APP_DEBUG=false di production. Jika debug mode aktif, informasi sensitif dari konfigurasi server dan stack trace error bisa terekspos ke pengguna publik.
Fitur-Fitur Laravel yang Wajib Anda Pelajari Selanjutnya
Setelah berhasil membuat website dengan Laravel dari panduan di atas, berikut fitur-fitur lanjutan yang akan membuat website Anda semakin powerful:
- Eloquent Relationships - hasOne, hasMany, belongsTo, belongsToMany untuk relasi antar tabel yang elegan
- Laravel Livewire - Bangun komponen interaktif seperti React/Vue tanpa meninggalkan PHP
- Laravel Queues - Proses tugas berat (kirim email, resize gambar) secara asynchronous di background
- Laravel Events & Listeners - Arsitektur event-driven untuk kode yang lebih terorganisir
- Laravel Sanctum - Autentikasi API ringan untuk SPA dan mobile app
- Laravel Telescope - Debug dan monitoring aplikasi Laravel di development
- Laravel Horizon - Dashboard monitoring untuk queue worker di production
Hosting Siap untuk Laravel!
Deploy website Laravel Anda di hosting Indonesia dengan PHP 8.3, MySQL 8, SSH access, dan support 24/7 dalam Bahasa Indonesia.
Lihat Paket Hosting LaravelFAQ: Pertanyaan Umum Cara Membuat Website dengan Laravel
Kesimpulan: Laravel adalah Investasi Terbaik untuk Developer PHP
Cara membuat website dengan Laravel memang memerlukan pemahaman yang lebih dalam dibandingkan membuat website dengan HTML statis atau bahkan CMS seperti WordPress. Namun investasi waktu untuk belajar Laravel akan terbayar berlipat ganda - Anda mendapatkan kemampuan membangun aplikasi web sekompleks apapun dengan kode yang terstruktur, aman, dan mudah dipelihara.
Dalam panduan ini, Anda telah mempelajari cara instalasi Laravel, memahami struktur MVC, mengkonfigurasi database, membuat migrasi dan model Eloquent, membangun controller dan route, serta membuat view dengan Blade template. Ini adalah fondasi yang Anda butuhkan untuk terus berkembang menjadi developer Laravel yang andal.
Langkah selanjutnya adalah mempraktikkan semua konsep ini dengan membangun project nyata. Mulailah dari project sederhana - blog, todo list, atau profil perusahaan - lalu tingkatkan kompleksitasnya secara bertahap. Komunitas Laravel Indonesia juga sangat aktif dan siap membantu ketika Anda menemui kendala.
Siap untuk deploy website Laravel Anda? HostingEkspres menyediakan hosting Indonesia dengan PHP 8.3, MySQL 8, akses SSH, dan cPanel terbaru - semua yang Anda butuhkan untuk menjalankan Laravel dengan performa optimal.
Artikel Terkait
Cara Install Laravel di Hosting cPanel: Panduan Lengkap 2026
Panduan lengkap cara install Laravel di hosting cPanel dari nol. Pelajari cara upload project Laravel, konfigurasi database, setup .env, pointing public folder, dan troubleshooting masalah umum.
Baca Selengkapnya →5 Framework PHP Terbaik 2026: Laravel, CodeIgniter, Symfony & Lainnya
Perbandingan lengkap 5 framework PHP terbaik 2026: Laravel, CodeIgniter, Symfony, Yii2, dan Slim. Panduan memilih framework PHP yang tepat untuk proyek Anda berdasarkan kebutuhan, skill level, dan performa.
Baca Selengkapnya →Cara Membuat Website Dinamis dengan PHP: Panduan Pemula Lengkap
Panduan lengkap cara membuat website dinamis dengan PHP dari nol. Pelajari dasar-dasar PHP, koneksi database MySQL, form handling, session, hingga deploy website PHP ke hosting dengan langkah mudah.
Baca Selengkapnya →Butuh Hosting untuk Website Anda?
Dapatkan hosting cepat, aman, dan terpercaya dengan harga terjangkau. Gratis domain, SSL, dan support 24/7.
Jangan Ketinggalan Promo!
Subscribe newsletter kami dan dapatkan diskon hingga 50% untuk pembelian pertama kamu.
Gratis, tanpa spam. Bisa unsubscribe kapan saja.