Forum Komunitas
Detail Topik Diskusi
umum
1 month ago
Ngoprek Server: SharedHosting (bagian 1)
Deploy Laravel ke Shared Hosting (Niagahoster) + Setup Spatie Media Library
Deploy project Laravel ke shared hosting seperti Niagahoster sering menjadi tantangan, terutama bagi yang terbiasa menggunakan environment lokal seperti Laragon atau Herd. Pada local environment, aplikasi dapat dijalankan dengan mudah menggunakan perintah artisan, sedangkan pada shared hosting terdapat batasan karena domain utama hanya mengarah ke direktori public_html. Kondisi ini mengharuskan adanya penyesuaian struktur folder agar aplikasi tetap berjalan dengan benar sekaligus aman.
Pada implementasinya, seluruh file inti Laravel tidak ditempatkan langsung di dalam public_html, melainkan disimpan di luar direktori tersebut, misalnya dalam folder laravel-app. Folder ini berisi seluruh komponen utama seperti app, bootstrap, config, database, resources, routes, storage, vendor, serta file .env. Sementara itu, isi dari folder public milik Laravel dipindahkan ke dalam public_html karena bagian inilah yang akan diakses oleh browser.
📁 Skema Struktur Folder di Shared Hosting
Struktur direktori yang umum digunakan setelah proses upload dapat digambarkan sebagai berikut:
/home/username/
│
├── laravel-app/
│ ├── app/
│ ├── bootstrap/
│ ├── config/
│ ├── database/
│ ├── public/
│ ├── resources/
│ ├── routes/
│ ├── storage/
│ ├── vendor/
│ └── .env
│
└── public_html/
├── index.php
├── .htaccess
└── (asset seperti css/js jika diperlukan)
Dalam prosesnya, file penting seperti index.php, .htaccess, serta aset pendukung dari folder public Laravel dipindahkan ke dalam public_html. Setelah itu, file index.php perlu disesuaikan karena lokasi folder Laravel sudah berubah. Secara default, Laravel mengasumsikan struktur folder masih dalam satu direktori, sehingga path menuju folder vendor dan bootstrap harus diperbarui agar mengarah ke lokasi baru di dalam laravel-app.
Penyesuaian tersebut dilakukan dengan mengubah bagian require pada index.php sehingga mengarah ke direktori yang benar. Dengan perubahan ini, proses bootstrap aplikasi tetap dapat berjalan meskipun struktur folder telah dipisahkan antara direktori publik dan direktori aplikasi.
Selain struktur folder, konfigurasi environment juga memegang peranan penting. File .env tetap berada di dalam folder laravel-app dan perlu disesuaikan ke mode production agar keamanan dan performa lebih optimal. Nilai seperti APP_ENV, APP_DEBUG, dan APP_URL harus dikonfigurasi sesuai dengan kondisi server. Proses optimasi seperti cache konfigurasi, route, dan view biasanya dilakukan terlebih dahulu di local environment sebelum file diunggah ke hosting, mengingat keterbatasan akses terminal pada shared hosting.
Tantangan berikutnya muncul pada pengelolaan file storage, terutama ketika menggunakan package seperti Spatie Media Library. Secara default, Laravel menyimpan file upload di dalam direktori storage/app/public yang kemudian dihubungkan ke folder public/storage melalui symbolic link menggunakan perintah artisan. Namun pada shared hosting seperti Niagahoster, fitur symbolic link sering kali tidak tersedia atau dibatasi, sehingga file yang diupload tidak dapat diakses secara publik meskipun berhasil tersimpan.
Untuk mengatasi hal ini, pendekatan yang digunakan adalah dengan menyesuaikan lokasi penyimpanan file agar langsung berada di dalam direktori yang dapat diakses oleh domain. Dalam praktiknya, isi dari folder storage/app/public dipindahkan atau disalin ke dalam public_html/storage. Dengan cara ini, file yang diupload akan langsung tersedia di dalam direktori publik tanpa memerlukan symbolic link.
Penyesuaian tersebut kemudian dilengkapi dengan konfigurasi ulang pada filesystem Laravel. Disk public yang sebelumnya mengarah ke storage internal diubah agar langsung mengarah ke public_html/storage. Dengan demikian, setiap file yang diupload akan tersimpan di lokasi yang benar dan dapat diakses melalui URL aplikasi. Spatie Media Library tetap dapat digunakan seperti biasa karena secara logika tidak ada perubahan pada proses upload, hanya lokasi penyimpanan fisiknya yang disesuaikan.
Dengan konfigurasi ini, file media yang diupload dapat diakses secara langsung melalui URL domain, misalnya melalui path /storage/nama-file. Hal ini memastikan bahwa fitur upload, manajemen media, dan akses file tetap berjalan dengan baik meskipun berada di lingkungan shared hosting.
Secara keseluruhan, proses deploy Laravel ke shared hosting seperti Niagahoster menuntut pemahaman terhadap pemisahan struktur direktori serta penyesuaian pada path dan storage. Dengan pendekatan yang tepat, aplikasi Laravel tetap dapat berjalan secara optimal, termasuk fitur tambahan seperti Spatie Media Library, meskipun berada pada lingkungan server dengan keterbatasan fitur dibandingkan VPS atau dedicated server.
Deploy project Laravel ke shared hosting seperti Niagahoster sering menjadi tantangan, terutama bagi yang terbiasa menggunakan environment lokal seperti Laragon atau Herd. Pada local environment, aplikasi dapat dijalankan dengan mudah menggunakan perintah artisan, sedangkan pada shared hosting terdapat batasan karena domain utama hanya mengarah ke direktori public_html. Kondisi ini mengharuskan adanya penyesuaian struktur folder agar aplikasi tetap berjalan dengan benar sekaligus aman.
Pada implementasinya, seluruh file inti Laravel tidak ditempatkan langsung di dalam public_html, melainkan disimpan di luar direktori tersebut, misalnya dalam folder laravel-app. Folder ini berisi seluruh komponen utama seperti app, bootstrap, config, database, resources, routes, storage, vendor, serta file .env. Sementara itu, isi dari folder public milik Laravel dipindahkan ke dalam public_html karena bagian inilah yang akan diakses oleh browser.
📁 Skema Struktur Folder di Shared Hosting
Struktur direktori yang umum digunakan setelah proses upload dapat digambarkan sebagai berikut:
/home/username/
│
├── laravel-app/
│ ├── app/
│ ├── bootstrap/
│ ├── config/
│ ├── database/
│ ├── public/
│ ├── resources/
│ ├── routes/
│ ├── storage/
│ ├── vendor/
│ └── .env
│
└── public_html/
├── index.php
├── .htaccess
└── (asset seperti css/js jika diperlukan)
Dalam prosesnya, file penting seperti index.php, .htaccess, serta aset pendukung dari folder public Laravel dipindahkan ke dalam public_html. Setelah itu, file index.php perlu disesuaikan karena lokasi folder Laravel sudah berubah. Secara default, Laravel mengasumsikan struktur folder masih dalam satu direktori, sehingga path menuju folder vendor dan bootstrap harus diperbarui agar mengarah ke lokasi baru di dalam laravel-app.
Penyesuaian tersebut dilakukan dengan mengubah bagian require pada index.php sehingga mengarah ke direktori yang benar. Dengan perubahan ini, proses bootstrap aplikasi tetap dapat berjalan meskipun struktur folder telah dipisahkan antara direktori publik dan direktori aplikasi.
Selain struktur folder, konfigurasi environment juga memegang peranan penting. File .env tetap berada di dalam folder laravel-app dan perlu disesuaikan ke mode production agar keamanan dan performa lebih optimal. Nilai seperti APP_ENV, APP_DEBUG, dan APP_URL harus dikonfigurasi sesuai dengan kondisi server. Proses optimasi seperti cache konfigurasi, route, dan view biasanya dilakukan terlebih dahulu di local environment sebelum file diunggah ke hosting, mengingat keterbatasan akses terminal pada shared hosting.
Tantangan berikutnya muncul pada pengelolaan file storage, terutama ketika menggunakan package seperti Spatie Media Library. Secara default, Laravel menyimpan file upload di dalam direktori storage/app/public yang kemudian dihubungkan ke folder public/storage melalui symbolic link menggunakan perintah artisan. Namun pada shared hosting seperti Niagahoster, fitur symbolic link sering kali tidak tersedia atau dibatasi, sehingga file yang diupload tidak dapat diakses secara publik meskipun berhasil tersimpan.
Untuk mengatasi hal ini, pendekatan yang digunakan adalah dengan menyesuaikan lokasi penyimpanan file agar langsung berada di dalam direktori yang dapat diakses oleh domain. Dalam praktiknya, isi dari folder storage/app/public dipindahkan atau disalin ke dalam public_html/storage. Dengan cara ini, file yang diupload akan langsung tersedia di dalam direktori publik tanpa memerlukan symbolic link.
Penyesuaian tersebut kemudian dilengkapi dengan konfigurasi ulang pada filesystem Laravel. Disk public yang sebelumnya mengarah ke storage internal diubah agar langsung mengarah ke public_html/storage. Dengan demikian, setiap file yang diupload akan tersimpan di lokasi yang benar dan dapat diakses melalui URL aplikasi. Spatie Media Library tetap dapat digunakan seperti biasa karena secara logika tidak ada perubahan pada proses upload, hanya lokasi penyimpanan fisiknya yang disesuaikan.
Dengan konfigurasi ini, file media yang diupload dapat diakses secara langsung melalui URL domain, misalnya melalui path /storage/nama-file. Hal ini memastikan bahwa fitur upload, manajemen media, dan akses file tetap berjalan dengan baik meskipun berada di lingkungan shared hosting.
Secara keseluruhan, proses deploy Laravel ke shared hosting seperti Niagahoster menuntut pemahaman terhadap pemisahan struktur direktori serta penyesuaian pada path dan storage. Dengan pendekatan yang tepat, aplikasi Laravel tetap dapat berjalan secara optimal, termasuk fitur tambahan seperti Spatie Media Library, meskipun berada pada lingkungan server dengan keterbatasan fitur dibandingkan VPS atau dedicated server.
1 balasan