Tutorial 23 Jul 2026 38 Kali Dibaca

Cara Mengatur File .env Laravel untuk Server Production dengan Aman

Gugun Nurdiansyah
Penulis
Cara Mengatur File .env Laravel untuk Server Production dengan Aman

Apa Itu File .env pada Laravel?

File .env adalah file konfigurasi lingkungan yang digunakan Laravel untuk menyimpan nilai yang dapat berbeda pada setiap server.

Sebagai contoh, aplikasi yang dijalankan di komputer lokal dapat menggunakan database, alamat website, layanan email, dan pengaturan cache yang berbeda dari server production.

Beberapa informasi yang biasanya disimpan di dalam file .env meliputi:

  1. Nama dan lingkungan aplikasi.

  2. Application key.

  3. URL website.

  4. Koneksi database.

  5. Konfigurasi session.

  6. Sistem cache.

  7. Queue atau antrean pekerjaan.

  8. Konfigurasi email.

  9. Kredensial Redis.

  10. API key layanan pihak ketiga.

Laravel menggunakan file .env agar informasi tersebut tidak harus ditulis secara langsung di dalam source code. File .env juga tidak boleh dimasukkan ke repository karena dapat berisi password database, API key, dan informasi rahasia lainnya. (Laravel)

Mengapa Konfigurasi .env Production Harus Diperhatikan?

Kesalahan konfigurasi .env dapat menyebabkan berbagai masalah, seperti:

  1. Informasi error tampil kepada pengunjung.

  2. Database gagal terhubung.

  3. Email tidak terkirim.

  4. Session pengguna tidak tersimpan.

  5. Queue tidak berjalan.

  6. URL yang dibuat aplikasi menjadi salah.

  7. Application key tidak ditemukan.

  8. Kredensial layanan bocor.

  9. Website masih menggunakan konfigurasi lokal.

  10. Perubahan .env tidak terbaca karena cache.

Pada server production, file .env harus disesuaikan dengan domain, database, layanan email, dan infrastruktur yang benar-benar digunakan.

Konfigurasi Dasar Laravel untuk Production

Berikut contoh konfigurasi dasar yang dapat digunakan sebagai referensi:

APP_NAME="Nama Aplikasi"
APP_ENV=production
APP_KEY=base64:APPLICATION_KEY_ANDA
APP_DEBUG=false
APP_URL=https://domainanda.com

APP_LOCALE=id
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=id_ID

LOG_CHANNEL=stack
LOG_LEVEL=error

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=user_database
DB_PASSWORD=password_database

SESSION_DRIVER=database
SESSION_LIFETIME=120

CACHE_STORE=database
QUEUE_CONNECTION=database

MAIL_MAILER=smtp
MAIL_HOST=smtp.domainanda.com
MAIL_PORT=587
MAIL_USERNAME=email@domainanda.com
MAIL_PASSWORD=password_email
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=email@domainanda.com
MAIL_FROM_NAME="${APP_NAME}"

Konfigurasi tersebut hanya contoh. Nama variabel dapat berbeda tergantung versi Laravel, paket yang digunakan, serta isi file dalam folder config.

Sebaiknya gunakan .env.example dari project Anda sebagai acuan utama, kemudian isi nilainya sesuai dengan server production.

1. Gunakan APP_ENV=production

Pada server production, gunakan:

APP_ENV=production

Nilai APP_ENV digunakan Laravel untuk menentukan lingkungan aplikasi yang sedang berjalan.

Beberapa paket atau konfigurasi aplikasi juga dapat menggunakan nilai tersebut untuk membedakan pengaturan lokal, staging, dan production.

Hindari menggunakan:

APP_ENV=local

pada website yang sudah dapat diakses oleh pelanggan.

2. Pastikan APP_DEBUG=false

Konfigurasi terpenting untuk server production adalah:

APP_DEBUG=false

Ketika APP_DEBUG=true, Laravel dapat menampilkan detail error, struktur folder, query, konfigurasi, dan informasi lain yang seharusnya tidak dilihat oleh pengunjung.

Laravel secara resmi memperingatkan bahwa APP_DEBUG harus selalu bernilai false pada production karena mode debug dapat mengekspos nilai konfigurasi sensitif kepada pengguna. (Laravel)

