Contoh Konfigurasi Laravel di Nginx (PHP-FPM, Permission, Error Umum)
Laravel adalah framework PHP yang sangat sensitif terhadap konfigurasi server. Salah sedikit pada web server, dampaknya biasanya langsung terasa:
- Error 500 Internal Server Error
- Artisan tidak bisa dijalankan
- Routing tidak berfungsi dengan benar
- Aplikasi berjalan lambat atau tidak konsisten
Pada artikel ini saya akan membahas contoh konfigurasi Laravel di Nginx menggunakan PHP-FPM, sekaligus menjelaskan bagian penting yang sering menjadi penyebab error, baik di local development maupun di server VPS.
Struktur Dasar Project Laravel
Salah satu kesalahan paling sering adalah mengarahkan document root web server
langsung ke folder project Laravel.
Padahal, Laravel wajib dijalankan dari folder public.
laravel/ ├── app ├── bootstrap ├── config ├── public ← document root yang benar ├── storage └── vendor
Jika document root tidak mengarah ke public, maka routing Laravel
tidak akan berjalan dengan semestinya.
Contoh Konfigurasi Nginx untuk Laravel
Berikut adalah contoh konfigurasi Nginx yang digunakan untuk menjalankan aplikasi Laravel:
server {
listen 8080;
server_name api.project.dev;
root /home/hendar/Public/project/laravel/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Penjelasan Bagian Penting Konfigurasi
try_files
Directive try_files sangat penting agar routing Laravel dapat berjalan
dengan benar.
try_files $uri $uri/ /index.php?$query_string;
Tanpa konfigurasi ini, URL Laravel sering berakhir 404 meskipun route sudah didefinisikan.
fastcgi_pass
Bagian ini menentukan bagaimana Nginx meneruskan request PHP ke PHP-FPM:
fastcgi_pass unix:/var/run/php5-fpm.sock;
Pastikan socket PHP-FPM sesuai dengan versi PHP yang digunakan. Kesalahan pada bagian ini hampir selalu berujung Error 500.
PHP-FPM dan Versi PHP
Pada server modern, socket PHP-FPM bisa berbeda-beda, misalnya:
php7.4-fpm.sockphp8.0-fpm.sockphp8.1-fpm.sock
Cek socket yang tersedia dengan perintah berikut:
ls /var/run/php/
Lalu sesuaikan nilai fastcgi_pass pada konfigurasi Nginx.
Permission Folder Laravel
Laravel membutuhkan akses tulis pada folder berikut:
storagebootstrap/cache
Contoh pengaturan permission:
sudo chown -R www-data:www-data storage bootstrap/cache sudo chmod -R 775 storage bootstrap/cache
Permission yang salah sering menyebabkan artisan gagal dijalankan atau cache error.
Error Umum yang Sering Terjadi
Beberapa error Laravel yang sering muncul akibat konfigurasi server:
-
Could not open input file: artisan
Biasanya disebabkan oleh path project atau document root yang salah. -
500 Internal Server Error
Umumnya berkaitan dengan permission atau PHP-FPM yang tidak sesuai.
Pembahasan lebih detail bisa dibaca di artikel berikut:
Artikel Terkait Laravel
Penutup
Konfigurasi server adalah fondasi dari aplikasi Laravel. Dengan setup Nginx yang benar, PHP-FPM sesuai versi, dan permission yang rapi, aplikasi Laravel akan berjalan stabil baik di local maupun production.