News

Loading...

Community Links

Laravel Jobs

Latest News

Loading...

Latest Partners

Loading...

Partners

Loading...

Panduan Lengkap Setup Laravel 11 dengan Best Practice Modern (Vite, Breeze, Sanctum, dan Docker)


Ikuti langkah demi langkah cara menginstal Laravel 11 terbaru, mengkonfigurasi Vite, Breeze, Sanctum, serta Docker untuk pengembangan yang efisien dan aman.

1. Prasyarat

1.1. Sistem Operasi & Software

  • PHP >= 8.2
  • Composer 2.x
  • Node.js >= 20
  • Docker & Docker Compose (opsional but recommended)

1.2. Buat Direktori Project

mkdir laravel-modern && cd laravel-modern

2. Instalasi Laravel 11

composer create-project laravel/laravel . "11.*"

Perintah ini mengunduh Laravel 11 beserta dependensi standar.

3. Mengintegrasikan Vite

3.1. Install Vite & Dependencies

npm install --save-dev vite laravel-vite-plugin

3.2. Konfigurasi vite.config.js

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
    ],
});

3.3. Update Blade Layout

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Laravel</title>
    @vite(['resources/css/app.css', 'resources/js/app.js'])
</head>
<body>
    @yield('content')
</body>
</html>

4. Menambahkan Laravel Breeze (Starter Kit)

composer require laravel/breeze --dev
php artisan breeze:install vue
npm install && npm run dev

Breeze mengatur autentikasi dasar dengan Vue 3 dan Vite.

5. Mengamankan API dengan Laravel Sanctum

5.1. Instal Sanctum

composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate

5.2. Konfigurasi Middleware

Tambahkan EnsureFrontendRequestsAreStateful::class pada grup api di app/Http/Kernel.php:

'api' => [
    \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
    'throttle:api',
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
],

5.3. Contoh Route & Controller

// routes/api.php
use AppHttpControllersAPIAuthController;

Route::post('/login', [AuthController::class, 'login']);
Route::middleware('auth:sanctum')->get('/user', function (\Illuminate\Http\Request $request) {
    return $request->user();
});
// app/Http/Controllers/API/AuthController.php
namespace App\Http\Controllers\API;

use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Laravel\Sanctum\PersonalAccessToken;

class AuthController extends Controller
{
    public function login(Request $request)
    {
        $request->validate([
            'email' => 'required|email',
            'password' => 'required',
        ]);

        $user = User::where('email', $request->email)->first();
        if (! $user || ! Hash::check($request->password, $user->password)) {
            return response()->json(['message' => 'Invalid credentials'], 401);
        }

        $token = $user->createToken('api-token')->plainTextToken;
        return response()->json(['token' => $token]);
    }
}

6. Dockerisasi (Opsional tetapi Highly Recommended)

6.1. Buat docker-compose.yml

version: '3.8'
services:
  app:
    image: php:8.2-fpm
    container_name: laravel_app
    working_dir: /var/www/html
    volumes:
      - ./:/var/www/html
    networks:
      - laravel
    depends_on:
      - db
  web:
    image: nginx:alpine
    container_name: nginx_web
    ports:
      - "8080:80"
    volumes:
      - ./:/var/www/html
      - ./nginx/conf.d:/etc/nginx/conf.d
    networks:
      - laravel
  db:
    image: mysql:8.0
    container_name: mysql_db
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: laravel
      MYSQL_USER: laravel
      MYSQL_PASSWORD: secret
    ports:
      - "3306:3306"
    networks:
      - laravel
networks:
  laravel:
    driver: bridge

6.2. Nginx Config (nginx/conf.d/default.conf)

server {
    listen 80;
    index index.php index.html;
    root /var/www/html/public;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

6.3. Jalankan Container

docker compose up -d

Setelah kontainer berjalan, lakukan migration:

docker exec -it laravel_app php artisan migrate

7. Best Practice Modern

  • Environment Variables: Simpan rahasia di .env dan gunakan dotenv di Docker.
  • Code Quality: Gunakan Laravel Pint untuk standar coding: composer require laravel/pint --dev then vendor/bin/pint.
  • Testing: Tuliskan Feature Test menggunakan Pest atau PHPUnit, jalankan dengan php artisan test.
  • Cache Config & Routes: Setelah produksi, jalankan php artisan config:cache dan php artisan route:cache.
  • Static Analysis: Integrasikan PHPStan atau Psalm untuk deteksi bug dini.

Dengan mengikuti tutorial ini, Anda mendapat setup Laravel 11 yang modern, cepat dengan Vite, lengkap authentication via Sanctum, dan lingkungan pengembangan terisolasi menggunakan Docker. Praktik‑praktik di atas meningkatkan keamanan, kecepatan development, dan kesiapan produksi untuk proyek PHP Framework modern.
Tutorial step-by-step Laravel 11 setup modern dengan Vite, Breeze, Sanctum, dan Docker. Panduan lengkap bagi developer PHP Framework untuk lingkungan produksi siap pakai.

Laravel,PHP Framework,Web Development

#Laravel #LaravelIndonesia #PHP #WebDev #Backend

Tidak ada komentar:

Posting Komentar

Most Read

Loading...

Tutorial

Loading...

Packages

Loading...