Laravel merupakan salah satu framework yang saat ini sedang ramai digunakan, Laravel memiliki struktur direktori / folder yang cukup mudah dipahami bahkan kita bisa membuat custom folder sendiri sesuai keperluan.
Kali ini saya ingin berbagi hal yang saya dapat setelah mempelajari laravel dan berkeliling dari situs ke situs. yaitu bagaimana merubah folder publik pada laravel (saya menggunakan laravel v5.8).
Sebagai Catatan umumnya setiap webserver selalu mencari & membaca terlebih dahulu file index pada publik direktori (folder) pada website. dan pada laravel terletak pada folder public.
Berikut Contoh struktur folder pada laravel :
/
/app
/bootstrap
/config
/database
/public
/index.php
/resources
/routes
/storage
Namaun pada saat kita akan mengupload / deploy website kita ke server Hosting yang pada umumnya menggunakan nama folder public_html. tentu suatu hal yang mungkin membuat kita sedikit bingung untuk merubah nama folder dari project kita karena jika kita rubah secara langsung, kemungkinan yang terjadi pada project kita malah error.Sebagai contoh berikut struktur folder pada hosting saat di deploy / publish:
/home
/user
/app
/public_html
/index.php
/resources
/routes
/storage
Ada 4 hal yang perlu dilakukan untuk mengarahkan publik directory pada project yang menggunkan framework laravel yang saya dapat di situs-situs lainnya. ( meskipun mungkin ada beberapa cara lainnya yang lebih mudah, mungkin cara ini bisa digunakan untuk alternatif).
Langkah 1: Merubah isi File Pada Laravel
terdapat 4 file penting yang perlu kita rubah diantaranya :
a. ./server.php
File ini terletak pada root direktori . File ini di gunakan oleh printah php artisan serve . pada file ini terdapat penamaan langsung folder public. jadi rubah nama / kode public menjadi nama folder yang akan di gunakan menjadi publik ( sebagai contoh: public_html )
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { return false; } require_once __DIR__.'/public/index.php';
menjadi:
if ($uri !== '/' && file_exists(__DIR__.'/public_html'.$uri)) { return false; } require_once __DIR__.'/public_html/index.php';
b. ./app/AppServiceProvider.php
Pada file ini kita bisa meregistrasi dan menjalankan service yang diperlukan pada project kita. Fungsi yang digunakan dalam file ini yaitu fungsi register(). Pada umumnya fungsi ini belum berisi script code atau kosong.
tambahkan script berikut pada fungsi register()
public function register() { $this->app->bind('path.public', function() { return base_path().'/public_html'; }); }
c. ./config/filesystems.php
File konfigurasi filesystems ini berguna untuk mendeklarasikan letak direktori pubik dan juga letak direktori penyimpanan file-file / storage. ubah kode pada blok 'public' bagian 'root' yang sebelumnya memiliki nilai 'app/public' menjadi nama folder yang akan di gunakan menjadi publik ( sebagai contoh: public_html ) . 'app' merupakan nama lain dari root folder dari project kita.
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
menjadi:
'public' => [
'driver' => 'local',
'root' => storage_path('app/public_html'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
d. ./webpack.mix.js (mandatory)
Pada tutorial lain merubah file ini adalah hanya opsional tapi menurut saya sebaiknya di update juga karena agar sewktu waktu digunakan kita tidak lupa jika folder publik kita telah di ganti.
Beberapa project laravel menggunakan plugin laravel mix plugin untuk unified dan minified suatu kode script js, sass, maupun css. Default folder output pada laravel mix adalah pada folder public/js dan public/css, oleh karena itu kita perlu mendeklarasikan / menambahkan script mix.config.publicPath pada script berikut
mix.js('resources/assets/js/app.js', 'public/js') .sass('resources/assets/sass/app.scss', 'public/css');
menjadi :
mix.config.publicPath='public_html'; mix.js('resources/assets/js/app.js', 'public_html/js') .sass('resources/assets/sass/app.scss', 'public_html/css');
langkah berikutnya yaitu memindahkan isi dari folder public ke dalam folder public_html.
langkah paling mudah adalah merubah langsung nama folder tersebut.
atau jika menggunakan terminal linux ketikkan perintah
mv (lokasi folder)/public (lokasi folder)/public_htmlatau jika ingin menyimpan folder public sebagai backup gunakan perintah copy
cp -R (lokasi folder)/public (lokasi folder)/public_html
Langkah 3: Chek Konfigurasi pada laravel-mix (jika menggunakannya)
Jika kita menggunakan laravel-mix sebelum mencoba hasil perubahan, terlebih dahulu jalankan perintah npm run dev pada terminal (jika kesulitan menjalankan terminal pada hosting sebaiknya update terlebih dahulu / jalankan terlebih dahulu pada server lokal / komputer lokal )
npm run devhasil pada terminal setelah menjalankan perintah :
Setelah itu slihakan mengakses project kita. jika menggunakan fitur laravel serve jangan lupa menjalankan perintahDONE Compiled successfully in 10528ms 11:03:50 PM Asset Size Chunks Chunk Names /public_html/js/app.js 1.41 MB 0 [emitted] [big] /public_html/js/app public_html/css/app.css 289 kB 0 [emitted] [big] /public_html/js/app
php artisan serve
dan mengakses http://localhost:8080 atau nama domain kita.
Langkah 4: Update perubahan yang telah dilakukan pada program kontrol versi
Penggunaan program kontrol versi seperti git sangatlah membantu. oleh karena itu silahkan simpan hasil edit project pada program kontrol versi agar memudahkan kita jika sewaktu waktu ingin mengembalikan ke settingan awal.
============
Demikian tutorial kali ini semoga berguna. Berikut link reverensi untuk tambahan infonya:.
https://developerhowto.com/2018/11/12/how-to-change-the-laravel-public-folder/
https://git-scm.com/doc
https://laravel.com/docs/5.8
terimakasih banyak bang
ReplyDeletewah sudah lama tak pernah buka blog ini ternayata ada yang baca, terimakasih. jadi semangat lagi menulis. hehehe.
Delete