Deploy Laravel Website di Cpanel

BringsRain's Scratchlogs

February 27, 2021

Developer Kere Hore

Belajar berkolaborasi dalam sebuah proyek teknologi informasi menyenangkan. Menggelitik kreatifitas. Ceritanya, Sebagai pemuda harapan bangsa… eh, pemuda zaman now, ga keren dong kalo belum pernah nyobain yang namanya ngoprek website. Baru-baru ini, kebetulan ada kesempatan untuk ngoprek website berjamaah ama temen-temen. Di dalam oprek berjamaah ini, saya kebagian jatah meng-online-kan website hasil oprekan. Untuk meng-online-kan website tentu butuh hostingan. Mau sewa VPS, ndak mampu. Mau daftar cloud gratisan ndak punya kartu kridit. Dasar kere!.

Gimana ndak kere, saya cuma gawe sebagai “ngadimin kontrak tahunan”, temen yang satu gawe sebagai staf IT disebuah rumah sakit swasta, yang satunya lagi freelancer programmer yang baru meniti karir. Kebetulan juga setiap awal tahun, saya selalu kebagian jatah puasa gajian. Karena kondisi ini, diputuskan untuk menggunakan “Shared Hosting” sebagai tempat gentayangannya si website. Supaya hore, kita-kita ndak sewa hosting saja, tapi ambil paket reseller. Mudah-mudahan kedepannya bisa dapet tambahan uang jajan dari hasil resale-nya.

Walau kami kere, tapi “skill” temen-temen yang garap website lumayan hore kok. CMS website dikembangkan sendiri oleh teman-teman. Pengembangan menggunakan bahasa pemrogaraman PHP dengan framework Laravel. Disini bisa disimpulkan bahwa teman-teman lumayan hore, dan saya yang paling kere. Makanya, saat yang lain ngoding saya cuma kebagian jatah “deploy” saja. Eits.., karena saya punya temen-temen yang hore, dan punya keinginan untuk makin hore, tentu saja yang kita lakukan tidak berhenti sampai oprekan saja. Saat ini kita juga sedang mengembangkan potensi untuk bisa melayani permintaan, pembuatan website dan aplikasi. Untuk tahu lebih lanjut tentang kami yang kere hore ini, silahkan meilipir ke odis.web.id.

Derita Seorang Tukang Deploy

Derita Pertama

Ngoprek, kalau tidak ada ganjalan, tidak seru. Ganjalan pertama yang dihadapi adalah perbedaan nama direktori “Document Root” bawaan Laravel dengan Cpanel. Laravel menggunakan nama public, sementara Cpanel menggunakan nama public_html. Jadi saat deploy, direktori kudu di-rename mengikuti bawaan Cpanel.

Mengganti nama direktori pada sebuah framework tentu tidak bisa berakhir pada proses rename saja, karena setiap komponen dalam sebuah framework saling berkaitan. Berikut resep mengganti nama Document Root laravel dari public menjadi public_html:

Catatan: Versi yang digunakan disini adalah PHP7 dan Laravel 7.30.1

  1. Ganti nama direktori public menjadi public_html
  2. Tambahkan baris berikut pada berkas public_html/index.php setelah deklarasi variabel $app.
    $app->bind('path.public', function() { return __DIR__; });
    

    Baris tersebut berfungsi untuk binding Document Root ke direktori tempat eksekusi index.php.

  3. Selanjutnya agar Artisan mengenali direktori public_html, tambahkan baris berikut pada berkas app.php didalam direktori bootstrap yang ada di direktori root laravel. Tepatnya: /bootstrap/app.php.
    $app->bind('path.public', function() { return base_path().'/public_html'; })
    

Setelah melakukan langkah-langkah tersebut di atas. Deployment ke Cpanel sama seperti aplikasi pada umumnya. Misal:

Seperti itu sederhananya cara untuk men-deploy ke CPanel secara umum, tapi disinilah muncul derita baru.

Derita Kedua

Bagian ini sebenarnya opsional saja. Dengan solusi di atas, website sudah bisa berjalan dan diakses dari internet. Hanya saja, kadang saya suka gatel matanya liat berkas berantakan di direktori user.

Direktori tree user cpanel berantakan

Konten direktori root Laravel bertebaran bak dedaunan yang jatuh ke bumi dimusim gugur, membuat hati ingin segera ngambil sapu lidi ama pengki buat bersihin. Eh, emangnya di Indonesia ada musim gugur? Ah…, sudahlah. Waktunya bebenah, biar ga sakit mata.

  1. Satukan seluruh direktori di dalam Root direktori Laravel kecuali public_html ke sebuah direktori baru. Misal (karena disini website-nya odis) direktori dengan nama odis.

Struktur direktori rapi

  1. Konfigurasi lagi berkas public_html/index.php, menyesuaikan dengan struktur direktori yang sekarang:
    // public_html/index.php
    $app = require_once __DIR__.'/../odis/bootstrap/app.php';
    

    Perhatikan, ada tambahan direktori odis sebelum bootstrap pada path untuk inisiasi $app.

Cara deploy tetap sama seperti sebelumnya. Selesai sudah, sekarang mata sudah ndak sakit lagi.

Referensi: https://medium.com/@pixelvars/laravel-change-public-html-to-public-html-the-right-way-496431aed94