Gunakan APP_DEBUG=true hanya pada lingkungan pengembangan yang tidak dapat diakses secara publik.

3. Atur APP_URL Sesuai Domain

Gunakan alamat domain lengkap dengan HTTPS:

APP_URL=https://domainanda.com

Jangan menggunakan:

APP_URL=http://localhost

atau:

APP_URL=http://127.0.0.1:8000

pada server production.

Nilai APP_URL dapat digunakan aplikasi ketika membuat URL, tautan email, file, notifikasi, atau perintah yang dijalankan melalui terminal.

Jika aplikasi menggunakan subdomain, masukkan alamat subdomain yang benar:

APP_URL=https://app.domainanda.com

Pastikan alamat yang digunakan sesuai dengan konfigurasi SSL dan domain pada server.

4. Pastikan APP_KEY Sudah Terisi

Application key disimpan pada bagian:

APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=

Jika masih kosong, jalankan:

php artisan key:generate

Laravel merekomendasikan perintah tersebut karena menghasilkan key menggunakan generator angka acak yang aman dari PHP. (Laravel)

Jangan membuat application key baru secara sembarangan pada aplikasi production yang sudah digunakan.

Mengganti APP_KEY dapat menyebabkan:

  1. Seluruh pengguna keluar dari akun.

  2. Cookie lama tidak dapat dibaca.

  3. Data terenkripsi gagal dibuka.

  4. Token tertentu menjadi tidak valid.

Laravel mendukung rotasi key menggunakan APP_PREVIOUS_KEYS, tetapi proses tersebut tetap harus direncanakan dan diuji dengan baik. (Laravel)

Sebelum mengubah APP_KEY, selalu buat backup file .env dan simpan key lama di tempat yang aman.

5. Atur Koneksi Database dengan Benar

Contoh konfigurasi MySQL:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=user_database
DB_PASSWORD="password_database"

Pada shared hosting, nilai DB_HOST biasanya menggunakan:

DB_HOST=localhost

Namun, beberapa penyedia hosting menggunakan alamat database khusus. Gunakan informasi yang diberikan oleh penyedia server.

Jika password mengandung karakter khusus atau spasi, gunakan tanda kutip:

DB_PASSWORD="Password!Dengan#Karakter$Khusus"

Jangan menggunakan akun root database untuk aplikasi production apabila server memungkinkan pembuatan pengguna database khusus.

Buat pengguna database dengan hak akses yang hanya diperlukan oleh aplikasi.

6. Pilih Session Driver yang Sesuai

Session digunakan untuk menyimpan status login dan informasi sementara pengguna.

Beberapa pilihan session driver Laravel meliputi:

SESSION_DRIVER=file
SESSION_DRIVER=database

atau:

SESSION_DRIVER=redis

Untuk aplikasi yang berjalan pada satu server sederhana, driver file dapat digunakan selama folder session memiliki permission yang benar.

Untuk aplikasi multi-server atau sistem yang membutuhkan pengelolaan session terpusat, database atau Redis biasanya lebih sesuai.

Jika menggunakan:

SESSION_DRIVER=database

pastikan tabel sessions tersedia. Laravel menyediakan perintah untuk membuat migration tabel session jika project belum memilikinya. (Laravel)

Jalankan:

php artisan make:session-table
php artisan migrate

Periksa terlebih dahulu migration project karena versi Laravel baru mungkin sudah menyertakan tabel session secara default.

7. Atur Cache untuk Production

Cache membantu aplikasi menyimpan data yang sering digunakan agar tidak selalu diproses ulang.

Pilihan yang dapat digunakan antara lain:

CACHE_STORE=file
CACHE_STORE=database

atau:

CACHE_STORE=redis

Untuk aplikasi kecil pada satu server, file atau database dapat digunakan.

Redis lebih sesuai untuk aplikasi dengan trafik lebih besar, banyak worker, atau beberapa server. Laravel mendukung berbagai backend cache, termasuk database, Redis, Memcached, dan DynamoDB. (Laravel)

Jika menggunakan database cache, pastikan tabel cache tersedia dan migration telah dijalankan.

