Sudah sejak lama kita mengandalkan Virtualenv untuk melakukan manajemen library di Python. Dan semua itu sekarang akan segera berubah. Perkenalkan Pipenv, sebuah langkah baru dalam manajemen library di Python. Kalau rekan-rekan familiar dengan npm di Nodejs atau bundler di Ruby maka pipenv adalah tools yang serupa dengan itu di Python.

Kalau kita lihat dari namanya maka Pipenv ini adalah semacam gabungan dari perintah pip dan virtualenv ya. Memang seperti itu lah si Pipenv ini. Library yang satu ini mengabungkan pip dan virtualenv manajemen dalam satuĀ  perintah. Kita tidak perlu lagi memanggil perintah pip dan virtualenv secara terpisah.

Pipenv pun menggunakan sebuah format file tersendiri untuk konfigurasi environtmen nya, file itu bernama Pipfile. Setelah melakukan sedikit riset, ternyata tidak sulit menggabungkan pipenv ini dengan supervisord, sungguh nilai tambah yang besar ya. Kuy kita segera mencobanya di Ubuntu 18.04

Persiapan

Pada eksperimen ini kita akan berkerja berdasarkan distro Ubuntu 18.04. Apabila rekan baru saja menginstall Ubuntu tersebut dan belum melakukan perubahan apa-apa maka ada kemungkinan beberap library Python yang dibutuhkan belum tersedia. Untuk itu kita perlu melakukan beberapa persiapan repo seperti berikut ini :

    1. Edit file /etc/apt/source.list kemudian cari baris
      deb http://archive.ubuntu.com/ubuntu bionic main

      ganti menjadi

      deb http://archive.ubuntu.com/ubuntu bionic main multiverse universe
    2. Update repository index database dengan perintah berikut
      sudo apt-get update

Baik, sekarang kita sudah siap untuk lanjut ke tahap berikutnya. Pada tahap ini kita akan melakukan installasi pip, ya ternyata pipenv tetap butuh pip untuk dapat berjalan. Installah pip dengan perintah berikut ini

sudo apt-get install python-pip python3-distutils

Berikutnya setelah pip terinstall dengan baik, saatnya kita meninstall Pipenv dengan perintah

sudo pip install pipenv

Apabila proses installasi berjalan dengan baik, berikut nya kita bisa mengecek versi dari Pipenv yang barusan diinstall dengan perintah

pipenv --version

Kita sudah terlanjur menggunakan virtualenvwrapper untuk proyek-proyek kita?, tidak masalah kok. Pipenv akan otomatis membaca konfigurasi yang sudah dilakukan oleh virtualenvwrapper. Apabila kita sudah melakukan setup virtualenvwrapper maka setiap virtualenv akan diletakan di ~/.virtualenvs, namun apabila belum env akan diletakan di ~/.local/share/virtualenvs.

Penggunaan (Developmen)

Pada bagian ini saya akan mendemonstrasikan penggunaan pipenv dalam developmen django + gunicorn + supervisord. Let’s go …

Langkah pertama cari tempat yang nyaman untuk meletakan proyek kita , misal di ~/Project dengan perintah

mkdir ~/Projects/ayam
cd ~/Projects/ayam

Selanjutnya kita perlu melakukan inisiasi pipenv untuk proyek ini. Pada proyek ini kita akan menggunakan python 3 ya. Inisiasi dengan perintah berikut

pipenv --three

Kemudian kita bisa langsung menginstall django dengan perintah

pipenv install django

Nah sekarang saatnya kita membuat proyek django dengan peritah

pipenv run django-admin startproject ayam .

Berikutnya kita test installasi django dengan perintah

pipenv run ./manage.py migrate
pipenv run ./manage.py runserver

Penggunaan (Deployment)

Setelah kita berhasil melakukan developmen django, tiba saatnya untuk memasang aplikasi kita. Deploymen ini akan dibantu dengan Gunicorn dan Supevisord. Langkah-langkah nya sebagai berikut:

    1. Install library gunicorn dengan perintah
      pipenv install gunicorn
    2. Install supervisord dengan perintah
      sudo apt-get install supervisor
    3. Buat file konfigurasi di /etc/supervisor/conf.d/ayam.conf yang isinya sebagai berikut
      [program:ayam]
      user = coba
      directory = /home/coba/Projects/ayam/
      command = /usr/local/bin/pipenv run gunicorn ayam.wsgi -b 0.0.0.0:9000
      

      . Sebagai catatan ya, silahkan sesuaikan nama user dan direktori tempat project berada.

    4. Lalu perintahkan supervisord untuk membaca konfigurasi yang baru kita buat dengan perintah
      sudo supervisorctl reread
    5. Setelah berhasil membaca konfigurasi baru, perintahkan supervisord untuk menjalankan nya dengan perintah
      sudo supervisorctl update
    6. Test deploymen dengan membuka http://localhost:9000/

Selamat mencoba


Bramandityo Prabowo

Bramandityo Prabowo

Suka makan dan tentu saja suka masak. Tertarik dengan Functional Programing, Distributed System, Network Security, Operating System Customization, Virtualization dan NoSQL. Language of choices nya adalah Python, Bash, Go, Erlang, Nimlang. Rust dan Ocaml.