Halo teman-teman, kali ini aku mau share tutorial upload project website yang dibuat menggunakan laravel ke shared hosting. Mungkin beberapa teman-teman sedikit kebingungan cara uploadnya seperti apa. Nah di tutorial kali ini aku bakal share step by step nya.
Build Assets
Kalau kamu menggunakan vite untuk compiling assets, sebelum di upload ke shared hosting, pastikan kamu lakukan build assets terlebih dahulu. Jalankan perintah berikut di project kalian.
npm run build
Zip Project
Kemudian zip semua file project kalian. Kalian bisa kecualikan beberapa folder atau file seperti folder .git atau file .gitignore. Pastikan semua file masuk ke dalam file zip.
Upload ke Shared Hosting
Setelah project kalian berbentuk zip. Kalian bisa langsung upload ke direktori public_html di shared hosting kalian.
Setelah di upload, ekstrak file zip project kalian ke public_html.
Buat .htaccess
Selesai di upload bukan berarti kalian bisa langsung akses, karena akses dari aplikasi laravel ini berada di folder public. Jadi supaya domain kita mengakses ke folder public, maka perlu kita buat file .htaccess di public_html.
<IfModule mod_rewrite.c>
# That was ONLY to protect you from 500 errors
# if your server did not have mod_rewrite enabled
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domainkamu.com [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# RewriteBase /
# NOT needed unless you're using mod_alias to redirect
RewriteCond %{REQUEST_URI} !/public
RewriteRule ^(.*)$ public/\ [L]
# Direct all requests to /public folder
</IfModule>
Fungsi .htaccess ini selain mengarahkan akses web ke folder public, juga mengarahkan untuk menggunakan protokol https:// sehingga website kalian lebih aman.
Edit file .env
Oke jadi file .env ini berfungsi sebagai data konfigurasi yang akan digunakan oleh aplikasi laravel. Nah tinggal kalian sesuaikan dengan data database kalian di shared hosting. Jangan lupa ganti environment menjadi production dan sesuai alamat url websitenya.
Artisan Migrate Database
Oke ini menjadi kendala ketika teman-teman mau migrasi database menggunakan perintah artisan migrate. Rata-rata shared hosting tidak menyediakan akses terminal di cpanel. Solusi paling mudah adalah mengeksekusi perintah artisan dari route. Kita akan buat route domainkamu.com/migrate untuk mengeksekusi artisan migrate.
Buka folder routes, kemudian buka file web.php. Tambahkan code berikut ini.
Route::get('migrate', function () {
$exitCode = Artisan::call('migrate --force');
});
Sedikit penjelasan mengapa ada flag –force di karenakan aplikasi kita sudah ada di production mode. Setiap melakukan perintah artisan migrate di mode production selalu ada konfirmasi perintah. Sehingga kita gunakan flag –force untuk tetap menjalankan perintah tanpa konfirmasi.
Kamu juga bisa menambahkan migrate:fresh –seed jika ingin mereset database.
Artisan Storage Link
Oke ini buat temen-temen yang menggunakan File Storage dari laravel. Untuk melakukan symbolic link ke folder public, bisa lakukan di route juga. Kita akan buat route domainkamu.com/buat-symbolic-link untuk mengeksekusi artisan storage link.
Buka folder routes, kemudian buka file web.php. Tambahkan code berikut ini.
Route::get('buat-symbolic-link', function () {
$exitCode = Artisan::call('storage:link');
});
Selamat mencoba. 🙂