Laravel adalah framework PHP yang populer untuk membangun aplikasi web modern. Setelah aplikasi Laravel Anda selesai dikembangkan, langkah selanjutnya adalah deploy, atau menerbitkan, aplikasi tersebut ke server hosting agar dapat diakses oleh pengguna. Proses deployment ini bisa terasa rumit bagi pemula, namun dengan panduan step-by-step yang tepat, Anda dapat melakukannya dengan mudah. Artikel ini akan memandu Anda melalui cara deploy aplikasi Laravel ke server hosting dengan detail, mulai dari persiapan hingga aplikasi Anda berjalan lancar. Mari kita mulai!
1. Persiapan Sebelum Deploy Aplikasi Laravel ke Hosting
Sebelum Anda mulai deploy aplikasi Laravel, ada beberapa persiapan penting yang perlu dilakukan. Persiapan ini akan memastikan proses deployment berjalan lancar dan menghindari masalah yang tidak perlu.
-
Memilih Layanan Hosting yang Tepat: Langkah pertama adalah memilih layanan hosting yang sesuai dengan kebutuhan aplikasi Laravel Anda. Pastikan layanan hosting yang Anda pilih mendukung PHP versi yang kompatibel dengan Laravel (saat ini, Laravel 9 dan 10 membutuhkan PHP 8.0 atau lebih tinggi). Selain itu, perhatikan juga kapasitas penyimpanan, bandwidth, dan fitur-fitur lain yang ditawarkan. Shared hosting bisa menjadi pilihan yang ekonomis untuk proyek kecil, sedangkan VPS (Virtual Private Server) atau dedicated server lebih cocok untuk aplikasi dengan kebutuhan sumber daya yang lebih besar. Contoh layanan hosting yang populer dan mendukung Laravel antara lain Niagahoster, IDCloudHost, dan Rumahweb.
-
Konfigurasi Database: Aplikasi Laravel Anda pasti menggunakan database untuk menyimpan data. Pastikan Anda sudah menyiapkan database di server hosting Anda. Buat database baru, tentukan username, dan password yang akan digunakan oleh aplikasi Laravel Anda. Catat informasi ini, karena akan dibutuhkan nanti untuk konfigurasi aplikasi.
-
Konfigurasi .env: File
.env
berisi konfigurasi penting untuk aplikasi Laravel Anda, termasuk informasi database, API keys, dan pengaturan lainnya. Sangat penting untuk tidak menyimpan file.env
ini di repositori publik seperti GitHub. Salin file.env
dari local development environment Anda ke server hosting. Anda bisa melakukannya melalui SSH atau control panel hosting Anda. Setelah disalin, edit file.env
di server hosting dan sesuaikan dengan informasi database yang telah Anda buat di langkah sebelumnya. Pastikan nilaiAPP_ENV
diatur keproduction
. Contoh konfigurasi database di file.env
:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=nama_database_anda DB_USERNAME=username_database_anda DB_PASSWORD=password_database_anda
-
Version Control (Git): Penggunaan version control seperti Git sangat disarankan. Pastikan aplikasi Laravel Anda sudah diinisialisasi sebagai repositori Git dan sudah di-push ke remote repository seperti GitHub, GitLab, atau Bitbucket. Ini akan memudahkan proses deployment dan rollback jika terjadi masalah.
-
Composer Dependency: Aplikasi Laravel Anda bergantung pada package atau library yang dikelola oleh Composer. Pastikan semua dependency yang dibutuhkan sudah terinstal.
2. Upload Aplikasi Laravel ke Server Hosting: Beberapa Metode
Ada beberapa cara untuk meng-upload aplikasi Laravel Anda ke server hosting. Berikut adalah beberapa metode yang umum digunakan:
- FTP (File Transfer Protocol): FTP adalah metode klasik untuk mentransfer file antara komputer Anda dan server hosting. Anda memerlukan FTP client seperti FileZilla. Hubungkan FTP client ke server hosting Anda menggunakan hostname, username, dan password yang diberikan oleh penyedia hosting Anda. Kemudian, upload seluruh direktori aplikasi Laravel Anda (kecuali direktori
vendor/
dan file.env
) ke direktori yang sesuai di server hosting (biasanyapublic_html
atauwww
). - SSH (Secure Shell) dan Git: Jika Anda menggunakan Git, metode ini sangat direkomendasikan. Anda perlu memiliki akses SSH ke server hosting Anda. Login ke server hosting melalui SSH, lalu clone repositori Git aplikasi Laravel Anda ke direktori yang sesuai.
ssh username@nama_domain_anda.com cd /path/ke/direktori/aplikasi git clone <URL_repositori_git_anda> .
Pastikan direktori tujuan (destination directory) adalah direktori yang tepat untuk aplikasi Anda (misalnya
/home/username/public_html/
). - Control Panel (cPanel, Plesk, dll.): Sebagian besar layanan hosting menyediakan control panel seperti cPanel atau Plesk. Control panel ini biasanya menyediakan fitur file manager yang memungkinkan Anda untuk meng-upload file langsung melalui web interface. Anda juga bisa menggunakan fitur Git yang terintegrasi di control panel untuk deploy aplikasi Anda dari repositori Git.
- Rsync (Remote Sync): Rsync adalah tool yang kuat untuk menyinkronkan file antara dua lokasi, baik lokal maupun remote. Rsync efisien karena hanya mentransfer perbedaan (diff) antara file, sehingga lebih cepat dibandingkan FTP. Anda bisa menggunakan Rsync melalui SSH.
3. Instalasi Composer Dependencies di Server
Setelah aplikasi Laravel Anda ter-upload ke server hosting, langkah selanjutnya adalah menginstal dependency yang dibutuhkan menggunakan Composer. Login ke server hosting melalui SSH, lalu navigasi ke direktori aplikasi Laravel Anda. Jalankan perintah berikut:
composer install --optimize-autoloader --no-dev
composer install
: Perintah utama untuk menginstal dependency berdasarkan filecomposer.json
.--optimize-autoloader
: Mengoptimalkan autoloader Composer untuk meningkatkan performa.--no-dev
: Menghindari instalasi development dependencies, sehingga mengurangi ukuran aplikasi.
Jika Anda mengalami masalah dengan memori yang terbatas saat menjalankan Composer, Anda bisa mencoba meningkatkan batas memori PHP:
php -d memory_limit=2G /usr/local/bin/composer install --optimize-autoloader --no-dev
Sesuaikan /usr/local/bin/composer
dengan lokasi Composer di server Anda. Anda juga bisa meminta bantuan penyedia hosting Anda untuk meningkatkan batas memori PHP.
4. Konfigurasi Aplikasi Laravel di Server Hosting
Setelah instalasi dependency selesai, Anda perlu melakukan beberapa konfigurasi tambahan untuk memastikan aplikasi Laravel Anda berjalan dengan benar.
-
Generate Application Key: Aplikasi Laravel Anda membutuhkan application key yang unik untuk keamanan. Jalankan perintah berikut untuk membuat application key:
php artisan key:generate
Perintah ini akan menghasilkan application key baru dan menyimpannya di file
.env
. -
Konfigurasi Direktori Storage: Laravel menggunakan direktori
storage/
untuk menyimpan file-file seperti cache, sessions, dan logs. Pastikan direktoristorage/
dan semua subdirektorinya memiliki izin tulis (writable) oleh web server. Anda bisa menggunakan perintah berikut:chmod -R 775 storage bootstrap/cache chown -R www-data:www-data storage bootstrap/cache
Ganti
www-data:www-data
dengan user dan group yang digunakan oleh web server Anda. Anda bisa menanyakannya ke penyedia hosting Anda. -
Konfigurasi Web Server: Anda perlu mengkonfigurasi web server (seperti Apache atau Nginx) untuk mengarahkan permintaan ke direktori
public/
di aplikasi Laravel Anda. Ini adalah direktori yang berisi fileindex.php
, yang merupakan entry point aplikasi Laravel Anda.-
Apache: Buat atau edit file
.htaccess
di direktori utama aplikasi Laravel Anda (di luar direktoripublic/
) 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>
Pastikan mod_rewrite diaktifkan di server Apache Anda.
-
Nginx: Konfigurasi Nginx Anda harus mengarahkan semua permintaan ke
index.php
. Contoh konfigurasi Nginx:server { listen 80; server_name nama_domain_anda.com; root /path/ke/direktori/aplikasi/public; 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; # Sesuaikan dengan versi PHP Anda } location ~ /.ht { deny all; } }
Ganti
nama_domain_anda.com
dengan nama domain Anda dan/path/ke/direktori/aplikasi/public
dengan path yang benar ke direktoripublic/
aplikasi Anda. Sesuaikan jugafastcgi_pass
dengan versi PHP yang Anda gunakan.
-
5. Migrasi Database dan Seeding (Jika Diperlukan)
Setelah aplikasi Laravel Anda terkonfigurasi, langkah selanjutnya adalah melakukan migrasi database. Migrasi database digunakan untuk membuat tabel-tabel yang dibutuhkan oleh aplikasi Anda. Jika Anda memiliki data default yang perlu dimasukkan ke database, Anda juga bisa menjalankan seeder.
-
Migrasi Database: Jalankan perintah berikut untuk menjalankan migrasi database:
php artisan migrate
-
Seeding Database: Jika Anda memiliki seeder, jalankan perintah berikut:
php artisan db:seed
Anda juga bisa menjalankan seeder tertentu dengan menentukan nama seeder-nya:
php artisan db:seed --class=NamaSeeder
Pastikan koneksi database di file .env
sudah benar sebelum menjalankan migrasi dan seeding.
6. Konfigurasi Cache dan Optimasi Performa
Untuk meningkatkan performa aplikasi Laravel Anda, Anda bisa mengkonfigurasi cache dan melakukan beberapa optimasi lainnya.
-
Konfigurasi Cache: Laravel mendukung berbagai jenis cache, seperti File Cache, Memcached, dan Redis. Redis biasanya merupakan pilihan yang lebih baik untuk aplikasi dengan lalu lintas tinggi.
-
File Cache: Konfigurasi default Laravel menggunakan File Cache. Anda tidak perlu melakukan konfigurasi tambahan jika Anda menggunakan File Cache.
-
Redis Cache: Untuk menggunakan Redis Cache, instal package Redis:
composer require predis/predis
Kemudian, ubah nilai
CACHE_DRIVER
di file.env
menjadiredis
. Pastikan server Redis sudah terinstal dan berjalan di server hosting Anda.
-
-
Konfigurasi Session: Sama seperti cache, Laravel juga mendukung berbagai session drivers. Redis juga merupakan pilihan yang baik untuk session. Ubah nilai
SESSION_DRIVER
di file.env
menjadiredis
. -
Compile View: Laravel memungkinkan Anda untuk meng-compile view untuk meningkatkan performa. Jalankan perintah berikut:
php artisan view:cache
-
Route Cache: Anda juga bisa meng-cache route aplikasi Anda:
php artisan route:cache
Pastikan untuk menghapus cache route setiap kali Anda melakukan perubahan pada route:
php artisan route:clear
-
Configuration Cache: Anda juga bisa meng-cache configuration aplikasi Anda:
php artisan config:cache
Pastikan untuk menghapus cache configuration setiap kali Anda melakukan perubahan pada konfigurasi:
php artisan config:clear
-
Optimize Autoloader: Pastikan autoloader Composer sudah dioptimalkan:
composer dump-autoload --optimize
7. Mengaktifkan SSL (HTTPS)
Keamanan website sangat penting. Pastikan Anda mengaktifkan SSL (HTTPS) untuk aplikasi Laravel Anda. Sebagian besar layanan hosting menyediakan sertifikat SSL gratis melalui Let’s Encrypt. Anda bisa mengaktifkan SSL melalui control panel hosting Anda. Setelah SSL diaktifkan, pastikan semua resource (gambar, CSS, JavaScript) dimuat melalui HTTPS untuk menghindari mixed content errors. Anda juga bisa meng-force penggunaan HTTPS dengan menambahkan middleware ke aplikasi Laravel Anda.
8. Debugging dan Troubleshooting
Setelah aplikasi Laravel Anda di-deploy, Anda mungkin menemukan beberapa masalah. Berikut adalah beberapa tips debugging dan troubleshooting:
- Periksa Log: Laravel menyimpan log di direktori
storage/logs/
. Periksa filelaravel.log
untuk mencari error atau exception yang terjadi. AktifkanAPP_DEBUG=true
di file.env
hanya saat debugging dan pastikan untuk menonaktifkannya setelah selesai. - Error Pages: Konfigurasi custom error pages untuk memberikan informasi yang lebih berguna kepada pengguna jika terjadi error.
- Xdebug: Jika Anda memiliki akses ke server dan ingin melakukan debugging yang lebih mendalam, Anda bisa menggunakan Xdebug.
- Cek Koneksi Database: Pastikan koneksi database sudah benar dan database server berjalan dengan baik. Anda bisa mencoba menjalankan perintah
php artisan tinker
dan mencoba melakukan query ke database. - Izin File: Pastikan direktori
storage/
dan semua subdirektorinya memiliki izin tulis yang benar. - Konfigurasi Web Server: Periksa konfigurasi web server Anda untuk memastikan semua permintaan diarahkan dengan benar ke aplikasi Laravel Anda.
9. Pemeliharaan dan Update Aplikasi Laravel di Hosting
Setelah aplikasi Laravel Anda berjalan lancar, penting untuk melakukan pemeliharaan dan update secara berkala.
- Backup Database: Lakukan backup database secara teratur untuk menghindari kehilangan data jika terjadi masalah.
- Update Laravel dan Packages: Perbarui Laravel dan package-nya secara berkala untuk mendapatkan fitur-fitur baru dan perbaikan keamanan. Pastikan untuk membaca release notes sebelum melakukan update untuk menghindari masalah kompatibilitas.
- Monitor Log: Pantau log aplikasi Anda secara teratur untuk mendeteksi masalah sedini mungkin.
- Optimasi Performa: Terus optimalkan performa aplikasi Anda untuk memberikan pengalaman pengguna yang terbaik.
10. Menggunakan Deployment Tools Otomatis: Deployer, Envoyer, dll.
Untuk proses deployment yang lebih otomatis dan efisien, Anda bisa menggunakan deployment tools seperti Deployer atau Laravel Envoyer. Tools ini menyediakan fitur-fitur seperti zero-downtime deployment, rollback, dan task management.
- Deployer: Deployer adalah deployment tool gratis dan open-source yang mendukung berbagai framework, termasuk Laravel.
- Laravel Envoyer: Laravel Envoyer adalah layanan berbayar yang dirancang khusus untuk aplikasi Laravel. Envoyer menyediakan fitur-fitur canggih seperti zero-downtime deployment, automatic database backups, dan server monitoring.
Dengan menggunakan deployment tools ini, Anda dapat mengotomatiskan proses deployment dan mengurangi risiko kesalahan manusia.
Kesimpulan: Sukses Deploy Aplikasi Laravel Anda!
Cara deploy aplikasi Laravel ke server hosting memang membutuhkan beberapa langkah, tetapi dengan panduan ini, Anda seharusnya bisa melakukannya dengan lancar. Ingatlah untuk selalu melakukan persiapan yang matang, memahami konfigurasi yang dibutuhkan, dan melakukan testing secara menyeluruh. Dengan mengikuti panduan ini, Anda akan dapat deploy aplikasi Laravel Anda dengan sukses dan menghadirkan pengalaman terbaik bagi pengguna Anda. Selamat mencoba dan semoga berhasil!