<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Umar R</title>
    <description>The latest articles on Forem by Umar R (@axlgtm).</description>
    <link>https://forem.com/axlgtm</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1846265%2Ffade7020-7e80-4b81-ac58-c434ddf17f56.png</url>
      <title>Forem: Umar R</title>
      <link>https://forem.com/axlgtm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/axlgtm"/>
    <language>en</language>
    <item>
      <title>Deploy Django App Shared Hosting</title>
      <dc:creator>Umar R</dc:creator>
      <pubDate>Fri, 23 Aug 2024 14:30:37 +0000</pubDate>
      <link>https://forem.com/axlgtm/deploy-django-app-shared-hosting-3a1g</link>
      <guid>https://forem.com/axlgtm/deploy-django-app-shared-hosting-3a1g</guid>
      <description>&lt;h3&gt;
  
  
  deskripsi
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Versi &lt;em&gt;requirements&lt;/em&gt; yang digunakan dalam projek
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;python versi 3.9.18&lt;/li&gt;
&lt;li&gt;Django versi 4.2&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Langkah-Langkah
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Memastikan layanan shared hosting berjalan sebagai mana mestinya.
&lt;/h4&gt;

&lt;p&gt;Sebelum masuk pada cara deploy, pastikan layanan shared hosting berjalan sebagai mana mestinya.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6vutznpwxkdrq0ybtaye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6vutznpwxkdrq0ybtaye.png" alt="Domain pada panel" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdb97lu2grst0pcowtip.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdb97lu2grst0pcowtip.png" alt="Halaman bekerja" width="734" height="625"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Buat sub-domain
&lt;/h4&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Buka halaman dashboard&lt;/li&gt;
&lt;li&gt;Cari menu Subdomain-management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjmm0n70j2xfya51lyjuv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjmm0n70j2xfya51lyjuv.png" alt="Halaman sub-domain management" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pastikan sudah memilih domain yang akan digunakan sebagai base (lingkaran merah) dan tambahkan subdomain baru (lingkaran biru)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz6lhh904mk7mwpo89km4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz6lhh904mk7mwpo89km4.png" alt="sub-domain" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gunakan default document root saja, saya akan membuat sub-domain dengan nama django-tutor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffz5s4q9niillabzz1osm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffz5s4q9niillabzz1osm.png" alt="Doc root" width="800" height="541"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Klik add sub-domain, jika sub-domain sudah berhasil dibuat akan muncul pada table.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcnizqrrvbbfctc4guuyj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcnizqrrvbbfctc4guuyj.png" alt="sub-domain success dibuat" width="800" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Coba kunjungi alamat sub-domain apakah sudah dapat diakses dan menampilkan halaman seperti berikut ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvzv4595eclrqwjajp3h.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvzv4595eclrqwjajp3h.PNG" alt="alamat sub-domain" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzx2avxk3zg64gobryksv.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzx2avxk3zg64gobryksv.PNG" alt="Image description" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;gambar diatas menandakan url sudah dapat diakses. Langkah selanjutnya adalah setup ssl, agar web lebih aman dari serangan pihak luar.&lt;/p&gt;
&lt;h4&gt;
  
  
  Setup ssl
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Buka halaman ssl certificates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4oqlsribizdu4a25g9k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4oqlsribizdu4a25g9k.png" alt="Image description" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Buka menu untuk generate ssl baru.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkno4pwfx9coqbnpg69ez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkno4pwfx9coqbnpg69ez.png" alt="Image description" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh2gd4ht7g6k9hs3p5p4h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh2gd4ht7g6k9hs3p5p4h.png" alt="Image description" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs6pnst1zl36yaxvx1ed8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs6pnst1zl36yaxvx1ed8.png" alt="Image description" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ada nama subdomain yang digenerate ssl (dengan dan tanpa www) yang dilingkari biru.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setelah melakukan refresh halaman, selamat ! sekarang subdomain anda sudah dapat diakses dengan lebih aman.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhud50r30vui7suod7pul.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhud50r30vui7suod7pul.PNG" alt="Image description" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Mempersiapkan Django App
&lt;/h4&gt;

