DEV Community

Cover image for Deploy Django App Shared Hosting
Umar R
Umar R

Posted on • Edited on

Deploy Django App Shared Hosting

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.

Domain pada panel
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.

Halaman bekerja

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

Halaman sub-domain management

  • Pastikan sudah memilih domain yang akan digunakan sebagai base (lingkaran merah) dan tambahkan subdomain baru (lingkaran biru)

sub-domain

  • Gunakan default document root saja, saya akan membuat sub-domain dengan nama django-tutor

Doc root

  • Klik add sub-domain, jika sub-domain sudah berhasil dibuat akan muncul pada table.

sub-domain success dibuat

  • Coba kunjungi alamat sub-domain apakah sudah dapat diakses dan menampilkan halaman seperti berikut ?

alamat sub-domain

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.

Image description

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.

Image description

  • Buka menu untuk generate ssl baru.

Image description

  • 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.

Image description

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.

Image description

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.

Image description

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
Image description
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
Enter fullscreen mode Exit fullscreen mode

Buat zip yang berisikan file project django anda sebelum di taruh pada server.

  • Manage file pada panel Masuk pada menu file manager

Image description

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.

Image description

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.

Image description

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.

Image description
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.

Image description

masuk pada terminal

Image description

didalam terminal, pastekan code yang tadi dengan cara klik kanan dan paste.

Jika sudah berhasil, silahkan ikut step berikut.

  1. Masukkan command pip list untuk melihat package apa yang sudah terinstall.
  2. cek apakah apakah kita sudah berada pada directory yang benar dengan perintah ls pastikan file requirements.txt ada.
  3. 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
Enter fullscreen mode Exit fullscreen mode

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.
  1. Ubah DEBUG = True menjadi DEBUG = False
  2. Ijinkan host untuk mengakses app, ALLOWED_HOSTS = [] menjadi ALLOWED_HOSTS = ['django-tutor.artinetix.cloud', 'www.django-tutor.artinetix.cloud'] sesuaikan dengan nama domain yang gunakan.
  3. 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.

Image description

Coba akses urlnya, apakah sudah muncul halaman kurang lebih seperti ini ?

Image description

Coba akses bagian admin dengan menambahkan admin pada bagian belakang url menjadi nama-domain/admin maka kurang lebih akan menampilkan halaman seperti dibawah ini.

Image description

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.

  1. Masuk ke halaman setup python app.
  2. Klik menu edit pada actionpython app yang dikehendaki.
  3. Copy command untuk masuk ke environtment. Image description
  4. Masuk pada halaman terminal dan pastekan command.
  5. 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 pada settings.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 :).

Image description
error MIME type.
Image description

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)