Daftar Isi
- Langkah-Langkah Dasar Deployment Aplikasi Laravel ke Heroku
- 1. Persiapan Proyek Laravel
- 2. Membuat File Procfile
- 3. Mengatur Database di Heroku
- 4. Menyiapkan Git dan Deploy ke Heroku
- 5. Menjalankan Migrasi dan Cache
- 6. Mengatur Variabel Lingkungan (Env Variables)
- Tips Praktis untuk Sukses Deployment Aplikasi Laravel ke Heroku
- Gunakan Buildpack yang Tepat
- Optimalkan Storage dengan S3
- Gunakan Add‑on Redis untuk Cache
- Monitoring dan Logging
- Masalah Umum yang Mungkin Dihadapi Saat Deployment Aplikasi Laravel ke Heroku
- 1. Error “Class not found” atau “Missing package”
- 2. “Connection refused” pada PostgreSQL
- 3. Cache Config Tidak Terupdate
- 4. Asset Tidak Tampil (CSS/JS)
- Contoh Kasus: Mengintegrasikan UI/UX Custom pada Deployment Laravel ke Heroku
- Menjaga Keamanan pada Deployment Aplikasi Laravel ke Heroku
- Skalabilitas: Menambah Dyno dan Memanfaatkan Add‑on
- Kesimpulan Praktis
Laravel telah menjadi salah satu framework PHP paling populer karena sintaks yang elegan dan ekosistem yang kaya. Namun, menulis kode saja tidak cukup; aplikasi harus dapat diakses oleh pengguna lewat internet. Di sinilah deployment aplikasi Laravel ke Heroku berperan penting. Heroku menawarkan platform as‑as‑service (PaaS) yang memudahkan developer menghosting aplikasi tanpa harus mengelola server secara manual.
Artikel ini akan membahas secara detail proses deployment aplikasi Laravel ke Heroku mulai dari persiapan lingkungan lokal, konfigurasi file penting, hingga troubleshooting umum yang sering muncul. Dengan mengikuti panduan ini, bahkan developer yang baru pertama kali menggunakan Heroku pun dapat meluncurkan aplikasi Laravel mereka dalam hitungan menit.
Sebelum melangkah lebih jauh, ada baiknya memahami mengapa Heroku menjadi pilihan menarik untuk Laravel. Platform ini menyediakan add‑on database, scaling otomatis, serta dukungan Git yang memudahkan proses continuous deployment. Semua ini memungkinkan tim fokus pada pengembangan fitur, bukan pada urusan infrastruktur.
Langkah-Langkah Dasar Deployment Aplikasi Laravel ke Heroku
Berikut rangkaian tahapan yang perlu Anda ikuti untuk menyiapkan deployment aplikasi Laravel ke Heroku. Setiap langkah diuraikan secara terperinci agar tidak ada yang terlewat.
1. Persiapan Proyek Laravel
- Versi PHP yang Didukung: Pastikan proyek Anda menggunakan PHP 8.1 atau lebih tinggi, karena Heroku menyediakan runtime yang dapat Anda pilih lewat file
composer.json. - Composer Dependencies: Jalankan
composer install --no-devuntuk menghilangkan paket pengembangan yang tidak diperlukan pada produksi. - File .env: Simpan konfigurasi sensitif di file
.env, tetapi jangan commit ke repositori. Heroku akan mengelola variabel lingkungan secara terpisah.
2. Membuat File Procfile
Heroku membutuhkan file bernama Procfile di root proyek untuk mengetahui perintah apa yang harus dijalankan saat aplikasi di‑start. Contoh isi sederhana untuk Laravel:
web: vendor/bin/heroku-php-apache2 public/
Baris ini memberi tahu Heroku untuk menggunakan server Apache yang sudah terintegrasi dengan PHP, dan mengarahkan ke folder public Laravel.
3. Mengatur Database di Heroku
Heroku menyediakan add‑on PostgreSQL secara gratis untuk aplikasi kecil. Untuk deployment aplikasi Laravel ke Heroku, lakukan langkah berikut:
- Buka dashboard Heroku, pilih aplikasi Anda, lalu masuk ke tab Resources.
- Tambahkan add‑on Heroku Postgres. Setelah terpasang, Heroku otomatis menambahkan variabel
DATABASE_URLke konfigurasi lingkungan. - Di file
config/database.php, ubah koneksi default menjadi:
'pgsql' => [
'driver' => 'pgsql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
],
Dengan cara ini, Laravel secara otomatis membaca DATABASE_URL yang disediakan oleh Heroku.
4. Menyiapkan Git dan Deploy ke Heroku
Heroku beroperasi lewat Git. Jika proyek Anda belum berada di repositori Git, inisialisasi dulu:
git init
git add .
git commit -m "Initial commit for Heroku deployment"
Selanjutnya, buat aplikasi Heroku lewat CLI:
heroku create nama-aplikasi-anda
Perintah di atas akan menghasilkan URL https://nama-aplikasi-anda.herokuapp.com serta menambahkan remote heroku ke konfigurasi Git Anda.
Untuk melakukan deployment aplikasi Laravel ke Heroku, cukup push ke remote tersebut:
git push heroku main
Jika branch utama Anda bernama master, gunakan git push heroku master.
5. Menjalankan Migrasi dan Cache
Setelah kode berhasil di‑push, Anda perlu menyiapkan database dan mengoptimalkan performa. Jalankan perintah berikut lewat Heroku CLI:
heroku run php artisan migrate --force
heroku run php artisan config:cache
heroku run php artisan route:cache
heroku run php artisan view:cache
Opsi --force diperlukan karena Laravel secara default meminta konfirmasi saat migrasi dijalankan di lingkungan produksi.
6. Mengatur Variabel Lingkungan (Env Variables)
Heroku menyimpan konfigurasi melalui Config Vars. Buka tab Settings di dashboard aplikasi, lalu klik Reveal Config Vars**. Tambahkan variabel yang biasanya ada di file .env, contohnya:
APP_KEY– Dapat di‑generate lewatphp artisan key:generate --showdan paste ke Config Vars.APP_ENV=production,APP_DEBUG=false.MAIL_MAILER=smtp,MAIL_HOST=smtp.mailtrap.io, dan seterusnya.
Dengan begitu, Laravel akan membaca konfigurasi yang tepat pada saat runtime di Heroku.
Tips Praktis untuk Sukses Deployment Aplikasi Laravel ke Heroku
Setelah semua langkah utama selesai, berikut beberapa tips yang dapat meningkatkan stabilitas dan performa aplikasi Anda di Heroku.
Gunakan Buildpack yang Tepat
Heroku secara otomatis mendeteksi PHP buildpack ketika menemukan file composer.json. Namun, bila Anda membutuhkan ekstensi khusus (misalnya ext-gd atau ext-imagick), tambahkan ke bagian require di composer.json:
"require": {
"php": "^8.1",
"ext-gd": "*",
"ext-imagick": "*",
...
}
Setelah commit perubahan, push kembali ke Heroku dan buildpack akan meng‑install ekstensi tersebut.
Optimalkan Storage dengan S3
Laravel secara default menyimpan file upload di folder storage/app/public. Pada platform PaaS seperti Heroku, filesystem bersifat ephermal, artinya file akan hilang saat dyno di‑restart. Solusinya adalah mengintegrasikan Amazon S3 atau layanan sejenis sebagai storage eksternal. Tambahkan driver S3 di config/filesystems.php dan set variabel lingkungan AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, serta AWS_BUCKET di Config Vars Heroku.
Gunakan Add‑on Redis untuk Cache
Jika aplikasi Anda memanfaatkan caching atau queue, pertimbangkan menambahkan Heroku Redis. Setelah terpasang, Anda dapat mengatur CACHE_DRIVER=redis dan QUEUE_CONNECTION=redis di variabel lingkungan.
Monitoring dan Logging
Heroku menyediakan log streaming melalui heroku logs --tail. Untuk analisis lebih dalam, integrasikan dengan layanan seperti Loggly atau Papertrail. Pastikan Anda tidak menulis log ke file lokal, melainkan ke stderr agar Heroku dapat menangkapnya.
Masalah Umum yang Mungkin Dihadapi Saat Deployment Aplikasi Laravel ke Heroku
Berikut beberapa kendala yang sering muncul dan cara mengatasinya.
1. Error “Class not found” atau “Missing package”
Hal ini biasanya terjadi karena composer install tidak dijalankan dengan flag --no-dev atau ada paket yang belum terdaftar di composer.json. Periksa kembali file composer.lock dan pastikan semua dependensi tercantum.
2. “Connection refused” pada PostgreSQL
Jika migrasi gagal dengan pesan “Connection refused”, pastikan variabel DATABASE_URL sudah ada di Config Vars dan formatnya benar. Kadang‑kadang Heroku membutuhkan restart dyno setelah menambahkan add‑on database:
heroku restart
3. Cache Config Tidak Terupdate
Setelah mengubah .env atau Config Vars, jalankan kembali perintah cache:
heroku run php artisan config:clear
heroku run php artisan config:cache
Ini memastikan Laravel membaca konfigurasi terbaru.
4. Asset Tidak Tampil (CSS/JS)
Laravel Mix biasanya menghasilkan file di public/js dan public/css. Pastikan Anda menjalankan npm run prod secara lokal, kemudian commit hasilnya ke repository sebelum push ke Heroku. Alternatifnya, gunakan buildpack Node.js untuk melakukan proses build di server Heroku.
Contoh Kasus: Mengintegrasikan UI/UX Custom pada Deployment Laravel ke Heroku
Jika proyek Anda memerlukan jasa pembuatan aplikasi custom UI/UX desain responsif, proses deployment aplikasi Laravel ke Heroku tidak berubah secara signifikan. Namun, Anda harus memastikan bahwa semua asset statis (gambar, font, stylesheet) berada di dalam folder public dan telah di‑optimalkan sebelum di‑push. Gunakan php artisan storage:link untuk membuat symbolic link ke folder storage/app/public jika Anda menyimpan gambar melalui Laravel.
Menjaga Keamanan pada Deployment Aplikasi Laravel ke Heroku
Keamanan menjadi prioritas utama, terutama saat aplikasi berinteraksi dengan data sensitif. Berikut langkah-langkah penting:
- Gunakan HTTPS: Heroku secara otomatis menyediakan sertifikat SSL untuk domain
.herokuapp.com. PastikanAPP_URLdi Config Vars menggunakanhttps://. - Set APP_DEBUG=false: Jangan pernah mengaktifkan debug pada produksi, karena dapat mengungkapkan stack trace.
- Rotasi APP_KEY Secara Berkala: Jika ada indikasi kebocoran, buat key baru dengan
php artisan key:generate --showdan update Config Vars. - Batasi Access ke Database: Heroku Postgres menyediakan fitur pg:reset untuk menghapus data secara penuh ketika diperlukan.
Skalabilitas: Menambah Dyno dan Memanfaatkan Add‑on
Setelah aplikasi berjalan stabil, Anda mungkin ingin meningkatkan kapasitas. Heroku memudahkan proses ini dengan menambah dyno (container) melalui dashboard atau CLI:
heroku ps:scale web=2
Dengan menambah dyno, beban trafik dapat didistribusikan secara otomatis. Untuk queue processing, tambahkan dyno worker:
heroku ps:scale worker=1
Pastikan Procfile Anda menyertakan definisi worker, misalnya worker: php artisan queue:work --sleep=3 --tries=3.
Kesimpulan Praktis
Proses deployment aplikasi Laravel ke Heroku sebenarnya cukup sederhana bila Anda mengikuti langkah‑langkah terstruktur. Mulai dari persiapan proyek, pembuatan Procfile, konfigurasi database, hingga pengaturan variabel lingkungan, semuanya dapat dikelola lewat antarmuka Heroku yang intuitif. Tambahan tip seperti penggunaan S3 untuk storage, Redis untuk cache, serta monitoring log akan meningkatkan keandalan aplikasi dalam jangka panjang.
Bagi yang ingin memperdalam perbandingan arsitektur Laravel dengan framework lain, artikel Arsitektur dan Filosofi Dasar dalam Perbandingan Laravel vs CodeIgniter memberikan wawasan tambahan yang berguna.
Dengan pengetahuan ini, Anda siap meluncurkan aplikasi Laravel ke lingkungan produksi di Heroku, menikmati kemudahan scaling, dan fokus pada pengembangan fitur-fitur yang lebih inovatif.