&lt;p&gt;Saya tidak akan fokus pada bagaimana setup &lt;em&gt;environment&lt;/em&gt; django dari awal untuk lebih mempersingkat artikel. Siapkan django app yang sudah di develop dan dapat berjalan normal pada &lt;em&gt;environment&lt;/em&gt; lokal.&lt;/p&gt;

&lt;p&gt;Praktek kali ini saya akan menggunakan default django terlebih dahulu (masih dalam settingan awal &lt;em&gt;generate&lt;/em&gt;) menggunakan django 4.2&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F532ub4ku1ac8mboz9j38.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F532ub4ku1ac8mboz9j38.PNG" alt="Image description" width="800" height="371"&gt;&lt;/a&gt;&lt;br&gt;
Saat menjalankan project django dan muncul halaman seperti pada gambar diatas, maka itu berarti django berjalan dengan normal.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;file yang akan digunakan
Tidak semua file harus ditaruh pada server, sesuaikan terhadap project anda. Pada kesempatan kali ini, saya hanya menggunakan &lt;code&gt;.gitignore&lt;/code&gt; template python pada github.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;file tree&lt;/em&gt; proyek yang digunakan pada artikel (dalam artian file ini yang akan masuk ke server, bukan file yang sudah masuk list .gitignore) adalah sebagai berikut.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
|-- django-tutor
|   |-- __init__.py
|   |-- asgi.py
|   |-- settings.py
|   |-- urls.py
|   |-- wsgi.py
|-- manage.py
|-- requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Buat zip yang berisikan file &lt;em&gt;project django&lt;/em&gt; anda sebelum di taruh pada server.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Manage&lt;/em&gt; file pada panel
Masuk pada menu file manager&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwa8z6h24fvaeh9y4mp0n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwa8z6h24fvaeh9y4mp0n.png" alt="Image description" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigasikan pada folder &lt;code&gt;domains &amp;gt; (url subdomain anda) &amp;gt; public html&lt;/code&gt;, didalam folder public html berisikan file index.html. File itu adalah file yang ditampilkan saat kita membuat subdomain tadi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F73nb0yyhvndjtctxbb2a.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F73nb0yyhvndjtctxbb2a.PNG" alt="Image description" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hapus folder cgi-bin dan file index.html, upload proyek zip yang telah kita buat tadi dan jangan lupa ekstrak. Untuk sementara, langkah pada &lt;em&gt;section&lt;/em&gt; ini sudah cukup, kita beralih membuat environment django.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Membuat python app environment
Pada dashboard panel, klik &lt;em&gt;setup python app&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g5luf3utfvx39p5q9vl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g5luf3utfvx39p5q9vl.png" alt="Image description" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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 &lt;em&gt;create&lt;/em&gt; agar dibuatkan environment pada server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48ugglvsyqs90zoxss45.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48ugglvsyqs90zoxss45.PNG" alt="Image description" width="800" height="296"&gt;&lt;/a&gt;&lt;br&gt;
Setelah berhasil &lt;em&gt;setup python app&lt;/em&gt; dan mengunjungi url tadi, maka hanya akan menampilkan &lt;code&gt;python it works&lt;/code&gt;. Itu terjadi karena kita belum melakukan &lt;em&gt;import&lt;/em&gt; proyek django dan environment juga belum terinstall django.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;install django pada environment
copy command yang telah saya lingkari merah dengan cara klik text commandnya.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faaxi2aimxmm1af37rfed.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faaxi2aimxmm1af37rfed.PNG" alt="Image description" width="800" height="128"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;masuk pada terminal&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5gbw8c8xotfkoqui7yhl.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5gbw8c8xotfkoqui7yhl.PNG" alt="Image description" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;didalam terminal, pastekan code yang tadi dengan cara klik kanan dan paste.&lt;/p&gt;

