Cara Membuat Subdomain di cPanel untuk Project Laravel atau Website Lain
Waktu pertama kali belajar deploy project ke hosting, gw kira semua website harus ditaruh di:
public_html
Ternyata nggak ๐
Kalau project mulai banyak, jauh lebih rapi kalau dipisah pakai subdomain.
Contohnya:
journal.domain.comapi.domain.comstore.domain.comdemo.domain.com
Jadi setiap project punya folder dan domain sendiri.
Menurut gw ini jauh lebih enak buat:
- management project
- deploy Laravel
- demo aplikasi
- testing
- portfolio
- multi client
Di artikel ini gw bakal share cara setup subdomain di cPanel berdasarkan setup yang gw pakai sendiri.
Apa Itu Subdomain?
Subdomain itu bagian tambahan dari domain utama.
Contoh:
Domain utama:
domain.com
Subdomain:
journal.domain.com
api.domain.com
demo.domain.com
Jadi subdomain bisa dianggap seperti โwebsite terpisahโ tapi masih dalam satu domain utama.
Kenapa Gw Pakai Subdomain?
Karena gw punya beberapa project berbeda.
Contoh:
- journal pribadi
- demo aplikasi Laravel
- landing page client
- API project
Kalau semuanya ditaruh di:
public_html
lama-lama bakal berantakan.
Makanya gw pisah pakai subdomain supaya:
- folder lebih rapi
- deployment lebih gampang
- domain lebih enak dilihat
- project tidak campur-campur
1. Masuk ke cPanel
Login ke cPanel hosting.
Lalu cari menu:
Domains
atau:
Domains โ Create A New Domain
Beberapa provider masih memakai menu:
Subdomains
Tapi di cPanel baru biasanya semuanya lewat menu Domains.
2. Isi Nama Subdomain
Contoh gw mau bikin:
journal.domain.com
Maka yang diisi hanya:
journal
Sedangkan domain utama pilih:
domain.com
Nanti otomatis menjadi:
journal.domain.com
3. Document Root
Biasanya cPanel otomatis membuat folder seperti:
/home/username/journal.domain.com
Nah folder ini nanti menjadi root website subdomain tersebut.
Artinya: semua file yang ada di folder itu akan dibaca oleh:
journal.domain.com
4. Share Document Root
Kadang ada checkbox seperti:
Share document root with domain.com
Menurut gw: jangan dicentang.
Kalau dicentang: subdomain akan memakai folder yang sama dengan domain utama.
Akibatnya:
- isi website bisa sama
- file bercampur
- project tidak terpisah
Gw lebih suka setiap subdomain punya folder sendiri.
5. Setelah Subdomain Dibuat
Biasanya folder otomatis muncul di home directory:
/home/username/journal.domain.com
Kalau cek via SSH:
ls ~
akan muncul:
journal.domain.com
6. Struktur Project yang Gw Pakai
Biasanya gw pisahkan seperti ini:
Source Code
/home/username/repositories/project
Public Web Root
/home/username/journal.domain.com
Jadi source Laravel tetap aman di luar public web root.
7. Kenapa Laravel Tidak Langsung di Public Folder?
Karena Laravel punya:
.env- source code
- config
- vendor
Kalau semuanya langsung ditaruh di public web root itu agak bahaya.
Makanya biasanya yang dibuka public hanya folder:
public
8. Setup Laravel dengan Subdomain
Contoh:
Project Laravel
/home/username/repositories/journal
Public Laravel
/home/username/repositories/journal/public
Root Subdomain
/home/username/journal.domain.com
Biasanya gw:
- copy isi folder public Laravel
- atau setup symlink kalau hosting support
9. Kenapa Kadang Route Laravel 404?
Waktu pertama deploy Laravel di subdomain, gw sempat kena masalah:
- homepage bisa
- route lain 404
Ternyata penyebabnya .htaccess.
Pastikan di root subdomain ada:
.htaccess
Isi minimal:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Karena tanpa rewrite ini, Apache tidak akan mengarahkan route ke Laravel.
10. Subdomain Bisa Dipakai untuk Banyak Project
Menurut gw ini bagian paling enak.
Contoh setup:
journal.domain.com
demo.domain.com
store.domain.com
api.domain.com
Masing-masing:
- punya folder sendiri
- punya repository sendiri
- deploy sendiri-sendiri
Workflow jadi jauh lebih rapi.
11. Workflow Deploy yang Gw Pakai
Biasanya workflow gw seperti ini:
Local:
git push
Hosting:
ssh cpanel-ssh
cd ~/repositories/project
git pull
composer install
npm run build
Done.
Dan karena tiap project punya subdomain sendiri, semuanya jadi lebih gampang di-manage.
Penutup
Menurut gw, belajar setup subdomain itu penting banget kalau mulai sering deploy project sendiri.
Awalnya memang agak bingung:
- document root
- folder public
.htaccess- symlink
- Laravel structure
Tapi begitu paham konsepnya, setup project baru jadi jauh lebih cepat dan rapi.
Dan jujur, setelah mulai pakai subdomain untuk setiap project, gw hampir nggak pernah lagi naruh semua project di public_html ๐