Cara Deploy Aplikasi Web Django di PythonAnywhere

PythonAnywhere adalah layanan web hosting dan IDE online berbasis python. Kita dapat mengunggah dan memasang aplikasi web berbasis Python yang menggunakan WSGI, misalnya Django dan Flask.

Pada artikel ini, aplikasi web Django yang akan diuji telah diunggah terlebih dahulu di repository online git (bisa menggunakan GitHub maupun Bitbucket). Pastikan web app bisa berjalan di komputer lokal dan semua migrasi model basis data sudah siap di-apply di web hosting. Sistem basis data yang akan digunakan pada contoh ini adalah SQLite (berbasis file), yang merupakan default Django sehingga kita tidak perlu setup basis data lagi.

 

Langkah-langkah

1. Pada menu 'Console', buka bash console, lalu pastikan telah berada di direktori home (misalnya /home/username).

$ pwd
/home/username

2. Lakukan git clone repository aplikasi web Django yang akan di deploy, lalu tuju direktori proyek.

$ git clone https://alamat/repo/online/...
$ cd nama_proyek_django

3. Buat dan aktifkan virtualenv (opsional). Kita bisa menggunakan cara ini untuk menginstal modul-modul python berbeda di setiap virtualenv. Saya sudah pernah membuat ringkasan langkah-langkah menginstal virtualenv dan virtualenvwrapper di sini. Catat lokasi virtualenv (biasanya di /home/nama_user/.virtualenvs/nama_virtualenv).

4. Instal modul-modul python yang dibutuhkan aplikasi web Django. Biasanya, di komputer lokal kita menjalankan perintah pip freeze > requirements.txt lalu menyertakan file txt tersebut di repository bersama aplikasi web kita.

Contoh di komputer lokal:

(my_virtualenv) $ pip freeze
beautifulsoup4==4.6.0
Django==2.0.4
pytz==2018.4
requests==2.12.4
(my_virtualenv) $ pip freeze > reqs.txt

Di web hosting PythonAnywhere (via bash):

(my_hosting_virtualenv) $ pip install -r reqs.txt

Karena kita akan menjalankan aplikasi Django, sudah pasti kita membutuhkan paket Django.

5. Catat lokasi file wsgi.py aplikasi web Django (biasanya /home/nama_user/nama_proyek_django/nama_proyek_django/wsgi.py).

6. Pada PythonAnywhere, tuju menu 'Web'. Pada bagian 'Code', pastikan 'Working directory' dan 'Python version' sudah sesuai (misalnya python 3.5). Pada 'WSGI configuration file', ubah dengan kode berikut:

import os
import sys

# Direktori aplikasi web
sys.path.append('/home/nama_user/nama_proyek')

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "nama_proyek.settings")

application = get_wsgi_application()

7. Pada bagian 'Virtualenv', isi dengan direktori virtualenv yang valid (langkah 3).

8. Untuk menampilkan file static (css, javascript, gambar, dan lain-lain), kita bisa mengisi nilai variabel STATIC_ROOT pada file settings.py dengan direktori absolut pada web hosting (misalnya /home/nama_user/nama_proyek/staticroot). Kemudian jalankan perintah python manage.py collectstatic. Isikan direktori tersebut pada bagian 'Static files'. Untuk URL-nya, biasanya sama dengan nilai STATIC_URL pada file settings.py.

9. Tentukan apakah kita akan memproteksi aplikasi web dengan password pada bagian 'Password protection'.

10. Terakhir, pada bagian atas laman pengaturan, klik tombol 'Reload'. Cek dengan mengakses URL aplikasi web kita, misalnya username.pythonanywhere.com.

Catatan: jangan lupa melakukan migrasi basis data di web hosting jika diperlukan (python manage.py makemigrations dan python manage.py migrate). Jika menggunakan sistem basis data selain SQLite, lakukan pengaturan di menu 'Databases'.