Laravel, framework PHP yang populer, menawarkan banyak kemudahan dalam pengembangan aplikasi web. Namun, setelah selesai mengembangkan aplikasi, langkah selanjutnya adalah melakukan deployment agar aplikasi dapat diakses oleh pengguna. Proses ini mungkin terasa rumit bagi sebagian orang, terutama pemula. Nah, di artikel ini, kita akan membahas cara deploy Laravel ke hosting secara lengkap dan step by step, sehingga kamu bisa dengan mudah menjalankan aplikasi Laravel kamu di internet.
Daftar Isi
- Persiapan Sebelum Deploy Laravel ke Hosting
- Memilih Hosting yang Tepat untuk Laravel
- Konfigurasi Aplikasi Laravel untuk Production
- Mengunggah Aplikasi Laravel ke Hosting
- Konfigurasi Web Server (Nginx/Apache) untuk Laravel
- Setting Database pada Hosting
- Migrasi Database Laravel di Hosting
- Setting Environment (.env) di Hosting
- Mengamankan Aplikasi Laravel Setelah Deployment
- Troubleshooting Masalah Umum Saat Deploy Laravel
- Tips Optimasi Performa Aplikasi Laravel Setelah Deploy
- Kesimpulan: Sukses Deploy Laravel ke Hosting!
1. Persiapan Sebelum Deploy Laravel ke Hosting
Sebelum memulai proses deployment, ada beberapa hal penting yang perlu dipersiapkan. Persiapan yang matang akan mempermudah proses deployment dan menghindari masalah di kemudian hari. Berikut adalah daftar persiapannya:
- Backup Aplikasi Laravel: Ini adalah langkah krusial! Selalu buat backup seluruh kode aplikasi, database, dan file konfigurasi. Jika terjadi kesalahan saat deployment, kamu bisa dengan mudah mengembalikan aplikasi ke kondisi semula. Kamu bisa menggunakan perintah
php artisan backup:runjika kamu menggunakan packagespatie/laravel-backup. - Pastikan Aplikasi Berjalan Lokal dengan Baik: Sebelum deploy ke hosting, pastikan aplikasi kamu berjalan lancar di environment lokal. Cek semua fitur, form, dan fungsi lainnya. Ini akan membantu kamu mengidentifikasi dan memperbaiki bug sebelum aplikasi diakses publik.
- Siapkan Akun Hosting: Kamu membutuhkan akun hosting dengan akses ke cPanel, SSH, atau panel kontrol lainnya yang memungkinkan kamu mengelola file dan database.
- Siapkan Aplikasi FTP Client: Aplikasi FTP seperti FileZilla atau Cyberduck dibutuhkan untuk mengunggah file aplikasi Laravel ke hosting.
- Pahami Dasar-Dasar SSH: Akses SSH sangat berguna untuk menjalankan perintah Artisan (seperti migrasi database) dan mengelola aplikasi dari command line. Jika kamu belum familiar, luangkan waktu untuk mempelajari perintah dasar SSH.
- Catat Informasi Penting: Catat detail-detail penting seperti nama database, username database, password database, dan URL database host yang akan digunakan di hosting. Informasi ini akan digunakan untuk konfigurasi environment aplikasi Laravel.
2. Memilih Hosting yang Tepat untuk Laravel: Pertimbangan Penting
Memilih hosting yang tepat adalah kunci keberhasilan deployment Laravel. Tidak semua hosting cocok untuk aplikasi Laravel. Berikut adalah beberapa pertimbangan penting dalam memilih hosting untuk Laravel:
- Spesifikasi Server:
- PHP Version: Pastikan hosting mendukung versi PHP yang kompatibel dengan versi Laravel yang kamu gunakan. Laravel 9 misalnya, membutuhkan PHP 8.0 ke atas.
- MySQL/MariaDB Version: Pastikan database server (MySQL atau MariaDB) memiliki versi yang kompatibel.
- Memory (RAM): RAM yang cukup akan memastikan aplikasi berjalan lancar, terutama jika aplikasi memiliki banyak request atau proses yang memakan memori.
- Storage: Pilih storage yang cukup untuk menampung file aplikasi, database, dan file lainnya. SSD (Solid State Drive) menawarkan performa yang lebih baik dibandingkan HDD (Hard Disk Drive).
- Fitur yang Didukung:
- SSH Access: Akses SSH sangat penting untuk menjalankan perintah Artisan dan mengelola aplikasi dari command line.
- Composer: Composer adalah dependency manager untuk PHP. Pastikan hosting mendukung Composer atau memungkinkan kamu menginstalnya.
- Cron Jobs: Cron jobs digunakan untuk menjalankan tugas terjadwal, seperti mengirim email secara berkala atau membersihkan cache.
- SSL Certificate: SSL Certificate (HTTPS) sangat penting untuk keamanan website. Pastikan hosting menawarkan SSL Certificate gratis atau berbayar.
- Jenis Hosting:
- Shared Hosting: Pilihan yang paling terjangkau, tetapi sumber daya server dibagi dengan pengguna lain. Cocok untuk aplikasi dengan traffic rendah hingga menengah.
- VPS (Virtual Private Server): Menawarkan sumber daya server yang lebih dedicated dibandingkan shared hosting. Cocok untuk aplikasi dengan traffic menengah hingga tinggi.
- Cloud Hosting: Skalabilitas tinggi dan fleksibel. Cocok untuk aplikasi dengan traffic yang fluktuatif atau membutuhkan sumber daya yang besar.
- Dedicated Server: Sumber daya server dedicated hanya untuk kamu. Pilihan termahal, tetapi menawarkan performa dan kontrol tertinggi.
- Reputasi dan Dukungan Teknis: Pilih hosting dengan reputasi baik dan dukungan teknis yang responsif. Baca ulasan pengguna lain sebelum memutuskan.
3. Konfigurasi Aplikasi Laravel untuk Production: Optimasi dan Keamanan
Sebelum mengunggah aplikasi ke hosting, lakukan konfigurasi khusus untuk environment production. Konfigurasi ini bertujuan untuk meningkatkan performa dan keamanan aplikasi.
-
Set
APP_ENVkeproduction: Buka file.envdan ubah nilaiAPP_ENVmenjadiproduction. Ini akan mengaktifkan konfigurasi production dan menonaktifkan debug mode.APP_ENV=production -
Generate Application Key: Jika kamu belum melakukannya, jalankan perintah berikut untuk generate application key:
php artisan key:generate -
Aktifkan Cache: Aktifkan cache konfigurasi, route, dan view untuk meningkatkan performa aplikasi.
php artisan config:cache php artisan route:cache php artisan view:cache -
Kompres Aset (CSS dan JavaScript): Gunakan tools seperti Laravel Mix untuk mengkompresi dan minify file CSS dan JavaScript. Ini akan mengurangi ukuran file dan mempercepat waktu loading halaman.
-
Nonaktifkan Debug Mode: Pastikan
APP_DEBUGdi set kefalsedi file.envpada environment production. Ini akan mencegah informasi sensitif ditampilkan kepada pengguna jika terjadi kesalahan.APP_DEBUG=false -
Konfigurasi Logging: Atur konfigurasi logging agar mencatat error dan warning ke file log. Ini akan membantu kamu memantau dan memperbaiki masalah yang mungkin timbul di environment production.
-
Environment Variable: Jangan menyimpan credential sensitif (seperti password database atau API key) langsung di dalam kode. Gunakan environment variable melalui file
.envdan akses melalui fungsienv().
4. Mengunggah Aplikasi Laravel ke Hosting: Cara Praktis Menggunakan FTP
Ada beberapa cara untuk mengunggah aplikasi Laravel ke hosting. Cara yang paling umum dan mudah adalah menggunakan FTP (File Transfer Protocol).
- Buka Aplikasi FTP Client: Buka aplikasi FTP client seperti FileZilla atau Cyberduck.
- Masukkan Informasi Koneksi: Masukkan informasi koneksi FTP yang diberikan oleh hosting kamu, yaitu:
- Host: Alamat server FTP (biasanya berupa alamat IP atau hostname).
- Username: Username akun FTP.
- Password: Password akun FTP.
- Port: Port FTP (biasanya 21).
- Hubungkan ke Server: Klik tombol “Quickconnect” atau “Connect” untuk terhubung ke server FTP.
- Navigasi ke Direktori Publik: Setelah terhubung, navigasi ke direktori publik website kamu. Nama direktori ini biasanya
public_html,httpdocs, atauwww. Tergantung konfigurasi hosting. - Unggah File Aplikasi: Pilih semua file dan folder aplikasi Laravel kamu (kecuali folder
public) di komputer lokal, kemudian drag and drop ke direktori yang tepat di server hosting. - Pindahkan Isi Folder
publicLaravel: Pindahkan isi (bukan foldernya) folderpublicdari aplikasi Laravel kamu ke direktoripublic_htmlatau direktori website kamu di server hosting. - Tunggu Proses Unggah Selesai: Proses unggah mungkin memakan waktu tergantung ukuran file dan kecepatan koneksi internet.
Catatan Penting: Pastikan kamu mengunggah file aplikasi ke direktori yang benar. Jika kamu mengunggah ke direktori yang salah, website kamu tidak akan berfungsi.
5. Konfigurasi Web Server (Nginx/Apache) untuk Laravel: Setting Virtual Host
Setelah mengunggah file aplikasi, langkah selanjutnya adalah mengkonfigurasi web server (Nginx atau Apache) agar mengarah ke direktori public di dalam aplikasi Laravel. Proses ini melibatkan pengaturan virtual host.
Untuk Apache:
-
Cari File
.htaccess: Pastikan ada file.htaccessdi direktoripublic_htmlatau direktori website kamu. Jika tidak ada, buat file.htaccessbaru dengan konten berikut:<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>File
.htaccessini akan mengarahkan semua request ke fileindex.phpdi direktoripublic. -
Aktifkan Mod Rewrite: Pastikan mod_rewrite diaktifkan di server Apache. Ini biasanya diaktifkan secara default, tetapi kamu mungkin perlu mengaktifkannya secara manual melalui panel kontrol hosting atau melalui command line jika kamu memiliki akses root.
Untuk Nginx:
Kamu perlu mengkonfigurasi virtual host Nginx. Lokasi file konfigurasi virtual host bervariasi tergantung pada sistem operasi dan konfigurasi server kamu. Biasanya terletak di /etc/nginx/sites-available/ atau /usr/local/nginx/conf/.
Contoh konfigurasi virtual host Nginx:
server {
listen 80;
server_name contohdomain.com; # Ganti dengan nama domain kamu
root /path/to/your/laravel/public; # Ganti dengan path ke direktori public Laravel kamu
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # Ganti dengan path ke PHP-FPM socket kamu
}
location ~ /.ht {
deny all;
}
}
Penjelasan:
listen 80;: Mendengarkan port 80 (HTTP).server_name contohdomain.com;: Nama domain yang akan di-serve oleh virtual host ini.root /path/to/your/laravel/public;: Direktori root website, yaitu direktoripublicaplikasi Laravel kamu.index index.php index.html index.htm;: File index yang akan dicari.location / { ... }: Mengatur bagaimana request ditangani.location ~ .php$ { ... }: Mengatur bagaimana file PHP ditangani.fastcgi_pass unix:/run/php/php7.4-fpm.sock;: Path ke PHP-FPM socket.
Setelah mengkonfigurasi virtual host Nginx, restart server Nginx untuk menerapkan perubahan:
sudo systemctl restart nginx
Penting: Ganti contohdomain.com, /path/to/your/laravel/public, dan /run/php/php7.4-fpm.sock dengan nilai yang sesuai dengan konfigurasi server kamu. Sesuaikan juga versi PHP-FPM dengan versi PHP yang kamu gunakan.
6. Setting Database pada Hosting: Membuat Database dan User
Setelah aplikasi Laravel terunggah, langkah selanjutnya adalah membuat database dan user database di hosting.
- Login ke cPanel atau Panel Kontrol Hosting: Login ke cPanel atau panel kontrol hosting kamu.
- Cari Bagian Database: Cari bagian yang berhubungan dengan database, biasanya bernama “MySQL Databases” atau “Databases”.
- Buat Database Baru: Buat database baru dengan nama yang kamu inginkan. Catat nama database ini.
- Buat User Database: Buat user database baru dengan username dan password yang aman. Catat username dan password ini.
- Berikan Hak Akses ke User: Berikan user database yang baru dibuat hak akses ke database yang baru dibuat. Biasanya kamu perlu memberikan hak akses “ALL PRIVILEGES”.
7. Migrasi Database Laravel di Hosting: Menjalankan Struktur Database
Setelah membuat database dan user, langkah selanjutnya adalah melakukan migrasi database Laravel di hosting. Migrasi database akan membuat tabel-tabel yang dibutuhkan oleh aplikasi Laravel kamu.
-
Akses SSH ke Hosting: Akses SSH ke server hosting kamu.
-
Navigasi ke Direktori Aplikasi Laravel: Navigasi ke direktori tempat kamu mengunggah aplikasi Laravel kamu.
-
Jalankan Perintah Migrasi: Jalankan perintah migrasi berikut:
php artisan migratePerintah ini akan menjalankan semua file migrasi yang ada di folder
database/migrations.Jika kamu ingin melakukan seed database (mengisi data awal), jalankan perintah berikut:
php artisan db:seedPastikan file-file seeder sudah kamu buat sebelumnya di folder
database/seeders.
8. Setting Environment (.env) di Hosting: Konfigurasi Database dan Lainnya
Setelah migrasi database, langkah selanjutnya adalah mengkonfigurasi file .env di hosting. File .env berisi konfigurasi penting seperti informasi koneksi database, API key, dan lain-lain.
-
Buka File
.env: Buka file.envdi direktori aplikasi Laravel kamu. Kamu bisa menggunakan editor teks melalui SSH atau melalui panel kontrol hosting (jika tersedia). -
Konfigurasi Database: Ubah nilai-nilai berikut sesuai dengan informasi database yang telah kamu buat:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 # Atau alamat database host dari hosting kamu DB_PORT=3306 DB_DATABASE=nama_database_kamu DB_USERNAME=username_database_kamu DB_PASSWORD=password_database_kamuGanti
nama_database_kamu,username_database_kamu, danpassword_database_kamudengan nilai yang benar. -
Konfigurasi Lainnya: Konfigurasi variabel lingkungan lainnya sesuai dengan kebutuhan aplikasi kamu, seperti:
APP_URL: URL aplikasi kamu (misalnyahttps://contohdomain.com).APP_DEBUG: Set kefalsedi environment production.MAIL_MAILER,MAIL_HOST,MAIL_PORT,MAIL_USERNAME,MAIL_PASSWORD,MAIL_ENCRYPTION,MAIL_FROM_ADDRESS,MAIL_FROM_NAME: Konfigurasi untuk pengiriman email.- API key dan credential lainnya.
Penting: Simpan perubahan pada file .env setelah selesai mengkonfigurasi.
9. Mengamankan Aplikasi Laravel Setelah Deployment: Langkah-Langkah Penting
Setelah aplikasi Laravel berhasil di-deploy, penting untuk mengambil langkah-langkah keamanan untuk melindungi aplikasi dari ancaman keamanan.
-
Gunakan HTTPS: Pastikan website kamu menggunakan HTTPS dengan memasang SSL Certificate. HTTPS mengenkripsi komunikasi antara browser dan server, sehingga mencegah eavesdropping dan man-in-the-middle attack.
-
Update Laravel dan Packages: Selalu update Laravel dan package yang digunakan ke versi terbaru. Versi terbaru biasanya mengandung perbaikan keamanan.
composer update -
Lindungi File
.env: File.envberisi informasi sensitif. Pastikan file ini tidak bisa diakses publik. Biasanya, web server secara default tidak akan memperbolehkan akses langsung ke file.env. Pastikan konfigurasi ini benar. -
Gunakan Middleware untuk Otentikasi dan Otorisasi: Gunakan middleware untuk melindungi route yang sensitif. Pastikan hanya pengguna yang terotentikasi dan memiliki otorisasi yang sesuai yang bisa mengakses route tersebut.
-
Sanitasi Input Pengguna: Selalu sanitasi input pengguna untuk mencegah SQL injection dan cross-site scripting (XSS). Gunakan helper function Laravel seperti
htmlspecialchars()danstrip_tags()untuk membersihkan input. -
Gunakan CSRF Protection: Laravel secara default menyediakan CSRF (Cross-Site Request Forgery) protection. Pastikan CSRF protection diaktifkan dan digunakan dengan benar.
-
Monitor Log Aplikasi: Monitor log aplikasi secara berkala untuk mendeteksi aktivitas yang mencurigakan.
-
Rate Limiting: Implementasikan rate limiting untuk membatasi jumlah request dari satu alamat IP dalam periode waktu tertentu. Ini bisa membantu mencegah brute-force attack dan DoS attack.
10. Troubleshooting Masalah Umum Saat Deploy Laravel: Solusi Praktis
Saat deploy Laravel, kamu mungkin akan menemui beberapa masalah. Berikut adalah beberapa masalah umum dan solusinya:
-
Website Menampilkan Error 500 (Internal Server Error):
- Penyebab: Biasanya disebabkan oleh kesalahan kode, konfigurasi server yang salah, atau permission file yang tidak tepat.
- Solusi:
- Periksa log aplikasi Laravel (di
storage/logs/laravel.log) untuk mencari pesan error. - Pastikan konfigurasi database di file
.envsudah benar. - Pastikan permission file dan folder sudah benar (biasanya 775 untuk folder dan 664 untuk file).
- Pastikan mod_rewrite diaktifkan di server Apache (jika menggunakan Apache).
- Periksa log aplikasi Laravel (di
-
Website Menampilkan Halaman Kosong:
- Penyebab: Biasanya disebabkan oleh kesalahan konfigurasi virtual host atau file
.htaccessyang tidak benar. - Solusi:
- Pastikan virtual host sudah dikonfigurasi dengan benar dan mengarah ke direktori
publicaplikasi Laravel. - Pastikan file
.htaccessada dan berisi konfigurasi yang benar (jika menggunakan Apache).
- Pastikan virtual host sudah dikonfigurasi dengan benar dan mengarah ke direktori
- Penyebab: Biasanya disebabkan oleh kesalahan konfigurasi virtual host atau file
-
Error Database Connection:
- Penyebab: Konfigurasi database di file
.envsalah atau server database tidak bisa diakses. - Solusi:
- Pastikan informasi koneksi database (host, port, database, username, password) di file
.envsudah benar. - Pastikan server database berjalan dan bisa diakses dari server hosting.
- Pastikan informasi koneksi database (host, port, database, username, password) di file
- Penyebab: Konfigurasi database di file
-
Error Class Not Found:
- Penyebab: Biasanya disebabkan oleh dependency yang belum ter-install.
- Solusi:
- Jalankan perintah
composer installuntuk meng-install semua dependency yang dibutuhkan.
- Jalankan perintah
-
Cache Issues:
-
Penyebab: Cache yang kedaluwarsa bisa menyebabkan masalah.
-
Solusi:
-
Bersihkan cache konfigurasi, route, dan view:
php artisan config:clear php artisan route:clear php artisan view:clear php artisan cache:clear
-
-
11. Tips Optimasi Performa Aplikasi Laravel Setelah Deploy: Memastikan Kecepatan Website
Setelah aplikasi Laravel berhasil di-deploy, optimasi performa sangat penting untuk memastikan website berjalan cepat dan responsif.
- Gunakan Cache:
- HTTP Cache: Gunakan HTTP cache untuk menyimpan response dari server di browser pengguna. Ini akan mengurangi beban server dan mempercepat waktu loading halaman.
- Database Query Cache: Cache hasil query database yang sering diakses. Laravel menyediakan fitur query cache yang mudah digunakan.
- Object Cache: Gunakan object cache seperti Redis atau Memcached untuk menyimpan data yang sering diakses dalam memori.
- Gunakan CDN (Content Delivery Network): CDN menyimpan cache konten website (seperti gambar, CSS, dan JavaScript) di server yang tersebar di seluruh dunia. Ketika pengguna mengakses website, konten akan di-serve dari server CDN terdekat, sehingga mempercepat waktu loading halaman.
- Optimize Gambar: Kompresi gambar tanpa mengurangi kualitas secara signifikan. Gunakan format gambar yang optimal seperti WebP.
- Minify CSS dan JavaScript: Minify file CSS dan JavaScript untuk mengurangi ukuran file.
- Gunakan Database Index: Pastikan tabel database memiliki index yang tepat untuk mempercepat query.
- Gunakan Queues: Gunakan queues untuk memindahkan tugas yang memakan waktu (seperti pengiriman email atau proses image resizing) ke background. Ini akan mencegah website menjadi lambat saat tugas-tugas tersebut dijalankan.
- Gunakan JIT Compiler (Just-In-Time): Menggunakan JIT Compiler seperti OpCache dapat meningkatkan performa PHP secara signifikan. Pastikan OpCache diaktifkan di server kamu.
- Monitor Performa Website: Gunakan tools seperti Google PageSpeed Insights atau GTmetrix untuk memantau performa website kamu. Tools ini akan memberikan saran tentang bagaimana meningkatkan performa website.
12. Kesimpulan: Sukses Deploy Laravel ke Hosting!
Selamat! Kamu telah berhasil mempelajari cara deploy Laravel ke hosting secara lengkap dan step by step. Dengan panduan ini, kamu bisa dengan mudah menjalankan aplikasi Laravel kamu di internet. Ingatlah untuk selalu melakukan backup sebelum melakukan perubahan apapun, dan jangan ragu untuk mencari bantuan jika kamu menemui masalah. Selamat mencoba dan semoga sukses!