8. Atur Queue Connection

Queue digunakan untuk memproses pekerjaan di belakang layar, seperti:

  1. Mengirim email.

  2. Membuat laporan.

  3. Memproses gambar.

  4. Mengirim notifikasi.

  5. Sinkronisasi data.

  6. Menjalankan integrasi API.

Untuk pengujian sederhana, aplikasi dapat menggunakan:

QUEUE_CONNECTION=sync

Namun, seluruh pekerjaan akan dijalankan pada request yang sama sehingga pengguna harus menunggu proses selesai.

Untuk production, Anda dapat menggunakan:

QUEUE_CONNECTION=database

atau:

QUEUE_CONNECTION=redis

Jika menggunakan queue selain sync, pastikan worker dijalankan melalui Supervisor, systemd, atau process monitor lainnya.

Queue worker merupakan proses yang berjalan dalam waktu lama. Setelah konfigurasi atau source code diperbarui, worker perlu dimulai ulang agar membaca perubahan terbaru. (Laravel)

Perintah yang dapat digunakan:

php artisan queue:restart

Jika menggunakan Laravel Horizon:

php artisan horizon:terminate

9. Atur Konfigurasi Email

Contoh konfigurasi SMTP:

MAIL_MAILER=smtp
MAIL_HOST=smtp.domainanda.com
MAIL_PORT=587
MAIL_USERNAME=email@domainanda.com
MAIL_PASSWORD="password-email"
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=email@domainanda.com
MAIL_FROM_NAME="${APP_NAME}"

Periksa informasi berikut:

  1. Alamat server SMTP.

  2. Port SMTP.

  3. Jenis enkripsi.

  4. Username.

  5. Password.

  6. Alamat pengirim.

  7. Nama pengirim.

Jangan menggunakan konfigurasi email pengujian pada server production.

Lakukan pengujian pengiriman email setelah deployment, terutama untuk fitur:

  1. Reset password.

  2. Verifikasi email.

  3. Invoice.

  4. Notifikasi pesanan.

  5. Pemberitahuan sistem.

10. Atur Logging dengan Wajar

Laravel mendukung beberapa channel log, seperti file tunggal, log harian, system error log, dan layanan eksternal. (Laravel)

Contoh sederhana:

LOG_CHANNEL=stack
LOG_LEVEL=error

Untuk kebutuhan monitoring yang lebih lengkap, tingkat log dapat disesuaikan:

LOG_LEVEL=warning

Jangan mencatat password, token, API key, nomor kartu, atau data sensitif lainnya ke dalam log.

Periksa juga kapasitas penyimpanan karena file log yang tidak dikelola dapat memenuhi ruang server.

Untuk log berbasis file, Anda dapat menggunakan channel harian dan menetapkan kebijakan penghapusan log lama melalui konfigurasi aplikasi.

11. Jangan Memanggil env() Langsung di Controller

Hindari penggunaan seperti berikut di controller atau service:

$apiKey = env('PAYMENT_API_KEY');

Masukkan environment variable ke file konfigurasi terlebih dahulu.

Contoh pada config/services.php:

'payment' => [
    'key' => env('PAYMENT_API_KEY'),
],

Kemudian panggil melalui:

$apiKey = config('services.payment.key');

Laravel menyatakan bahwa setelah konfigurasi di-cache, file .env tidak dimuat pada setiap request. Karena itu, fungsi env() sebaiknya hanya digunakan di dalam file konfigurasi pada folder config. (Laravel)

12. Jalankan Configuration Cache

Setelah seluruh isi .env diperiksa, jalankan:

php artisan config:clear
php artisan config:cache

Atau gunakan:

php artisan optimize

Laravel merekomendasikan cache konfigurasi sebagai bagian dari proses deployment production. Perintah php artisan optimize juga dapat melakukan cache konfigurasi, event, route, dan view. (Laravel)

Setelah config:cache dijalankan, perubahan pada .env tidak langsung terbaca.

Jika Anda mengubah .env, jalankan kembali:

php artisan config:clear
php artisan config:cache

Untuk membersihkan seluruh cache optimasi:

php artisan optimize:clear

13. Jangan Upload File .env ke Repository

Pastikan file .gitignore memiliki baris berikut:

