Luthfi Idris Cerita Linux, Jerman Wirausaha dan Hidup Sederhana

Pengalaman dengan Python,Flask,Virtualenv dan Apache

Ini adalah pengalaman pertama saya belajar bahasa pemrograman Python. Kenapa Python?

  • Salah satu bahasa pemrograman yang populer yang banyak digunakan website-website
  • Secara aturan mudah, tidak perlu banyak format seperti harus pakai titik koma pada akhir pernyataan
  • Salah satu yang populer di Github
  • Banyak paket yang membantu
  • Bisa untuk web programming ataupun desktop
  • Interpreter, jadi bisa nyobain dulu di shell sebelum nulis
  • Dukungan lumayan luas
  • Ada temen yang bisa ngajarin

Buku Python

Terus saya tau dari temen saya, untuk belajar yang bener harus dari buku yang bagus. Jangan dari tutorial di internet atau stack overflow. Karena belajar itu harus menyeluruh, jangan cuma comot sana sini. Nanti gak dapet/coret/paham gambarannya. Oleh karena itu saya cari buku yang bagus. Akhirnya saya temukan buat saya yang masih pemula yaitu “Learn Python the Hard Way”.

Setelah beli, ternyata gak bagus banget tapi lumayan lah. Dapet nilai 7 dari saya. Bukunya kadang terlalu membosankan dan terlalu dasar dan repetitive. Tetapi kadang juga dapet informasi baru dan cerita soal programmer. Karena programming bukan hanya soal teknik, tapi juga attitude.

Flask

Ternyata kalau belajar programming, jangan cuma belajar bahasanya tapi belajar juga frameworknya. Karena saya akan buat web application, saya menggunakan Flask Microframework. Flask tidak sekomplit Django, tetapi cukup untuk web application dasar.

Ada satu tutorial yang bagus untuk belajar Flask. Ditulis oleh Miguel Grinberg di websitenya. Andaikan bisa ngikutin sampai akhir, dijamin bisa deh cara gunain flask.

Mwclient

Tugas sekarang saya adalah bikin aplikasi sebagai jembatan API mediawiki. Jadi kita pengen gunakan API mediawiki untuk registrasi user wiki yang kita pakai. User bakalan diharuskan join di form join, kemudian kita akan approve apakah user ini valid apa gak. Kalau di approve otomatis akan membuat user di wiki dan halaman informasinya. Sederhana dan simple. Kenapa harus API? Karena kita pengen user yang registrasi terpopulasi secara semantic. Kalau manual dari mediawiki gak langsung semantic. Aplikasinya udah jadi, bisa diliat di https://emmc.info/wikix_csa/login untuk form login dan [https://emmc.info/wikix_csa/join](https://emmc.info/wikix_csa/join] untuk registrasi user. Untuk source codenya bisa dilihat di Sini.

Untuk pake API mediawiki juga gak harus pake PHP, bisa juga pake bahasa lain seperti python. Dan kadang ada juga framework interface nya, jadi gak harus persis sama perintah API di mediawiki. Framework interface ini punya fungsi sendiri yang mempermudah segalanya. Di sini kita menggunakan mwclient sebagai framework interfacenya. Untuk dokumentasinya, baca yang di sini aja.

Virtualenv dan Apache

Untuk deployment kita menggunakan virtualenv dan apache. Kenapa? karena kita akan buat banyak aplikasi semacam ini untuk wiki-wiki yang lain. Dan dengan virtualenv kita bisa bikin aplikasi independent satu sama lain. Jadi misalnya ada paket python yang kita update dan itu gak akan mempengaruhi aplikasi lainnya. Bagi yang belum tau apa itu virtualenv, saya coba ceritakan sedikit. Virtualenv itu salah satu fitur dari python yang fungsinya kita punya environment sendiri diluar dari dari system. Kadang kita pengen coba-coba sesuatu tanpa ngutak-ngatik system. Atau bisa juga kita gak punya akses untuk merubah settingan python di sistem. Kita bisa pake virtualenv untuk keperluan kayak diatas.

Ini juga gara-gara python banyak banget package-package atau library-library nya. Sebenernya ini juga kelebihan python daripada bahasa lain. Untuk tiap keperluan sudah ada librarynya, jadi gak perlu repot nulis dari awal. Untuk management package-package tersebut juga sudah ada package managernya dikenal dengan PIP. Tinggal pip install namaPaket langsung keiinstall deh. Bisa juga menggunakan pip freeze > requirements.txt untuk export paket yang terinstall ke sebuah file .txt. Kemudian bisa di install kembali sesuai paket dan versinya dengan perintah pip install -r requirements.txt.

Itu baru soal virtualenv dan pip nya, belum soal ditaruh di web server. Kita menggunakan Apache sebagai webservernya. Kita edit file konfigurasi server dengan menambahkan baris kode berikut

    # CSA WIKIX
    WSGIDaemonProcess wikix_csa user=wikix group=wikix threads=1 home=/var/www/wikix_csa/
    WSGIScriptAlias /wikix_csa /var/www/wikix_csa/wikix.wsgi
    <Directory /var/www/wikix_csa>
            WSGIScriptReloading On
            SetHandler wsgi-script
            WSGIProcessGroup wikix_csa
            WSGIApplicationGroup %{GLOBAL}
            Order deny,allow
            Allow from all
    </Directory>

Database

Aplikasi ini membutuhkan database sebagai tempat penyimpanan user yang telah request join dan akan diapprove oleh administrator. Database yang akan dipakai sederhana saja, tidak perlu database sistem sekompleks MySQL. Kita akan menggunakan SQLite. Ada library yang menjembatani SQLite dengan Flask. Namanya Flask-SQLAlchemy. Dengan interface ini, kita gak perlu tau soal sql statement, cukup dengan perintah di python saja, kita sudah bisa komunikasi dengan sql ini. SQLite hanya satu buah file berisikan database. Untuk membuat databasenya kita masuk ke python interpreter. Kemudian ketikkan import sqlite3 setelah itu from wikix import db lalu buat databasenya dengan perintah db.create_all()

« Pos Sebelumnya Pos Sesudahnya »