DEV Community

Azka
Azka

Posted on

Deploy Flask Application to PythonAnywhere or Heroku (without database)

language: Bahasa Indonesia

Contoh project: http://nyc311-azka.herokuapp.com/

Source code: github

PythonAnywhere (paling mudah)

tutorial: https://help.pythonanywhere.com/pages/Flask/

Deploy di PYAW paling mudah karena tidak membutuhkan kita untuk menginstall aplikasi tertentu di komputer, tidak seperti Heroku yang membutuhkan aplikasi Heroku dan Git.

Catatan:

  1. Kalau aplikasinya tidak perlu memakai package dengan versi tertentu, saran saya tidak perlu membuat virtualenv karena memori yang disediakan sangat terbatas (500 MB). Ketika menggunakan virtualenv memori akan termakan banyak untuk install package.

  2. File yang dibutuhkan untuk project kita tinggal di-upload ke PYAW. Jika project terdiri dari beberapa folder dan file (seperti project pada umumnya), akan lebih mudah jika satu kesatuan folder project kita (atau folder tertentu, misal hanya folder static) di-zip terlebih dahulu lalu di-upload di lokasi yang diinginkan.

  3. Contoh: untuk project nyc311 yang membutuhkan file static dalam folder static, upload folder static yang sudah di-zip ke direktori /home/azukacchi/nyc311. File zip dapat di-unzip dengan cara: (1) membuka folder tempat file zip berada lalu "Open Bash console here", atau (2) buka bash console dimana pun lalu ubah direktori ke tempat file zip berada cd /home/azukacchi/nyc311. Setelah bash console terbuka, ketik unzip namafile.zip (dalam kasus ini namafile adalah static). File zip yang terekstrak akan menjadi folder berisi file-file.

    image

  4. Jangan lupa isi detail aplikasi di halaman Web.

    image

    image

Heroku

diadaptasi dari tutorial resmi: Getting Started on Heroku with Python

Asumsi:

  • Heroku dan Git sudah ter-install (jika belum, lihat link tutorial)
  • folder project sudah tersedia dengan (dengan atau tanpa menggunakan virtual environment), aplikasi Flask sudah berjalan OK di komputer dan siap di-deploy

Langkah-langkah:

  1. Di dalam folder project, buat beberapa file dengan menggunakan Notepad bernama Procfile, requirements.txt, runtime.txt, .gitignore dengan rincian isi file sebagai berikut:

    1. Procfile

        web: gunicorn app:app
      
    2. requirements.txt

      Semua package yang dibutuhkan untuk project kita. Tambah juga gunicorn untuk webserver (install dengan pip terlebih dahulu). Contoh untuk project saya

        gunicorn
        flask==1.1.2
        imblearn
        plotly==4.14.3
        pandas==1.2.2
        numpy==1.19.2
        sklearn
      
    3. runtime.txt

      Isi dengan versi python yang digunakan untuk project. Misal untuk project ini saya menggunakan virtual environment dengan python versi 3.8.5, maka isi file sebagai berikut.

        python-3.8.5
      
    4. .gitignore

      Sesuaikan dengan project. Misal:

        ## Cache
        __pycache__/
      
  2. Dengan asumsi seluruh file sudah final, langkah selanjutnya adalah menjadikan folder project kita menjadi repository git. Buka command prompt lalu buka direktori folder project kita dan ubah folder menjadi repository git. Lalu buat aplikasi heroku baru di folder tersebut. Contoh:

    cd "C:\Users\azuka\Drive Folder\Dash\311-nyc"
    git init
    heroku create
    
  3. Commit dan push. Perhatikan baik-baik log pada command prompt jika terdapat error pada langkah terakhir. Error bisa datang dari versi python yang tidak sesuai di file runtime.txt atau ada package yang tidak tertera di file requirements.txt.

    git add .
    git commit -m "lalalayeyeye isi bebas"
    git push heroku master
    
  4. Jika deploy sudah berhasil, pastikan satu instance app berjalan

    heroku ps:scale web=1
    
  5. Ganti nama app lama (secara default di-generate random oleh Heroku) dengan nama yang diinginkan

    heroku apps:rename newname
    
  6. Jika kita membuat perubahan pada aplikasi, cukup ulangi deploy dengan mengulangi langkah nomor 3.

Top comments (0)