.env

File .env tidak boleh dimasukkan ke GitHub, GitLab, atau repository publik.

Gunakan .env.example sebagai template:

APP_NAME=
APP_ENV=
APP_KEY=
APP_DEBUG=
APP_URL=

DB_CONNECTION=
DB_HOST=
DB_PORT=
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=

Jangan masukkan password atau API key asli ke dalam .env.example.

Laravel secara resmi menyarankan agar .env tidak disimpan di source control karena setiap lingkungan memiliki konfigurasi berbeda dan file tersebut dapat mengekspos kredensial sensitif. (Laravel)

14. Lindungi Permission File .env

Batasi akses file .env hanya kepada pengguna dan proses server yang benar-benar membutuhkan.

Permission yang terlalu terbuka dapat memungkinkan pengguna server lain membaca kredensial aplikasi.

Pada VPS, permission dapat diatur sesuai ownership server, misalnya:

chmod 640 .env

atau pada konfigurasi yang lebih terbatas:

chmod 600 .env

Jangan langsung menyalin angka permission tanpa memeriksa user PHP-FPM, web server, dan ownership project.

Prinsip utamanya adalah memberikan akses minimum yang diperlukan. OWASP juga merekomendasikan penggunaan sistem pengelolaan secrets khusus, pembatasan hak akses, audit, serta rotasi kredensial untuk lingkungan production. (cheatsheetseries.owasp.org)

15. Pastikan Web Root Mengarah ke Folder Public

Server Laravel harus diarahkan ke:

/project-laravel/public

Jangan arahkan domain ke root project yang berisi:

.env
app
bootstrap
config
storage
vendor

Laravel memperingatkan bahwa web server harus mengarahkan request ke public/index.php. Menjalankan website dari root project dapat mengekspos file konfigurasi sensitif ke internet. (Laravel)

Pada shared hosting, source Laravel dapat ditempatkan di luar public_html, sedangkan isi folder public digunakan sebagai document root domain.

16. Gunakan Secret Manager untuk Sistem yang Lebih Besar

Untuk aplikasi perusahaan, container, Kubernetes, atau infrastruktur cloud, kredensial tidak harus selalu disimpan sebagai file .env biasa.

Perusahaan dapat menggunakan:

  1. AWS Secrets Manager.

  2. Google Secret Manager.

  3. Azure Key Vault.

  4. HashiCorp Vault.

  5. Secret management dari platform deployment.

  6. Secret injection melalui deployment pipeline.

Secret manager membantu mengelola hak akses, rotasi, audit, dan perubahan kredensial secara lebih terstruktur.

OWASP menyarankan penggunaan layanan yang memang dirancang khusus untuk mengelola secret, termasuk pencatatan aktivitas serta siklus pembuatan, rotasi, pencabutan, dan kedaluwarsa kredensial. (cheatsheetseries.owasp.org)

Urutan Deployment yang Disarankan

Berikut contoh urutan deployment Laravel:

composer install --no-dev --optimize-autoloader

php artisan migrate --force

php artisan optimize:clear

php artisan optimize

php artisan queue:restart

Jika menggunakan Horizon:

php artisan horizon:terminate

Pastikan folder berikut dapat ditulis oleh web server:

storage
bootstrap/cache

Laravel menyebutkan bahwa web server membutuhkan hak tulis pada kedua folder tersebut agar aplikasi dapat berjalan dengan benar. (Laravel)

Checklist File .env Laravel Production

Sebelum website dibuka untuk pengguna, periksa beberapa hal berikut:

  1. APP_ENV=production.

  2. APP_DEBUG=false.

  3. APP_URL menggunakan domain dan HTTPS.

  4. APP_KEY sudah tersedia.

  5. Database production sudah benar.

  6. Password database tidak menggunakan kredensial lokal.

  7. Konfigurasi session tersedia.

  8. Cache driver sudah sesuai.

  9. Queue worker berjalan.

  10. SMTP berhasil mengirim email.

  11. API key production sudah digunakan.

  12. File .env tidak masuk repository.

  13. Permission file dibatasi.

  14. Domain mengarah ke folder public.

  15. Cache konfigurasi sudah dibuat.

  16. Worker telah dimulai ulang.

  17. Backup .env disimpan dengan aman.

  18. Log tidak menampilkan informasi sensitif.

