Aplikasi Laravel kamu sudah jadi dan siap digunakan? Keren! Sekarang, langkah selanjutnya adalah mendeploy aplikasi Laravel tersebut agar bisa diakses secara online. Nah, salah satu cara paling umum dan terjangkau adalah dengan menggunakan shared hosting cPanel.
Dalam panduan ini, kita akan membahas secara detail cara deploy aplikasi Laravel ke shared hosting cPanel: panduan step by step yang mudah diikuti, bahkan untuk pemula. Kita akan mengupas tuntas mulai dari persiapan hingga memastikan aplikasi Laravel kamu berjalan lancar di hosting. Yuk, simak selengkapnya!
1. Persiapan Sebelum Deploy: Langkah Awal yang Krusial
Sebelum kita mulai proses deploy, ada beberapa hal penting yang perlu kamu persiapkan terlebih dahulu. Persiapan yang matang akan mempermudah proses deploy dan meminimalisir potensi masalah di kemudian hari.
- Backup Aplikasi Laravel: Ini adalah langkah paling penting! Selalu backup kode aplikasi Laravel kamu, database, dan semua file terkait. Kamu bisa menggunakan Git (jika kamu menggunakan version control) atau membuat backup manual.
- Akses cPanel: Pastikan kamu memiliki akses ke cPanel hosting kamu. Username dan password cPanel biasanya diberikan oleh penyedia hosting kamu.
- Akses FTP/File Manager: Kamu akan membutuhkan akses FTP atau File Manager untuk mengunggah file aplikasi Laravel kamu ke hosting.
- Database: Pastikan kamu memiliki database yang siap digunakan di hosting. Catat nama database, username database, dan password database. Ini akan kita gunakan untuk konfigurasi aplikasi Laravel kita.
- Domain/Subdomain: Pastikan kamu memiliki domain atau subdomain yang akan digunakan untuk mengakses aplikasi Laravel kamu. Jika kamu menggunakan domain utama, pastikan nameserver sudah diarahkan ke server hosting kamu.
- Editor Teks/IDE: Kamu akan membutuhkan editor teks atau IDE untuk mengedit file konfigurasi dan beberapa file lainnya. Rekomendasi: VS Code, Sublime Text, atau PhpStorm.
2. Konfigurasi Aplikasi Laravel: Menyesuaikan dengan Lingkungan Hosting
Setelah semua persiapan selesai, saatnya kita konfigurasi aplikasi Laravel kita agar sesuai dengan lingkungan shared hosting cPanel.
-
Ubah Konfigurasi Database: Buka file
.env
pada aplikasi Laravel kamu. Ubah nilai-nilai berikut sesuai dengan informasi database yang kamu miliki di cPanel:DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=nama_database_anda DB_USERNAME=username_database_anda DB_PASSWORD=password_database_anda
Penting: Pastikan
DB_HOST
diatur kelocalhost
karena database biasanya berada di server yang sama dengan hosting. -
Konfigurasi APP_URL: Pada file
.env
, ubah nilaiAPP_URL
menjadi URL domain atau subdomain yang akan kamu gunakan.APP_URL=http://domain-anda.com atau http://subdomain.domain-anda.com
-
Konfigurasi APP_ENV: Atur
APP_ENV
keproduction
saat aplikasi sudah siap digunakan di lingkungan produksi. Ini akan mematikan beberapa fitur debugging dan meningkatkan performa.APP_ENV=production
-
Generate APP_KEY: Jalankan perintah berikut di terminal (pastikan kamu sudah berada di direktori aplikasi Laravel kamu):
php artisan key:generate
Perintah ini akan menghasilkan APP_KEY yang unik dan penting untuk keamanan aplikasi Laravel kamu.
-
Konfigurasi Debug Mode (Optional): Jika kamu ingin tetap melihat pesan error di lingkungan produksi (tidak direkomendasikan untuk aplikasi live), kamu bisa mengubah
APP_DEBUG
menjaditrue
di file.env
. Namun, sebaiknya biarkan tetapfalse
untuk alasan keamanan.APP_DEBUG=false
3. Upload Aplikasi Laravel ke cPanel: Menggunakan FTP atau File Manager
Selanjutnya, kita akan mengunggah file aplikasi Laravel kita ke server hosting. Ada dua cara yang bisa kamu gunakan: FTP atau File Manager.
-
Menggunakan FTP:
- Gunakan aplikasi FTP client seperti FileZilla, Cyberduck, atau Transmit.
- Masukkan informasi FTP yang diberikan oleh penyedia hosting kamu (hostname, username, password, port).
- Hubungkan ke server hosting.
- Unggah isi dari folder aplikasi Laravel kamu (bukan folder aplikasi Laravel secara keseluruhan) ke direktori
public_html
atau direktori subdomain yang kamu gunakan. Pastikan file.htaccess
juga ikut terupload. File.htaccess
terkadang tersembunyi, jadi pastikan kamu mengaktifkan opsi untuk menampilkan file tersembunyi di FTP client kamu.
-
Menggunakan File Manager:
- Login ke cPanel.
- Cari dan klik ikon “File Manager”.
- Navigasi ke direktori
public_html
atau direktori subdomain yang kamu gunakan. - Klik tombol “Upload”.
- Pilih semua file dan folder di dalam folder aplikasi Laravel kamu (bukan folder aplikasi Laravel secara keseluruhan).
- Tunggu hingga proses upload selesai.
Penting:
public_html
vs. Subdomain: Jika kamu menggunakan domain utama, unggah file ke direktoripublic_html
. Jika kamu menggunakan subdomain, unggah file ke direktori subdomain yang kamu buat (misalnya:public_html/subdomain
).- Folder
public
: Isi dari folderpublic
pada aplikasi Laravel kamu (misalnya:index.php
,.htaccess
,css
,js
,images
) harus bisa diakses secara langsung melalui web browser.
4. Mengatur public
Directory Laravel: Mengarahkan Web Server
Secara default, web server (seperti Apache) akan mencari file index.html
atau index.php
di direktori public_html
sebagai titik awal website. Namun, aplikasi Laravel kita memiliki struktur direktori yang sedikit berbeda. Kita perlu mengarahkan web server agar mencari file index.php
yang berada di dalam folder public
.
Ada beberapa cara untuk melakukan ini:
-
Mengubah Document Root di cPanel: Beberapa penyedia hosting cPanel memungkinkan kamu mengubah document root untuk domain atau subdomain kamu. Caranya:
- Login ke cPanel.
- Cari bagian “Domains” atau “Domains Manager”.
- Cari domain atau subdomain yang ingin kamu konfigurasi.
- Ubah document root dari
public_html
menjadipublic_html/public
(ataupublic_html/subdomain/public
).
-
Memodifikasi File
.htaccess
(Cara yang Paling Umum): Ini adalah cara yang paling umum dan direkomendasikan. Buat file.htaccess
(jika belum ada) di direktoripublic_html
atau direktori subdomain kamu dengan isi seperti berikut:<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] </IfModule>
Perhatikan: File
.htaccess
berfungsi untuk mengkonfigurasi web server Apache. Pastikan modulmod_rewrite
sudah aktif di server hosting kamu. Biasanya, modul ini sudah aktif secara default. Jika tidak, kamu perlu menghubungi penyedia hosting kamu untuk mengaktifkannya. -
Memindahkan File
index.php
dan.htaccess
(Tidak Direkomendasikan): Cara ini kurang direkomendasikan karena akan mengubah struktur direktori aplikasi Laravel kamu. Kamu bisa memindahkan fileindex.php
dan.htaccess
dari folderpublic
ke direktoripublic_html
atau direktori subdomain kamu. Setelah itu, kamu perlu mengedit fileindex.php
dan mengubah path ke autoload.php dan app.php.
5. Konfigurasi Simlink Storage: Mengakses File Upload
Aplikasi Laravel seringkali digunakan untuk mengunggah file (gambar, dokumen, dll.). Secara default, file-file ini disimpan di direktori storage/app/public
. Agar file-file ini bisa diakses melalui web browser, kita perlu membuat simlink (symbolic link) dari direktori public/storage
ke direktori storage/app/public
.
Sayangnya, shared hosting cPanel seringkali membatasi pembuatan simlink melalui terminal. Oleh karena itu, kita perlu menggunakan cara alternatif:
-
Membuat Simlink Manual: Buat folder bernama
storage
di dalam direktoripublic
. Kemudian, buat file.htaccess
di dalam folderstorage
tersebut dengan isi seperti berikut:Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*)$ ../../storage/app/public/$1 [L]
Cara ini akan mengarahkan semua permintaan ke
public/storage
ke direktoristorage/app/public
. -
Menggunakan Artisan Command (Jika Diizinkan): Jika kamu memiliki akses SSH dan diizinkan menjalankan perintah Artisan, kamu bisa menggunakan perintah berikut:
php artisan storage:link
Perintah ini akan membuat simlink secara otomatis.
Penting: Pastikan kamu sudah mengkonfigurasi FILESYSTEM_DISK
di file .env
menjadi public
.
FILESYSTEM_DISK=public
6. Migrasi Database Laravel: Mempersiapkan Struktur Data
Setelah aplikasi terupload dan konfigurasi web server selesai, saatnya kita migrasi database Laravel kita. Migrasi database berfungsi untuk membuat tabel-tabel yang dibutuhkan oleh aplikasi Laravel kita.
-
Upload Database Dump (SQL File): Login ke phpMyAdmin di cPanel. Pilih database yang kamu gunakan. Klik tab “Import”. Pilih file SQL (database dump) yang sudah kamu siapkan sebelumnya. Klik tombol “Go”.
-
Menjalankan Migrasi Melalui Artisan (Jika Diizinkan): Jika kamu memiliki akses SSH dan diizinkan menjalankan perintah Artisan, kamu bisa menjalankan perintah berikut:
php artisan migrate
Perintah ini akan menjalankan semua migrasi yang ada di direktori
database/migrations
. -
Menggunakan Seeder (Optional): Jika kamu ingin mengisi database dengan data awal, kamu bisa menggunakan seeder. Jalankan perintah berikut (jika kamu memiliki akses SSH dan diizinkan menjalankan perintah Artisan):
php artisan db:seed
7. Optimasi Aplikasi Laravel: Meningkatkan Performa Website
Setelah aplikasi Laravel berhasil dideploy, ada beberapa langkah optimasi yang bisa kamu lakukan untuk meningkatkan performa website.
-
Aktifkan Cache: Laravel menyediakan berbagai macam fitur caching yang bisa kamu manfaatkan untuk meningkatkan performa. Aktifkan cache konfigurasi, cache route, dan cache view.
php artisan config:cache php artisan route:cache php artisan view:cache
(Perintah ini hanya bisa dijalankan jika kamu memiliki akses SSH dan diizinkan menjalankan perintah Artisan.)
-
Gunakan CDN (Content Delivery Network): CDN dapat membantu mempercepat loading website dengan menyimpan file statis (gambar, CSS, JavaScript) di server-server yang tersebar di seluruh dunia.
-
Kompresi File: Kompresi file CSS, JavaScript, dan gambar dapat mengurangi ukuran file dan mempercepat loading website.
-
Aktifkan Gzip Compression: Gzip compression dapat mengurangi ukuran file yang dikirimkan dari server ke browser.
-
Monitor Performa: Gunakan tools seperti Google PageSpeed Insights atau GTmetrix untuk memonitor performa website dan mencari tahu area mana yang perlu dioptimasi.
8. Troubleshooting dan Solusi Umum: Mengatasi Masalah yang Mungkin Terjadi
Saat mendeploy aplikasi Laravel ke shared hosting cPanel, kamu mungkin akan menemui beberapa masalah. Berikut beberapa masalah umum dan solusinya:
- 500 Internal Server Error: Kesalahan ini biasanya disebabkan oleh kesalahan konfigurasi server, seperti masalah dengan file
.htaccess
atau izin file yang salah. Pastikan file.htaccess
kamu sudah benar dan periksa log error server untuk mengetahui penyebab pasti kesalahan. - Blank Page: Halaman kosong biasanya disebabkan oleh kesalahan konfigurasi database atau kesalahan kode. Periksa koneksi database kamu dan pastikan tidak ada error di kode aplikasi kamu.
- Error terkait Permission: Pastikan semua file dan folder memiliki izin yang tepat. Direktori harus memiliki izin 755 dan file harus memiliki izin 644.
- Simlink Error: Jika kamu mengalami masalah dengan simlink, coba cara alternatif yang sudah dijelaskan di atas (membuat simlink manual).
- Error terkait PHP Version: Pastikan versi PHP yang digunakan di hosting kamu sesuai dengan versi PHP yang didukung oleh aplikasi Laravel kamu. Kamu bisa mengubah versi PHP di cPanel.
9. Keamanan Aplikasi Laravel: Melindungi Website dari Ancaman
Keamanan adalah aspek penting yang tidak boleh diabaikan. Berikut beberapa tips untuk meningkatkan keamanan aplikasi Laravel kamu:
- Gunakan HTTPS: Pastikan website kamu menggunakan HTTPS untuk mengenkripsi komunikasi antara server dan browser.
- Validasi Input: Validasi semua input yang diterima dari user untuk mencegah serangan SQL injection dan XSS.
- Lindungi dari CSRF: Laravel secara otomatis melindungi dari serangan CSRF (Cross-Site Request Forgery). Pastikan kamu menggunakan middleware
VerifyCsrfToken
. - Update Laravel secara Rutin: Update Laravel secara rutin untuk mendapatkan perbaikan bug dan celah keamanan terbaru.
- Gunakan Firewall: Gunakan firewall untuk melindungi server kamu dari serangan DDoS dan ancaman lainnya.
- Monitor Log: Monitor log server secara rutin untuk mendeteksi aktivitas mencurigakan.
10. Upgrade Aplikasi Laravel di Shared Hosting: Update Versi Laravel dengan Aman
Suatu saat, kamu mungkin perlu mengupgrade versi Laravel aplikasi kamu. Berikut langkah-langkahnya:
- Backup: Lakukan backup lengkap aplikasi dan database.
- Uji Lokal: Upgrade aplikasi Laravel secara lokal terlebih dahulu untuk memastikan tidak ada masalah.
- Maintenance Mode: Aktifkan maintenance mode di aplikasi live kamu.
- Upload File: Upload file-file Laravel yang sudah diupgrade ke server hosting, menimpa file yang lama.
- Migrasi Database: Jalankan migrasi database.
- Cache Clear: Bersihkan cache aplikasi.
- Nonaktifkan Maintenance Mode: Nonaktifkan maintenance mode.
- Uji: Uji aplikasi live kamu untuk memastikan semuanya berfungsi dengan baik.
11. Alternatif Deploy Laravel: Pilihan Selain Shared Hosting
Shared hosting cPanel memang pilihan yang terjangkau, tetapi ada alternatif lain yang bisa kamu pertimbangkan:
- VPS (Virtual Private Server): Memberikan kontrol lebih besar atas server.
- Cloud Hosting: Lebih scalable dan fleksibel.
- Platform as a Service (PaaS): Mempermudah proses deploy dan manajemen aplikasi. Contoh: Heroku, AWS Elastic Beanstalk, Google App Engine.
- Dedicated Server: Memberikan sumber daya server eksklusif untuk aplikasi kamu.
12. Kesimpulan: Aplikasi Laravel Berhasil Dideploy!
Selamat! Sekarang kamu sudah tahu cara deploy aplikasi Laravel ke shared hosting cPanel: panduan step by step yang lengkap. Ikuti langkah-langkah di atas dengan seksama, dan aplikasi Laravel kamu akan segera online dan bisa diakses oleh semua orang. Ingat, selalu lakukan backup sebelum melakukan perubahan apapun dan jangan ragu untuk mencari bantuan jika kamu menemui masalah. Semoga berhasil!