&lt;p&gt;Jika sudah berhasil, silahkan ikut step berikut.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Masukkan command &lt;code&gt;pip list&lt;/code&gt; untuk melihat package apa yang sudah terinstall.&lt;/li&gt;
&lt;li&gt;cek apakah apakah kita sudah berada pada &lt;em&gt;directory&lt;/em&gt; yang benar dengan perintah &lt;code&gt;ls&lt;/code&gt; pastikan file requirements.txt ada.&lt;/li&gt;
&lt;li&gt;Install semua package menggunakan file requirements.txt, dengan perintah &lt;code&gt;pip install -r requirements.txt&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Menginstal django pada &lt;em&gt;environtment&lt;/em&gt; sudah selesai, kita akan beralih pada file manager untuk mengedit file passenger_wsgi.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;passenger.py&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django_tutor.wsgi import application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;note: django_tutor sesuaikan dengan nama projek dari app django masing-masing&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Edit file settings.py
konfigurasi file settings saat &lt;em&gt;production&lt;/em&gt; berbeda dengan ketika masih tahap &lt;em&gt;development&lt;/em&gt;, edit file settings.py (berada pada folder nama projek) menjadi seperti berikut.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Ubah &lt;code&gt;DEBUG = True&lt;/code&gt; menjadi &lt;code&gt;DEBUG = False&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Ijinkan host untuk mengakses app, &lt;code&gt;ALLOWED_HOSTS = []&lt;/code&gt; menjadi &lt;code&gt;ALLOWED_HOSTS = ['django-tutor.artinetix.cloud', 'www.django-tutor.artinetix.cloud']&lt;/code&gt; sesuaikan dengan nama domain yang gunakan.&lt;/li&gt;
&lt;li&gt;Pada akhir file, tambahkan baris kode berikut untuk menyalin file static (css, js, image, etc) &lt;code&gt;STATIC_ROOT = BASE_DIR / 'public'&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Restart django app dengan masuk pada panel &lt;code&gt;dashboard &amp;gt; setup python app &amp;gt; klik restart pada kolom action&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3nt2y6i1ipogrdfz0up.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3nt2y6i1ipogrdfz0up.PNG" alt="Image description" width="800" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Coba akses urlnya, apakah sudah muncul halaman kurang lebih seperti ini ?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5jz99ykeuuhqklr6nag4.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5jz99ykeuuhqklr6nag4.PNG" alt="Image description" width="516" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwe6nr3xsvlh3vmqfkqvo.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwe6nr3xsvlh3vmqfkqvo.PNG" alt="Image description" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Masuk ke halaman &lt;code&gt;setup python app&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Klik menu &lt;code&gt;edit&lt;/code&gt; pada &lt;code&gt;action&lt;/code&gt;python app yang dikehendaki.&lt;/li&gt;
&lt;li&gt;Copy command untuk masuk ke environtment.
&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbe5nifw562nrliid1bdz.PNG" alt="Image description" width="800" height="166"&gt;
&lt;/li&gt;
&lt;li&gt;Masuk pada halaman terminal dan pastekan command.&lt;/li&gt;
&lt;li&gt;Jika berhasil masuk pada environment, jalankan command &lt;code&gt;python manage.py collectstatic&lt;/code&gt; untuk memindahkan file static seperti css dan js ke folder sesuai dengan path STATIC_ROOT pada &lt;code&gt;settings.py&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;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 &lt;code&gt;MIME type is not executable&lt;/code&gt;. Maka anda perlu menambahkan whitenoise package pada django app. Anda dapat merujuk pada url berikut &lt;a href="https://whitenoise.readthedocs.io/en/stable/django.html" rel="noopener noreferrer"&gt;Whitenoise doc&lt;/a&gt; jangan lupa selalu lakukan restart, setiap melakukan perubahan code pada server :).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8m5rt2miw7iz5omet9o1.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8m5rt2miw7iz5omet9o1.PNG" alt="Image description" width="733" height="551"&gt;&lt;/a&gt;&lt;br&gt;
error MIME type.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumo17orgokykeobowzhj.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumo17orgokykeobowzhj.PNG" alt="Image description" width="558" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Demikian cara melakukan deploy django app pada &lt;em&gt;shared hosting&lt;/em&gt; 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 &amp;amp; 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.&lt;/p&gt;

</description>
      <category>django</category>
      <category>deployment</category>
      <category>python</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
