Menggunakan Virtual Host di Localhost

Ketika melakukan debugging website, akan lebih mudah jika website Anda di localhost diakses dengan menggunakan domain virtual. Melanjutkan tutorial sebelumnya, berikut adalah cara mengubah akses website local Anda dari localhost/namaProject/public menjadi domain.dev:

  1. Buka folder apache/conf/extra di folder instalasi XAMPP Anda
  2. Edit file httpd-vhosts.conf
  3. Tambahkan baris berikut
    <VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "C:/XAMPP/htdocs/namaProject/public"
    ServerName domain.dev
    ServerAlias www.domain.dev
    ErrorLog "logs/domain.dev-error.log"
    CustomLog "logs/domain.dev-access.log" common
    </VirtualHost>
  4. Ubah DocumentRoot sesuai dengan lokasi folder public project Anda, bisa jadi nama folder public Anda juga berbeda
  5. Ganti ServerName dan ServerAlias sesuai keinginan, bisa menggunakan gTLD (generic top-level domain) selain .dev
  6. Sesuaikan path ErrorLog dan CustomLog untuk memudahkan proses debugging website

Cara Deploy Laravel di Shared Hosting

Jika Anda menggunakan Laravel untuk website pribadi, tentu tidak menggunakan dedicated hosting karena biaya yang tinggi. Yang menjadi masalah adalah: Shared hosting tidak mengijinkan Anda mengubah nama dan lokasi folder “public_html” (atau “www” di hosting tertentu), selain itu akses untuk mengubah konfigurasi document root juga tidak disediakan.

Ada 2 alternatif untuk mengatasi permasalahan ini, alternatif pertama paling mudah, namun hanya dapat dilakukan apabila Anda diperbolehkan untuk upload di luar folder “public_html”:

  1. Pertahankan struktur folder di dalam folder project Laravel Anda (sama seperti saat baru dibuat)
  2. Upload semua file di dalam folder project Anda ke server hosting, di luar folder “public_html”
  3. Pindahkan semua isi folder “public” ke dalam “public_html”
  4. Hapus folder “public”, sekarang struktur direktori Anda akan terlihat seperti berikut:Struktur Direktori
  5. Tambahkan kode berikut di “index.php” dalam folder “public_html” untuk menghindari masalah yang diakibatkan mengubah default folder public:
    $app->bind('path.public', function() {
    return __DIR__;
    });

Namun jika Anda tidak memiliki akses untuk upload di luar “public_html”:

  1. Upload folder project Anda (yes, satu folder utuh) ke hosting server, di dalam “public_html”
  2. Keluarkan semua file dari dalam folder “public” sehingga terletak tepat di bawah folder “public_html”
  3. Ubah baris berikut di “index.php”:
    require __DIR__.'/../bootstrap/autoload.php';
    Menjadi:
    require __DIR__.'/bootstrap/autoload.php';
    Dan baris berikut:
    $app = require_once __DIR__.'/../bootstrap/app.php';
    Menjadi:
    $app = require_once __DIR__.'/bootstrap/app.php';
  4. Tambahkan kode berikut di “index.php” untuk menghindari masalah yang diakibatkan mengubah default folder public:
    $app->bind('path.public', function() {
    return __DIR__;
    });

Perlu diingat bahwa alternatif kedua (memasukkan semua isi folder project ke dalam document root) sangat tidak dianjurkan karena mengakibatkan semua file Anda terekspos dan dapat di-download siapapun. Lakukan langkah tersebut hanya jika Anda tidak memiliki file dengan informasi sensitif (password, data transaksi, data konsumen, video dewasa, dll.) tersimpan di dalam folder project Anda.