# Panduan Lengkap Deploy Laravel di cPanel: Langkah Demi Langkah
Deploying aplikasi Laravel ke server produksi bisa jadi sedikit menantang, terutama jika Anda baru mengenal cPanel. Jangan khawatir! Panduan lengkap ini akan memandu Anda langkah demi langkah melalui proses deploy Laravel di cPanel, memastikan aplikasi Anda berjalan lancar tanpa masalah. Mari kita mulai!
## Daftar Isi:
1. **Persiapan Awal: Hal-Hal yang Perlu Disiapkan Sebelum Deploy Laravel**
2. **Konfigurasi cPanel: Membuat Database dan Subdomain untuk Laravel**
3. **Upload File Laravel ke cPanel: Menggunakan FTP atau File Manager**
4. **Konfigurasi File `.htaccess` yang Tepat untuk Laravel di cPanel**
5. **Mengatur Konfigurasi Database Laravel di cPanel**
6. **Konfigurasi Path dan Simlink: Mengarahkan Public Directory ke `public_html`**
7. **Menginstal Dependencies dengan Composer di cPanel**
8. **Menjalankan Migrasi dan Seeder Laravel: Mempersiapkan Database**
9. **Konfigurasi Cron Jobs: Otomatisasi Tugas Rutin Laravel**
10. **Troubleshooting Umum: Mengatasi Masalah Deploy Laravel di cPanel**
11. **Tips Optimasi: Meningkatkan Performa Aplikasi Laravel di cPanel**
12. **Keamanan Aplikasi Laravel di cPanel: Langkah-Langkah Penting**
---
## 1. Persiapan Awal: Hal-Hal yang Perlu Disiapkan Sebelum Deploy Laravel
Sebelum Anda memulai proses **deploy Laravel di cPanel**, pastikan Anda sudah menyiapkan beberapa hal penting. Persiapan yang matang akan mempermudah proses deploy dan menghindari masalah yang tidak perlu.
* **Aplikasi Laravel yang Sudah Siap:** Pastikan aplikasi Laravel Anda sudah diuji secara lokal dan berfungsi dengan baik. Bersihkan kode yang tidak perlu dan pastikan semua dependencies sudah terpasang.
* **Akses ke cPanel:** Anda membutuhkan username dan password untuk login ke cPanel hosting Anda. Pastikan Anda memilikinya.
* **Software FTP Client (Opsional):** Jika Anda memilih untuk upload file melalui FTP, Anda membutuhkan software FTP client seperti FileZilla, Cyberduck, atau WinSCP.
* **Akses SSH (Opsional, tapi Sangat Disarankan):** Akses SSH (Secure Shell) akan sangat mempermudah beberapa langkah, terutama dalam menginstal dependencies dengan Composer dan menjalankan migrasi. Jika provider hosting Anda menyediakan akses SSH, manfaatkanlah.
* **Editor Teks:** Anda akan perlu mengedit beberapa file konfigurasi, jadi siapkan editor teks seperti VS Code, Sublime Text, atau Notepad++.
* **Backup:** Sebelum melakukan perubahan apapun di server, sangat disarankan untuk membuat backup lengkap dari aplikasi Laravel Anda dan database yang digunakan. Ini akan menjadi penyelamat jika terjadi kesalahan.
## 2. Konfigurasi cPanel: Membuat Database dan Subdomain untuk Laravel
Langkah selanjutnya dalam **panduan lengkap deploy Laravel di cPanel** ini adalah mengkonfigurasi cPanel. Ini melibatkan pembuatan database dan subdomain (atau domain utama) untuk aplikasi Laravel Anda.
* **Membuat Database:**
* Login ke cPanel Anda.
* Cari ikon "MySQL® Databases" atau "Database Wizard" (nama mungkin berbeda tergantung tema cPanel Anda).
* Buat database baru. Catat nama database, username, dan password yang Anda buat. Informasi ini akan digunakan nanti dalam konfigurasi Laravel.
* **Membuat Subdomain (atau Menggunakan Domain Utama):**
* Jika Anda ingin aplikasi Laravel Anda diakses melalui subdomain (misalnya, `aplikasi.domainanda.com`), cari ikon "Subdomains".
* Buat subdomain baru dan tentukan direktori root untuk subdomain tersebut (misalnya, `public_html/aplikasi`). Ingat direktori ini, karena Anda akan mengupload file Laravel ke sana.
* Jika Anda ingin menggunakan domain utama Anda, lewati langkah ini. File Laravel akan diupload ke direktori `public_html`.
## 3. Upload File Laravel ke cPanel: Menggunakan FTP atau File Manager
Sekarang saatnya mengupload file aplikasi Laravel Anda ke server cPanel. Ada dua cara utama untuk melakukannya: menggunakan FTP atau File Manager cPanel.
* **Menggunakan FTP:**
* Buka software FTP client Anda (FileZilla, Cyberduck, dll.).
* Masukkan informasi koneksi FTP (hostname, username, password, port). Informasi ini biasanya diberikan oleh provider hosting Anda.
* Sambungkan ke server.
* Navigasi ke direktori root subdomain (atau `public_html` jika Anda menggunakan domain utama) yang Anda buat di langkah sebelumnya.
* Upload semua file dan folder dari aplikasi Laravel Anda (kecuali folder `public`) ke direktori tersebut.
* **Menggunakan File Manager:**
* Login ke cPanel Anda.
* Cari dan klik ikon "File Manager".
* Navigasi ke direktori root subdomain (atau `public_html`).
* Klik tombol "Upload".
* Pilih semua file dan folder dari aplikasi Laravel Anda (kecuali folder `public`) dan upload. Anda mungkin perlu mengompres file menjadi format `.zip` terlebih dahulu untuk mempercepat proses upload. Setelah upload, ekstrak file `.zip` tersebut.
**Penting:** Jangan mengupload folder `public` Laravel ke direktori root subdomain/domain. Kita akan mengkonfigurasi ini nanti di bagian "Konfigurasi Path dan Simlink".
## 4. Konfigurasi File `.htaccess` yang Tepat untuk Laravel di cPanel
File `.htaccess` berperan penting dalam mengarahkan permintaan ke aplikasi Laravel Anda. Pastikan file `.htaccess` yang benar ada di direktori `public_html` atau direktori root subdomain Anda.
Biasanya, file `.htaccess` sudah ada di dalam folder `public` Laravel Anda. Jika tidak, Anda bisa membuatnya dengan konten berikut:
```apache
<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
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
- Pastikan
mod_rewriteAktif: File.htaccessmengandalkan modulemod_rewritedi Apache. Hubungi provider hosting Anda untuk memastikan module ini aktif di server Anda. Tanpamod_rewrite, URL Laravel Anda tidak akan berfungsi dengan benar.
5. Mengatur Konfigurasi Database Laravel di cPanel
Setelah mengupload file dan mengkonfigurasi .htaccess, langkah selanjutnya adalah mengatur konfigurasi database Laravel. Ini melibatkan pengeditan file .env di aplikasi Laravel Anda.
- Edit File
.env:- Buka File Manager di cPanel.
- Navigasi ke direktori root aplikasi Laravel Anda (bukan direktori
public). - Cari file
.env. Jika file ini tidak ada, copy file.env.exampledan rename menjadi.env. - Klik kanan pada file
.envdan pilih “Edit”. - Ubah nilai-nilai berikut sesuai dengan informasi database yang Anda buat di langkah sebelumnya:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1 # Atau 'localhost' jika diperlukan
DB_PORT=3306
DB_DATABASE=nama_database_anda
DB_USERNAME=username_database_anda
DB_PASSWORD=password_database_anda
- Konfigurasi App URL: Pastikan nilai
APP_URLdi file.envsesuai dengan URL aplikasi Anda (misalnya,http://aplikasi.domainanda.comatauhttp://domainanda.com).
Penting: Pastikan Anda menyimpan perubahan setelah mengedit file .env.
6. Konfigurasi Path dan Simlink: Mengarahkan Public Directory ke public_html
Ini adalah langkah krusial yang sering membingungkan pemula. Secara default, cPanel mengarahkan semua permintaan ke direktori public_html (atau direktori root subdomain). Namun, direktori public Laravel harus menjadi titik masuk aplikasi. Solusinya adalah dengan menggunakan simlink (symbolic link).
Sayangnya, banyak hosting shared cPanel tidak mengizinkan pembuatan symlink melalui PHP karena alasan keamanan. Ada dua solusi untuk masalah ini:
-
Ubah Dokumen Root Subdomain: Jika memungkinkan, ubah dokumen root subdomain di cPanel ke folder
publicdi dalam direktori aplikasi Laravel Anda. Ini adalah cara yang paling direkomendasikan jika Anda memiliki akses untuk mengubah dokumen root. Cari opsi “Subdomains” di cPanel, lalu temukan subdomain Anda dan edit dokumen rootnya. -
Memindahkan Isi Direktori
public: Jika Anda tidak dapat mengubah dokumen root, Anda dapat memindahkan semua isi dari direktoripublicdi aplikasi Laravel Anda ke direktoripublic_html(atau direktori root subdomain Anda). Kemudian, edit fileindex.phpdi direktoripublic_htmldan sesuaikan path ke autoloader dan file bootstrap:require __DIR__.'/../vendor/autoload.php'; // Sesuaikan path ini $app = require_once __DIR__.'/../bootstrap/app.php'; // Sesuaikan path ini
Penting: Jika Anda memilih untuk memindahkan isi direktori public, pastikan untuk memperbarui path di file index.php dengan benar.
7. Menginstal Dependencies dengan Composer di cPanel
Aplikasi Laravel bergantung pada banyak library dan package yang dikelola oleh Composer. Anda perlu menginstal dependencies ini di server Anda.
-
Menggunakan SSH (Sangat Disarankan):
- Login ke server Anda melalui SSH.
- Navigasi ke direktori root aplikasi Laravel Anda.
- Jalankan perintah:
composer install - Composer akan mendownload dan menginstal semua dependencies yang terdaftar di file
composer.json.
-
Menggunakan cPanel Terminal (Jika Tersedia):
- Beberapa provider hosting menyediakan akses ke terminal melalui cPanel. Jika Anda memilikinya, gunakan untuk menjalankan perintah
composer installseperti di atas.
- Beberapa provider hosting menyediakan akses ke terminal melalui cPanel. Jika Anda memilikinya, gunakan untuk menjalankan perintah
-
Menggunakan PHP Script (Opsi Terakhir):
- Jika Anda tidak memiliki akses SSH atau terminal, Anda dapat menggunakan script PHP untuk menjalankan Composer. Ini adalah opsi terakhir karena kurang aman dan mungkin membutuhkan waktu lebih lama. Buat file PHP (misalnya,
composer_install.php) dengan konten berikut:
<?php system('composer install');- Upload file
composer_install.phpke direktori root aplikasi Laravel Anda. - Akses file tersebut melalui browser Anda (misalnya,
http://aplikasi.domainanda.com/composer_install.php). - Setelah proses selesai, hapus file
composer_install.phpsegera karena alasan keamanan.
- Jika Anda tidak memiliki akses SSH atau terminal, Anda dapat menggunakan script PHP untuk menjalankan Composer. Ini adalah opsi terakhir karena kurang aman dan mungkin membutuhkan waktu lebih lama. Buat file PHP (misalnya,
Penting: Proses instalasi Composer bisa memakan waktu tergantung pada banyaknya dependencies.
8. Menjalankan Migrasi dan Seeder Laravel: Mempersiapkan Database
Setelah dependencies terinstal, Anda perlu menjalankan migrasi dan seeder untuk membuat tabel database dan mengisi data awal.
-
Menggunakan SSH (Sangat Disarankan):
- Login ke server Anda melalui SSH.
- Navigasi ke direktori root aplikasi Laravel Anda.
- Jalankan perintah:
php artisan migrate(untuk menjalankan migrasi) - Jalankan perintah:
php artisan db:seed(untuk menjalankan seeder, jika ada)
-
Menggunakan cPanel Terminal (Jika Tersedia):
- Gunakan terminal cPanel untuk menjalankan perintah
php artisan migratedanphp artisan db:seedseperti di atas.
- Gunakan terminal cPanel untuk menjalankan perintah
-
Menggunakan PHP Script (Opsi Terakhir):
- Buat file PHP (misalnya,
migrate.phpdanseed.php) dengan konten berikut:
<?php require __DIR__.'/vendor/autoload.php'; // Pastikan path ini benar $app = require_once __DIR__.'/bootstrap/app.php'; // Pastikan path ini benar $kernel = $app->make(IlluminateContractsConsoleKernel::class); $status = $kernel->handle( $input = new SymfonyComponentConsoleInputArgvInput(['artisan', 'migrate']), new SymfonyComponentConsoleOutputConsoleOutput ); echo "Migrasi Selesai";dan
<?php require __DIR__.'/vendor/autoload.php'; // Pastikan path ini benar $app = require_once __DIR__.'/bootstrap/app.php'; // Pastikan path ini benar $kernel = $app->make(IlluminateContractsConsoleKernel::class); $status = $kernel->handle( $input = new SymfonyComponentConsoleInputArgvInput(['artisan', 'db:seed']), new SymfonyComponentConsoleOutputConsoleOutput ); echo "Seeder Selesai";- Upload file
migrate.phpdanseed.phpke direktori root aplikasi Laravel Anda. - Akses file tersebut melalui browser Anda (misalnya,
http://aplikasi.domainanda.com/migrate.phpdanhttp://aplikasi.domainanda.com/seed.php). - Setelah proses selesai, hapus file
migrate.phpdanseed.phpsegera karena alasan keamanan.
- Buat file PHP (misalnya,
Penting: Pastikan path ke autoload.php dan app.php di script PHP sudah benar.
9. Konfigurasi Cron Jobs: Otomatisasi Tugas Rutin Laravel
Cron jobs memungkinkan Anda menjadwalkan tugas-tugas rutin yang perlu dijalankan secara otomatis oleh aplikasi Laravel Anda (misalnya, mengirim email, membersihkan log, dll.).
-
Akses Cron Jobs di cPanel:
- Login ke cPanel Anda.
- Cari ikon “Cron Jobs”.
-
Tambahkan Cron Job:
- Pilih interval waktu untuk menjalankan cron job (misalnya, setiap menit, setiap jam, setiap hari, dll.).
- Masukkan perintah berikut:
php /path/ke/aplikasi/artisan schedule:run >> /dev/null 2>&1Ganti
/path/ke/aplikasidengan path absolut ke direktori root aplikasi Laravel Anda. Anda bisa mendapatkan path absolut ini dengan menggunakan perintahpwdmelalui SSH. -
Contoh: Jika path absolut ke aplikasi Anda adalah
/home/username/aplikasi, maka perintah cron job akan menjadi:php /home/username/aplikasi/artisan schedule:run >> /dev/null 2>&1
10. Troubleshooting Umum: Mengatasi Masalah Deploy Laravel di cPanel
Meskipun sudah mengikuti panduan deploy Laravel di cPanel ini dengan seksama, Anda mungkin masih menghadapi beberapa masalah. Berikut beberapa masalah umum dan solusinya:
- 500 Internal Server Error:
- Penyebab: Biasanya disebabkan oleh kesalahan konfigurasi
.htaccess, masalah permission file, atau error dalam kode PHP. - Solusi: Periksa file
.htaccessAnda. Pastikanmod_rewriteaktif. Periksa log error server (biasanya dapat diakses melalui cPanel) untuk mencari tahu penyebab error yang lebih spesifik. Pastikan permission file dan folder diatur dengan benar (biasanya 755 untuk folder dan 644 untuk file).
- Penyebab: Biasanya disebabkan oleh kesalahan konfigurasi
- Blank Page:
- Penyebab: Seringkali disebabkan oleh path yang salah di file
index.phpatau masalah dengan dependencies Composer. - Solusi: Periksa path ke
autoload.phpdanapp.phpdi fileindex.php. Pastikan Anda sudah menjalankancomposer install.
- Penyebab: Seringkali disebabkan oleh path yang salah di file
- Database Connection Error:
- Penyebab: Informasi database yang salah di file
.env. - Solusi: Periksa kembali nama database, username, dan password di file
.env. Pastikan database sudah dibuat dan username memiliki hak akses yang benar ke database tersebut.
- Penyebab: Informasi database yang salah di file
- Permission Denied:
- Penyebab: Permission file atau folder yang tidak sesuai.
- Solusi: Atur permission file dan folder dengan benar (biasanya 755 untuk folder dan 644 untuk file). Anda bisa menggunakan FTP client atau File Manager cPanel untuk mengubah permission.
11. Tips Optimasi: Meningkatkan Performa Aplikasi Laravel di cPanel
Setelah berhasil melakukan deploy Laravel di cPanel, Anda bisa meningkatkan performa aplikasi Anda dengan beberapa tips optimasi berikut:
- Caching: Gunakan caching untuk menyimpan data yang sering diakses sehingga mengurangi beban database. Laravel menyediakan berbagai opsi caching, termasuk file-based caching, database caching, dan Redis/Memcached caching.
- Optimize Database Queries: Hindari query database yang lambat dan kompleks. Gunakan indexing untuk mempercepat pencarian data.
- Minify CSS and JavaScript: Kompres file CSS dan JavaScript untuk mengurangi ukuran file dan mempercepat waktu loading halaman.
- Use a CDN: Gunakan Content Delivery Network (CDN) untuk mendistribusikan aset statis (gambar, CSS, JavaScript) ke server yang lebih dekat dengan pengguna, sehingga mempercepat waktu loading halaman.
- Enable Gzip Compression: Aktifkan Gzip compression di server Anda untuk mengurangi ukuran file yang dikirimkan ke browser.
- Optimize Images: Kompres gambar tanpa mengurangi kualitas secara signifikan.
- Use Queues: Gunakan queues untuk menangani tugas-tugas berat secara asynchronous, sehingga tidak menghambat respons halaman.
12. Keamanan Aplikasi Laravel di cPanel: Langkah-Langkah Penting
Keamanan adalah aspek penting dari setiap aplikasi web. Berikut beberapa langkah yang dapat Anda lakukan untuk meningkatkan keamanan aplikasi Laravel Anda di cPanel:
- Keep Laravel Up-to-Date: Selalu update Laravel dan semua dependencies ke versi terbaru untuk mendapatkan patch keamanan terbaru.
- Use HTTPS: Gunakan HTTPS untuk mengenkripsi komunikasi antara server dan browser pengguna.
- Sanitize User Input: Selalu sanitize input pengguna untuk mencegah serangan Cross-Site Scripting (XSS) dan SQL Injection.
- Use Prepared Statements: Gunakan prepared statements untuk mencegah SQL Injection.
- Protect Against Cross-Site Request Forgery (CSRF): Laravel menyediakan middleware untuk melindungi dari serangan CSRF.
- Limit File Upload Sizes: Batasi ukuran file yang dapat diupload oleh pengguna untuk mencegah serangan Denial-of-Service (DoS).
- Regularly Back Up Your Data: Buat backup data secara berkala untuk menghindari kehilangan data jika terjadi serangan atau kerusakan server.
- Monitor Your Logs: Monitor log server secara teratur untuk mendeteksi aktivitas mencurigakan.
- Disable Directory Listing: Nonaktifkan directory listing untuk mencegah orang melihat isi direktori server Anda. Anda bisa melakukan ini dengan menambahkan
Options -Indexeske file.htaccess.
Dengan mengikuti panduan lengkap deploy Laravel di cPanel ini, Anda seharusnya dapat berhasil deploy aplikasi Laravel Anda ke server produksi dengan mudah. Ingatlah untuk selalu melakukan backup data Anda dan memantau performa aplikasi Anda secara teratur. Selamat mencoba!



