deskripsi
Pada kesempatan ini, saya akan membagikan bagaimana mendeploy aplikasi django ke shared hosting. Untuk lebih memudahkan, saya menggunakan panel DirectAdmin. Jika anda menggunakan cpanel atau panel lainnya, saya rasa tidak akan jauh berbeda. Pastikan anda sudah memiliki domain dan membeli layanan shared hosting dimana saja, saya tidak akan membatasi harus menggunakan layanan tertentu.
Versi requirements yang digunakan dalam projek
- python versi 3.9.18
- Django versi 4.2
Langkah-Langkah
Memastikan layanan shared hosting berjalan sebagai mana mestinya.
Sebelum masuk pada cara deploy, pastikan layanan shared hosting berjalan sebagai mana mestinya.
Pada praktek kali ini, saya akan menggunakan domain artinetix.cloud (sesuaikan dengan nama domain anda), untuk memastikan layanan berjalan normal, jika kita mengakses url domain akan keluar halaman seperti berikut.
Buat sub-domain
Buat sub-domain untuk membedakan url aplikasi satu dengan yang lain, satu domain dapat digunakan untuk banyak sub-domain. Sebagai contoh, jika domain yang digunakan artinetix.cloud maka sub-domain yang akan dibuat akan seperti django_tutor.artinetix.cloud anda dapat membaca lebih lanjut tentang sub-domain pada sumber diinternet untuk lebih memahami sub-domain.
- Buka halaman dashboard
- Cari menu Subdomain-management
- Pastikan sudah memilih domain yang akan digunakan sebagai base (lingkaran merah) dan tambahkan subdomain baru (lingkaran biru)
- Gunakan default document root saja, saya akan membuat sub-domain dengan nama django-tutor
- Klik add sub-domain, jika sub-domain sudah berhasil dibuat akan muncul pada table.
- Coba kunjungi alamat sub-domain apakah sudah dapat diakses dan menampilkan halaman seperti berikut ?
jangan khawatir, karena kita belum melakukan setup ssl agar dapat mengakses menggunakan protokol https bukan http saja. Anda dapat klik advance dan lanjutkan ke alamat untuk melihat apakah url bekerja.
gambar diatas menandakan url sudah dapat diakses. Langkah selanjutnya adalah setup ssl, agar web lebih aman dari serangan pihak luar.
Setup ssl
- Buka halaman ssl certificates.
- Buka menu untuk generate ssl baru.
- Scroll kebawah dan anda akan menemukan alamat url anda (baik tanpa www dan dengan wwww) yang belum tercentang. Centang pada alamat url yang akan digeneratekan ssl (lingkaran merah) dan pastikan force ssl redirect tercentang juga (lingkaran biru) lalu klik save.
pada bagian atas halaman web, akan muncul loading animation garis yang menandakan bahwa proses sudah berjalan. Jika proses sudah berhasil, maka akan muncul notifikasi seperti berikut ini.
ada nama subdomain yang digenerate ssl (dengan dan tanpa www) yang dilingkari biru.
- Setelah melakukan refresh halaman, selamat ! sekarang subdomain anda sudah dapat diakses dengan lebih aman.
Mempersiapkan Django App
Saya tidak akan fokus pada bagaimana setup environment django dari awal untuk lebih mempersingkat artikel. Siapkan django app yang sudah di develop dan dapat berjalan normal pada environment lokal.
Praktek kali ini saya akan menggunakan default django terlebih dahulu (masih dalam settingan awal generate) menggunakan django 4.2
Saat menjalankan project django dan muncul halaman seperti pada gambar diatas, maka itu berarti django berjalan dengan normal.
- file yang akan digunakan
Tidak semua file harus ditaruh pada server, sesuaikan terhadap project anda. Pada kesempatan kali ini, saya hanya menggunakan
.gitignore
template python pada github.
file tree proyek yang digunakan pada artikel (dalam artian file ini yang akan masuk ke server, bukan file yang sudah masuk list .gitignore) adalah sebagai berikut.
.
|-- django-tutor
| |-- __init__.py
| |-- asgi.py
| |-- settings.py
| |-- urls.py
| |-- wsgi.py
|-- manage.py
|-- requirements.txt
Buat zip yang berisikan file project django anda sebelum di taruh pada server.
- Manage file pada panel Masuk pada menu file manager
Navigasikan pada folder domains > (url subdomain anda) > public html
, didalam folder public html berisikan file index.html. File itu adalah file yang ditampilkan saat kita membuat subdomain tadi.
Hapus folder cgi-bin dan file index.html, upload proyek zip yang telah kita buat tadi dan jangan lupa ekstrak. Untuk sementara, langkah pada section ini sudah cukup, kita beralih membuat environment django.
- Membuat python app environment Pada dashboard panel, klik setup python app.
pilih create python app dan masukkan konfigurasi seperti berikut, untuk application root dapat disesuaikan karena pada peletakan file tadi kita sudah menaruh python app pada folder public_html sehingga konfigurasi menjadi seperti pada gambar dibawah. Jika sudah sesuai klik create agar dibuatkan environment pada server.
Setelah berhasil setup python app dan mengunjungi url tadi, maka hanya akan menampilkan python it works
. Itu terjadi karena kita belum melakukan import proyek django dan environment juga belum terinstall django.
- install django pada environment copy command yang telah saya lingkari merah dengan cara klik text commandnya.
masuk pada terminal
didalam terminal, pastekan code yang tadi dengan cara klik kanan dan paste.
Jika sudah berhasil, silahkan ikut step berikut.
- Masukkan command
pip list
untuk melihat package apa yang sudah terinstall. - cek apakah apakah kita sudah berada pada directory yang benar dengan perintah
ls
pastikan file requirements.txt ada. - Install semua package menggunakan file requirements.txt, dengan perintah
pip install -r requirements.txt
Menginstal django pada environtment sudah selesai, kita akan beralih pada file manager untuk mengedit file passenger_wsgi.
- Edit file django passenger_wsgi import aplikasi django dari folder nama projek django (folder berisi file settings.py) dengan mengedit file passenger_wsgi, file ini berada pada directory yang sama dengan requirements.txt, dengan kata lain root app django kita.
passenger.py
from django_tutor.wsgi import application
note: django_tutor sesuaikan dengan nama projek dari app django masing-masing
- Edit file settings.py konfigurasi file settings saat production berbeda dengan ketika masih tahap development, edit file settings.py (berada pada folder nama projek) menjadi seperti berikut.
- Ubah
DEBUG = True
menjadiDEBUG = False
- Ijinkan host untuk mengakses app,
ALLOWED_HOSTS = []
menjadiALLOWED_HOSTS = ['django-tutor.artinetix.cloud', 'www.django-tutor.artinetix.cloud']
sesuaikan dengan nama domain yang gunakan. - Pada akhir file, tambahkan baris kode berikut untuk menyalin file static (css, js, image, etc)
STATIC_ROOT = BASE_DIR / 'public'
Restart django app dengan masuk pada panel dashboard > setup python app > klik restart pada kolom action
.
Coba akses urlnya, apakah sudah muncul halaman kurang lebih seperti ini ?
Coba akses bagian admin dengan menambahkan admin
pada bagian belakang url menjadi nama-domain/admin
maka kurang lebih akan menampilkan halaman seperti dibawah ini.
Jika anda perhatikan, tampilannya seperti alakadarnya. Ini dikarenakan file css, js dan file static lainnya belum dicopy ke projek django, untuk melakukannya anda dapat memperhatikan langkah berikut ini.
- Masuk ke halaman
setup python app
. - Klik menu
edit
padaaction
python app yang dikehendaki. - Copy command untuk masuk ke environtment.
- Masuk pada halaman terminal dan pastekan command.
- Jika berhasil masuk pada environment, jalankan command
python manage.py collectstatic
untuk memindahkan file static seperti css dan js ke folder sesuai dengan path STATIC_ROOT padasettings.py
.
Saat berhasil melakukan langkah diatas, pada folder root app seharusnya sudah tersedia folder public dengan berisi file css dan js (file static yg digunakan pada django). Silahkan coba akses url admin pada django app dengan menambahkan admin dibelakang url (url/admin). Jika tampilan masih seperti dibawah ini dan saat kita cek pada console ada error MIME type is not executable
. Maka anda perlu menambahkan whitenoise package pada django app. Anda dapat merujuk pada url berikut Whitenoise doc jangan lupa selalu lakukan restart, setiap melakukan perubahan code pada server :).
Demikian cara melakukan deploy django app pada shared hosting menggunakan DirectAdmin, sebenarnya masih banyak yang harus dilakukan selain deploy yaitu setup database dan menambahkan variabel environtment. Perlu diperhatikan juga, cara ini merupakan cara manual yang biasa saya lakukan, memang terkesan ribet. Untuk lebih memudahkan proses deploy, biasanya bisa menggunakan ci & cd melalui github action. Cukup sekian dari saya, jika ada hal yang ingin disampaikan entah itu saran dan kritik yang membangun silahkan komen pada kolom komentar. Sekian terima kasih.
Top comments (0)