Kesalahan yang Sering Terjadi

Beberapa kesalahan umum ketika mengatur .env production adalah:

APP_DEBUG Masih Aktif

APP_DEBUG=true

Kondisi ini dapat menampilkan informasi sensitif saat terjadi error.

APP_URL Masih Localhost

APP_URL=http://localhost

Akibatnya, tautan email dan URL aplikasi dapat mengarah ke alamat yang salah.

Mengubah .env tanpa Membersihkan Cache

Perubahan tidak terbaca karena Laravel masih menggunakan cached configuration.

Menggunakan APP_KEY dari Aplikasi Lain

Setiap aplikasi sebaiknya memiliki key sendiri.

Menjalankan key:generate pada Aplikasi Aktif

Hal ini dapat memutus session dan membuat data terenkripsi lama tidak dapat dibaca.

Mengunggah .env ke GitHub

Kredensial server dapat terlihat oleh pihak lain.

Menempatkan Project di Document Root

File .env, source code, dan folder internal dapat berisiko terakses publik.

Menyimpan Password Langsung di Source Code

Kredensial harus dikelola melalui konfigurasi atau secret manager, bukan ditulis di controller maupun repository.

Pengembangan dan Deployment Laravel Bersama Ovla Media

Pengaturan .env merupakan salah satu bagian penting dalam deployment Laravel. Namun, aplikasi production juga membutuhkan konfigurasi web server, database, permission, SSL, queue, scheduler, backup, dan monitoring.

Ovla Media menyediakan layanan pengembangan, deployment, perbaikan, dan pemeliharaan aplikasi Laravel.

Layanan yang dapat disesuaikan meliputi:

  1. Deployment Laravel ke cPanel.

  2. Deployment Laravel ke VPS.

  3. Konfigurasi Nginx atau Apache.

  4. Pengaturan file .env.

  5. Migrasi database.

  6. Konfigurasi queue dan scheduler.

  7. Integrasi payment gateway.

  8. Integrasi email dan API.

  9. Perbaikan permission dan storage.

  10. Optimasi aplikasi production.

  11. Migrasi dari shared hosting ke VPS.

  12. Pengembangan aplikasi bisnis custom.

Kesimpulan

File .env menyimpan berbagai konfigurasi penting yang dibutuhkan aplikasi Laravel.

Pada server production, pastikan konfigurasi utama menggunakan:

APP_ENV=production
APP_DEBUG=false
APP_URL=https://domainanda.com

Pastikan juga APP_KEY, database, email, session, cache, queue, serta kredensial layanan pihak ketiga telah disesuaikan dengan server production.

File .env tidak boleh disimpan di repository, tidak boleh dapat diakses publik, dan hak aksesnya harus dibatasi.

Setelah konfigurasi selesai, jalankan:

php artisan optimize:clear
php artisan optimize

Jika aplikasi menggunakan queue worker, restart worker agar membaca konfigurasi terbaru.

Dengan pengaturan .env yang benar, aplikasi Laravel dapat berjalan dengan lebih aman, stabil, dan siap digunakan dalam lingkungan production.

Konsultasi & Solusi

Butuh implementasi untuk kebutuhan bisnis?

OVLA Media membantu pengembangan dan optimasi aplikasi web, integrasi sistem, serta solusi Laravel sesuai kebutuhan perusahaan Anda.

#Laravel #File ENV Laravel #Laravel Production #Konfigurasi Laravel #APP_ENV Laravel #APP_DEBUG Laravel #APP_KEY Laravel #Laravel Deployment #Laravel cPanel #Laravel VPS #Environment Variable #Keamanan Laravel #Database Laravel #Cache Laravel #Queue Laravel #Laravel Configuration Cache #PHP Artisan #Web Development #PHP Developer #Laravel Developer Indonesia #Ovla Media #Jasa Laravel #Jasa Deployment Laravel #Jasa Perbaikan Laravel
Beranda Produk Artikel
Konsultasi
OVLA

Navigasi Utama

Hubungi Kami

Mulai Konsultasi Sekarang