Deploying project Laravel ke hosting shared seringkali dianggap rumit, terutama bagi pemula. Namun, dengan langkah yang tepat, proses ini bisa menjadi lebih mudah dan lancar. Artikel ini akan membahas secara mendalam cara mudah deploy project Laravel ke hosting shared, lengkap dengan panduan langkah demi langkah dan tips penting agar website Laravel Anda berjalan dengan baik. Kita juga akan membahas optimasi kinerja dan keamanan, sehingga Anda bisa memaksimalkan potensi website Anda.
1. Persiapan Awal: Syarat dan Ketentuan Deploy Laravel di Shared Hosting
Sebelum memulai proses deploy, ada beberapa hal penting yang perlu Anda persiapkan. Memastikan semua persyaratan terpenuhi akan meminimalkan masalah di kemudian hari.
- Memastikan Hosting Shared Memenuhi Persyaratan Laravel: Laravel membutuhkan minimal PHP versi 7.3 (disarankan 8.0 atau lebih tinggi), ekstensi PHP seperti OpenSSL, PDO, Mbstring, dan Tokenizer. Pastikan hosting shared Anda mendukung persyaratan ini. Anda bisa menghubungi penyedia hosting Anda untuk memastikan.
- Akses ke cPanel atau Panel Kontrol Hosting Lainnya: Sebagian besar hosting shared menyediakan cPanel atau panel kontrol sejenisnya. Anda akan membutuhkan akses ke panel ini untuk mengelola file, database, dan pengaturan lainnya.
- Akses ke FTP/SFTP: Anda akan menggunakan FTP atau SFTP untuk mengunggah file project Laravel Anda ke server.
- Pemahaman Dasar Tentang Command Line (Optional): Meskipun tidak wajib, pemahaman dasar tentang command line akan sangat membantu, terutama untuk menjalankan beberapa perintah Laravel melalui SSH (jika tersedia).
- Backup Local Project: Selalu lakukan backup project Laravel Anda sebelum melakukan perubahan apapun. Ini penting untuk mengantisipasi jika terjadi kesalahan selama proses deploy.
- Konfigurasi .env file: sesuaikan konfigurasi database dan app url pada file .env agar sesuai dengan setting database dan domain hosting shared Anda.
2. Mengunggah File Project Laravel: Langkah Demi Langkah Via FTP/SFTP
Setelah persiapan awal selesai, langkah selanjutnya adalah mengunggah file project Laravel ke server hosting shared Anda. Berikut adalah panduan langkah demi langkah menggunakan FTP/SFTP:
-
Pilih Klien FTP/SFTP: Anda bisa menggunakan klien FTP/SFTP seperti FileZilla, Cyberduck, atau Transmit. Unduh dan instal salah satu klien tersebut.
-
Konfigurasi Klien FTP/SFTP: Buka klien FTP/SFTP dan masukkan informasi koneksi yang diberikan oleh penyedia hosting Anda. Informasi ini biasanya terdiri dari host, username, password, dan port.
-
Unggah File Project:
- Buka folder
public_html
atauwww
(tergantung konfigurasi hosting Anda). Ini adalah folder root website Anda. - Unggah seluruh isi project Laravel Anda (kecuali folder
public
) ke folder di luarpublic_html
. Misalnya, Anda bisa membuat folder bernamalaravel-app
di luarpublic_html
dan mengunggah semua file ke folder tersebut. Jangan mengunggah folderpublic
di sini, karena kita akan memindahkannya nanti. - Pindahkan Isi Folder
public
: Pindahkan isi folderpublic
(bukan foldernya sendiri) ke folderpublic_html
. Ini akan membuat fileindex.php
dan file-file aset lainnya (CSS, JavaScript, gambar) berada di root website Anda.
- Buka folder
-
Periksa Kembali: Pastikan semua file telah terunggah dengan benar.
3. Konfigurasi Database: Membuat dan Mengatur Database di cPanel
Setelah file project terunggah, langkah selanjutnya adalah mengkonfigurasi database.
-
Login ke cPanel: Login ke cPanel menggunakan informasi yang diberikan oleh penyedia hosting Anda.
-
Cari MySQL Databases: Cari ikon atau link yang bertuliskan “MySQL Databases” atau “Database MySQL”. Klik ikon tersebut.
-
Buat Database Baru: Buat database baru dengan nama yang Anda inginkan. Catat nama database ini.
-
Buat User Database: Buat user database baru. Catat username dan password user ini.
-
Berikan Hak Akses ke User: Tambahkan user ke database yang baru dibuat dan berikan semua hak akses (privileges) ke user tersebut.
-
Import Database (Jika Ada): Jika Anda memiliki database yang sudah ada (misalnya, dari development environment), import database tersebut ke database yang baru dibuat melalui phpMyAdmin (terdapat di cPanel).
-
Konfigurasi File
.env
: Buka file.env
di project Laravel Anda (yang sudah diunggah ke server). Ubah nilai variabel berikut agar sesuai dengan informasi database yang baru Anda buat:DB_CONNECTION=mysql DB_HOST=127.0.0.1 (atau localhost, tergantung konfigurasi hosting) DB_PORT=3306 DB_DATABASE=nama_database_anda DB_USERNAME=username_database_anda DB_PASSWORD=password_database_anda
Pastikan Anda menyimpan perubahan pada file
.env
.
4. Mengubah Path pada index.php
: Menyesuaikan dengan Struktur Folder
Karena struktur folder di hosting shared berbeda dengan development environment, Anda perlu mengubah path pada file index.php
agar Laravel bisa menemukan file autoload.php
dan app.php
.
-
Edit File
index.php
: Buka filepublic_html/index.php
menggunakan text editor yang tersedia di cPanel (File Manager) atau melalui FTP/SFTP. -
Ubah Path: Cari baris berikut:
require __DIR__.'/../vendor/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php';
Ubah path tersebut agar mengarah ke lokasi file
autoload.php
danapp.php
yang sebenarnya. Karena file-file tersebut berada di folder di luarpublic_html
(misalnya,laravel-app
), Anda perlu menyesuaikan path-nya. Contoh:require __DIR__.'/../laravel-app/vendor/autoload.php'; $app = require_once __DIR__.'/../laravel-app/bootstrap/app.php';
Sesuaikan
laravel-app
dengan nama folder tempat Anda mengunggah project Laravel Anda. -
Simpan Perubahan: Simpan perubahan pada file
index.php
.
5. Konfigurasi .htaccess: Mengatur URL dan Routing
File .htaccess
digunakan untuk mengatur URL rewriting dan routing pada server Apache. Pastikan file .htaccess
sudah ada di folder public_html
. Jika belum, Anda bisa membuatnya.
-
Buat File
.htaccess
: Jika belum ada, buat file bernama.htaccess
di folderpublic_html
. -
Tambahkan Kode Berikut: Buka file
.htaccess
dan tambahkan kode 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 RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
Kode ini akan memastikan bahwa semua request diarahkan ke file
index.php
, sehingga Laravel bisa menangani routing dengan benar. -
Pastikan
mod_rewrite
Aktif: Pastikan modulmod_rewrite
aktif di server Apache Anda. Biasanya, modul ini sudah aktif secara default. Jika tidak, Anda perlu menghubungi penyedia hosting Anda untuk mengaktifkannya.
6. Mengatur APP_URL pada .env: Konfigurasi URL Aplikasi
Pastikan variabel APP_URL
pada file .env
sudah diatur dengan benar. Ini penting agar Laravel bisa menghasilkan URL yang benar untuk website Anda.
-
Edit File
.env
: Buka file.env
di project Laravel Anda. -
Ubah
APP_URL
: Ubah nilai variabelAPP_URL
menjadi URL website Anda. Contoh:APP_URL=https://www.domainanda.com
Ganti
www.domainanda.com
dengan nama domain Anda.
7. Menjalankan Composer Install: Menginstal Dependencies
Setelah semua file terunggah dan konfigurasi selesai, Anda perlu menjalankan composer install
untuk menginstal semua dependencies project Laravel Anda.
-
Akses SSH (Jika Tersedia): Jika hosting shared Anda menyediakan akses SSH, Anda bisa menjalankan perintah
composer install
langsung dari terminal. Navigasi ke folder project Laravel Anda (misalnya,laravel-app
) dan jalankan perintah:composer install
-
Jika Tidak Ada SSH: Jika tidak ada akses SSH, Anda bisa menggunakan cara lain:
- Upload Folder
vendor
: Upload foldervendor
dari local project Anda ke server. Ini memakan waktu yang cukup lama. Pastikan foldervendor
sudah terisi dengan dependencies yang benar sebelum diupload. - Gunakan Library Composer Melalui PHP: Buat file PHP sederhana yang menjalankan perintah
composer install
menggunakan library Composer. Namun, cara ini kurang disarankan karena alasan keamanan dan performa.
- Upload Folder
8. Mengatur Permissions Folder: Keamanan dan Akses
Beberapa folder di project Laravel memerlukan permission yang tepat agar website bisa berjalan dengan benar dan aman.
- Folder
storage
: Folderstorage
memerlukan permission 775 atau 777 (tergantung konfigurasi server Anda). Ini memungkinkan Laravel untuk menulis file ke folder tersebut (misalnya, file cache, log, dan file yang diupload). Gunakan File Manager di cPanel atau klien FTP/SFTP untuk mengubah permission folderstorage
. - Folder
bootstrap/cache
: Folderbootstrap/cache
juga memerlukan permission yang tepat agar Laravel bisa menulis file cache. Biasanya, permission 775 sudah cukup.
9. Optimasi Kinerja: Meningkatkan Kecepatan Website Laravel
Setelah deploy, ada beberapa langkah optimasi yang bisa Anda lakukan untuk meningkatkan kinerja website Laravel Anda.
-
Caching: Gunakan fitur caching Laravel untuk menyimpan data yang sering diakses. Anda bisa menggunakan cache database, cache file, atau cache Redis.
-
Minifikasi Aset: Minifikasi file CSS dan JavaScript untuk mengurangi ukuran file dan mempercepat waktu loading website.
-
Optimize Images: Kompres gambar agar ukurannya lebih kecil tanpa mengurangi kualitasnya.
-
Gunakan CDN: Gunakan Content Delivery Network (CDN) untuk mendistribusikan aset website Anda ke server-server di seluruh dunia, sehingga pengguna bisa mengakses website Anda dengan lebih cepat.
-
Aktifkan Gzip Compression: Aktifkan Gzip compression di server Apache untuk mengurangi ukuran file yang dikirim ke browser.
-
Gunakan Artisan Commands: Beberapa perintah Artisan bisa membantu mengoptimalkan kinerja website Anda. Contoh:
php artisan config:cache php artisan route:cache php artisan view:cache php artisan optimize
10. Keamanan: Melindungi Website Laravel dari Ancaman
Keamanan adalah hal yang sangat penting. Berikut adalah beberapa tips untuk melindungi website Laravel Anda dari ancaman.
- Gunakan HTTPS: Gunakan HTTPS untuk mengenkripsi semua komunikasi antara browser dan server. Ini akan melindungi data sensitif dari penyadapan.
- Update Laravel Secara Teratur: Pastikan Anda selalu menggunakan versi Laravel terbaru. Versi terbaru biasanya mengandung perbaikan keamanan (security fixes).
- Gunakan Middleware: Gunakan middleware untuk melindungi rute-rute tertentu dari akses yang tidak sah.
- Sanitasi Input: Sanitasi semua input yang diterima dari pengguna untuk mencegah serangan SQL injection dan XSS.
- Lindungi File
.env
: Pastikan file.env
tidak bisa diakses dari browser. Letakkan file.env
di luar folderpublic_html
. - Gunakan Package Keamanan: Ada beberapa package Laravel yang bisa membantu meningkatkan keamanan website Anda. Contoh:
laravel-security
. - Pantau Log: Pantau log website Anda secara teratur untuk mendeteksi aktivitas mencurigakan.
11. Troubleshooting: Mengatasi Masalah yang Mungkin Timbul
Selama proses deploy, mungkin ada beberapa masalah yang timbul. Berikut adalah beberapa masalah umum dan cara mengatasinya.
- Error 500 Internal Server Error: Biasanya disebabkan oleh kesalahan konfigurasi
.htaccess
atau masalah permission. Periksa kembali file.htaccess
dan permission folder. - Database Connection Error: Biasanya disebabkan oleh kesalahan konfigurasi database di file
.env
. Periksa kembali informasi database (host, username, password, database name). - Class Not Found Error: Biasanya disebabkan oleh dependencies yang belum terinstal. Jalankan
composer install
untuk menginstal semua dependencies. - Website Tidak Menampilkan Apa-Apa (Blank Page): Biasanya disebabkan oleh kesalahan path pada file
index.php
. Periksa kembali path ke fileautoload.php
danapp.php
. - Error Permission Denied: Biasanya disebabkan oleh permission folder yang salah. Ubah permission folder yang sesuai (biasanya
storage
danbootstrap/cache
).
Jika Anda mengalami masalah yang tidak bisa diatasi, coba cari solusinya di internet atau tanyakan di forum Laravel.
12. Tips Tambahan: Membuat Proses Deploy Lebih Efisien
Berikut adalah beberapa tips tambahan untuk membuat proses deploy lebih efisien.
- Gunakan Version Control (Git): Gunakan Git untuk mengelola kode Anda dan memudahkan proses deploy. Anda bisa menggunakan layanan seperti GitHub, GitLab, atau Bitbucket.
- Automate Deployment: Gunakan tools seperti Deployer atau Envoyer untuk mengotomatiskan proses deploy. Ini akan menghemat waktu dan mengurangi risiko kesalahan.
- Test Secara Teratur: Lakukan testing secara teratur untuk memastikan bahwa website Anda berfungsi dengan baik setelah deploy.
- Dokumentasikan Proses Deploy: Buat dokumentasi yang jelas tentang proses deploy agar Anda atau tim Anda bisa dengan mudah melakukan deploy di masa depan.
- Gunakan Hosting Laravel Optimized: Pertimbangkan menggunakan hosting yang dioptimalkan untuk Laravel. Hosting ini biasanya sudah dikonfigurasi dengan benar dan menyediakan fitur-fitur yang memudahkan proses deploy.
Dengan mengikuti panduan ini, Anda seharusnya bisa deploy project Laravel ke hosting shared dengan mudah dan lancar. Selamat mencoba!