Thursday, November 24, 2011

Belajar Flask: Aplikasi Perdana

Mari kita membuat aplikasi perdana dengan Flask!

Telebih dahulu, untuk mengamankan lingkungan ngoprek, kita akan membuat directory khusus untuk belajar,  membuat lingkunan aman dengan virtual environment dalam directory ini, mengaktifkan lingkungan tersebut, dan instalasi Flask di dalam lingkungan baru ini (lihat disini untuk langkah-langkahnya).

Untuk program pertama, saya akan membuat aplikasi yang hanya akan menampilkan pesan berikut:
Apakabar dari Flask...
Untuk itu, pertama sekali kita akan membuat berkas yang bernama apakabar.py yang berisikan kode-kode berikut:
from flask import Flask
app = Flask(__name__)

@app.route('/')
def halamanApakabar():
    return "Apakabar dari Flask..."

app.run(debug=True, host="127.0.0.1", port=8080)
Mari kita lihat apa arti perintah-perintah ini:
  • Baris pertama bertujuan untuk memuat Flask ke dalam program kita agar bisa dipergunakan;
  • Baris kedua bertujuan untuk menginisialisasikan Flask dimana dalam proses ini Flask akan meminta kita untuk memberikan nama untuk aplikasi tersebut. Dalam contoh di atas untuk nama aplikasi saya memakai nama yang diberikan oleh python yaitu dengan mempergunakan variable global-nya Python __name__ (= nama dari modul yang bersangkutan, dalam hal ini apakabar). Tetapi ingat jika kita langsung menjalankan modul ini dan bukan memanggilnya dari modul lain maka __name__ akan berisikan __main__;
  • Baris keempat memetakan path / dengan fungsi halamanApakabar atau dengan kata lain jika ada permintaan untuk alamat / maka kita meminta Flask untuk memanggil fungsi halamanApakabar.
  • Baris kelima dan keenam hanya berupa deklarasi dari fungsi halamanApakabar yang hanya mencetak pesan yang saya inginkan.
  • Baris kedelapan merupakan perintah untuk menjalankan web server untuk aplikasi perdana ini yang berjalan di localhost dengan port 8080. Sedangkan parameter debug saya pakai untuk meminta Flask berjalan dalam mode debug dan jangan menyimpan (=cache) program kita dan selalu melihat jika ada versi terbaru disamping juga untuk menampilkan pesan kesalahan secara lengkap.
Untuk menjalankan aplikasi ini cukup dengan mengetikan perintah berikut di dalam terminal:
python apakabar.py
Sekarang buka browser dan tuju ke alamat:
http://127.0.0.1:8080
Maka halaman perdana kita akan muncul! Gampangnya bukan!? :D

Kembali ke: Belajar Flask


Friday, November 18, 2011

Belajar Google AppEngine: Cara Upload Aplikasi ke Google

Sekarang saya mau upload aplikasi yang sebelumnya saya buat disini ke situsnya Google. Langkah-langkanya adalah sbb:
  1. Karena hostingnya di Google ya tentunya harus memakai akun Google dan jika belum memilikinya harus membuatnya terlebih dahulu disini;
  2. Setelah itu daftarkan akun tersebut agar memiliki akses ke infrastruktur Google disini;
  3. Jika semua berjalan lancar maka akan muncul halaman yang berisikan daftar aplikasi yang dimiliki akun ini, yang sementara masih kosong. 
    • Google memberikan maksimal 10 aplikasi yang bisa diupload secara gratis. Tentunya masing-masing aplikasi memiliki kuota harian dan jika melebihi kuota ini maka Google akan dengan senang hati mulai meminta bayaran. Menariknya kita bisa mengatur seberapa besar tagihan per harinya, tentunya dengan resiko kalau batas tagihan kelewat rendah sedangkan pemakaian aplikasi kita tinggi maka aplikasi bisa mendadak berhenti jika melewati batas harian ini. Rincian kuota hariannya bisa dilihat disini;
  4. Sebelum aplikasi bisa di-upload saya harus terlebih dahulu membuat aplikasi baru dengan menekan tombol Create Application di halaman daftar aplikasi. Ikuti perintah-perintahnya dan catat Application Identifier yang akhirnya dipakai. Untuk aplikasi ini saya memakai rahmaddawood
    • Kalau belum memiliki domain name maka Google akan memberikan subdomain sesuai dengan Application Identifier yang kita tetapkan di appspot.com, jadi untuk aplikasi saya subdomainnya dan alamaynya menjadi rahmaddawood.appspot.com
  5. Buka berkas app.yaml dari aplikasi yang akan kita upload dan gantikan isi field application dengan nama Application Identifier yang telah didaftarkan;
  6. Proses upload-nya sendiri kita lakukan dengan cara:
    • Menjalankan terminal
    • Tuju ke directory dimana aplikasi kita berada, dalam contoh saya berarti:
      • cd ~/ngoprek/belajar-gae
    • Aktifkan lingkungan kita, dalam contoh saya berarti:
      • . .env/bin/activate
    • Jalankan program untuk upload aplikasi, dalam contoh saya berarti:
      • .gae/appcfg.py update .
    • Perhatikan disini:
      • appcfg.py merupakan program yang akan melakukan proses upload;
      • update merupakan perintah untuk meng-upload aplikasi kita;
      • Titik diakhir perintah ini bermaksud untuk memerintahkan update agar mengambil semua isi directory dan subdirectory-nya dimana kita saat itu berada. Cara lain perintah ini bisa saja secara manual memberikan path lengkapnya seperti:
        • .gae/appcfg.py update ~/ngoprek/belajar-gae
      • Ingat program ini tidak akan meng-upload berkas-berkas atau directory-directory yang disembunyikan (=hidden), yang namanya diawali dengan titik;
    • Program ini nantinya akan meminta anda untuk memasukkan username dan password dari akun Google anda
  7. Setelah proses upload sukses maka hasilnya dapat diperiksa online, dalam contoh saya berarti di http://rahmaddawood.appspot.com

Belajar Google AppEngine: Instalasi dan Konfigurasi

Saya memutuskan untuk memakai Google App Engine (GAE) untuk menjalankan aplikasi saya. Alasan utamanya karena jasa ini memberikan kuota gratis yang lumayan besar dan jika nantinya diperlukan bisa dengan mudah diekspansi.

Permasalah utama jika ingin memakai Python untuk membuat aplikasi berbasis GAE adalah harus mempergunakan veri Python 2.5 karena GAE belum stabil untuk Python versi 2.7. Ini tidak begitu masalah jika kita memakai aplikasi virtual environment (virtualenv) untuk menyekat lingkungan-lingkungan pengembangan kita. (Lihat disini untuk langkah-langkah instalasi dan konfigurasi virtualenv di Ubuntu)

Karena sekarang saya memakai Python versi 2.7 maka saya harus terlebih dahulu mengunduh dan instalasi Python versi 2.5. Langkahnya cukup sederhana tinggal membuka terminal dan menjalankan perintah:

sudo apt-get install python2.5 python2.5-doc

Perhatikan, saya  juga menginstalasi dokumentasi untuk Python 2.5 (python2.5-doc).

Langkah berikutnya adalah mengunduh berkas GAE itu sendiri dari sini. Pilih SDK untuk Python dan jangan lupa untuk juga mengunduh dokumentasi-nya. Setelah selesai diunduh, GAE saya unzip dan tempatkan di root dari home directory saya (path-nya menjadi ~/google_appengine).

Kebiasaan saya adalah untuk segala program/kode ngoprek saya tempatkan di directory yang bernama ngoprek (path-nya ~/ngoprek) oleh karenanya untuk memulai belajar memakai GAE ini saya membuat subdirectory baru didalamnya bernama belajar-gae (path-nya menjadi ~/ngoprek/belajar-gae). 

Saya masuk kedalam subdirectory ini

cd ~/ngoprek/belajar-gae

dan membuat lingkungan yang aman untuk saya ngoprek, tanpa mengganggu konfigurasi saya yang lain. Untuk itu saya memakai virtualenv dengan pilihan:

  • Memakai Python versi 2.5 (opsi --python=python2.5);
  • Tanpa memakai modul-modul lain yang sudah saya instalasi sebelumnya (opsi --no-site-packages);
  • Dan menyimpan berkas konfigurasinya di-subdirectory .env (pathnya menjadi ~/ngoprek/belajar-gae/.env) . Update: Perhatikan nama subdirectory sengaja diawali dengan titik agar tersembunyi dan tidak ikut dikirim ke situs Google saat kita mau upload aplikasi ini nantinya.
Perintah akhirnya menjadi:

virtualenv --python=python2.5 --no-site-packages .env

Terus saya aktifkan lingkungan ini dengan perintah (perhatikan terdapat spasi antara titik dan kata .env);

. .env/bin/activate

Agar nantinya mudah mengakses SDK-nya GAE dari lingkungan ini, saya juga buatkan soft link di dalam subdirectory pengembangan saya ke directory GAE (ingat GAE saya taruh di directory ~/google_appengine)  dengan perintah:

ln -s ~/google_appengine .gae

Karena namanya kelewat panjang saya singkat menjadi .gaeUpdate: Perhatikan nama subdirectory sengaja diawali dengan titik agar tersembunyi dan tidak ikut dikirim ke situs Google saat kita mau upload aplikasi ini nantinya.

Rupanya agar webserver-nya GAE dalam menangani gambar akan memakai modul PIL (Python Image Library) yang tidak termasuk dalam instalasi standar Python versi 2.5 sehingga perlu kita unduh dan instalasi secara manual. Hal ini juga cukup mudah kita lakukan dengan menjalankan perintah berikut (perhatikan perintah ini harus dijalankan setelah kita mengaktifkan lingkungan untuk ngoprek):

pip install PIL

Disini pip merupakan aplikasi untuk mengunduh dan instalasi modul-modul Python, install adalah perintah untuk mengunduh dan untuk instalasi, sedangkan PIL (semua huruf besar) adalah nama modul yang hendak kita instalasi. 

Sekarang lingkungan ngoprek kita sudah siap dan mari kita buat aplikasi perdana untuk mengujinya!

Minimal kita membutuhkan dua berkas. Berkas pertama berisikan program yang harus dijalankan oleh GAE. Sebagai contoh saya buatkan sebuah berkas bernama apakabar.py (path-nya ~ngoprek/belajar-gae/apakabar.py) dengan kode-kode berikut:

print 'Content-Type: text/plain'
print ''
print 'Apakabar!'

Program ini hanya mencetak tiga baris: 
  • Baris pertama merupakan Content-Type (=mime-type) yang menginformasikan ke browser bahwa dokumen yang akan dikirimkan adalah bertipe text/plain
  • Baris kedua hanya berupa baris kosong yang merupakan keharusan dari HTTP untuk memisahkan perintah HTTP dengan isi dokumen;
  • Dan baris ketiga isi dokumennya itu sendiri.
Untuk berkas kedua, isinya sekedar informasi dasar yang dibutuhkan oleh GAE. Nama berkas ini harus app.yaml. Isi berkas ini adalah sbb:

application: apakabar
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
  script: apakabar.py

Initinya, berkas ini hanya mengatakan bahwa jika ada permintaan untuk alamat (=URL) / jalankan kode apakabar.py.

Sekarang mari kita jalankan aplikasi ini dengan pertama sekali menjalankan servernya GAE yaitu dev_appserver.py. Ingat sebelumnya kita telah membuat softlink bernama gae ke directory tempat kita menaruh GAE sehingga kita tinggal memanggilnya dengan cara ini:

.gae/dev_appserver.py ~/ngoprek/belajar-gae

Dalam menjalankan perintah ini kita perlu menginformasikan directory dimana aplikasi kita berada, dalam hal ini ~/ngoprek/belajar-gae. Karena saya mejalankan perintah ini langsung dari dalam directory itu maka perintah ini bisa kita sederhanakan menjadi:

.gae/dev_appserver.py .

Perhatikan titik diakhir perintah ini yang berarti directory dimana kita saat itu berada.

Untuk menguji aplikasi ini, buka browser dan ketikkan alamat berikut:

http://localhost:8080

Akan muncul halaman kosong dengan tulisan Apakabar!

Perhatikan bahwa dalam contoh program di atas, kita bertanggung jawab atas segala perintah HTTP yang diperlukan (makanya ada perintah untuk mencetak Content-Type). Tentunya ini sangat merepotkan, oleh karenanya GAE menyarankan untuk memakai framework seperti Django, Web2Py, atau Flask untuk mempermudah pembuatan aplikasi.

PERHATIAN!

Rupanya ada bug yang sangat mengganggu jika memakai Google AppEngine dengan VirtualEnv yaitu Bug #4439. Tetapi akhirnya saya menemukan solusinya yang saya tuliskan disini. Mohon mengikuti petunjuknya agar terhindari dari berbagai permasalahan yang menimpa saya! :p

Perbaikian Bug #4339 untuk Google AppEngine dan VirtualEnv

Solusi ini saya adaptasi dari tulisan disini dan untuk
  • Google AppEngine versi 1.6.0
  • VirtualEnv minimal versi 1.6.4
Asumsinya:
  • Google AppEngine berada di ~/google_appengine atau path lengkapnya dilaptop saya /home/rahmad/google_appengine
  • Lingkungan yang dibuat berada di ~/ngoprek atau path lengkapnya dilaptop saya /home/rahmad/ngoprek
  • Directory untuk konfigurasi virtualenv berada di ~/ngoprek/env  atau path lengkapnya dilaptop saya /home/rahmad/ngoprek/env
  • Lingkungan ini dibuat dengan perintah
    • virtualenv --python=python2.5 --no-site-packages env
Langkah-langkahnya:
  1. Buat berkas bernama gae.pth (atau terserah apa namanya asakan berakhiran .pth) di dalam directory ~/ngoprek/env/lib/python2.5/site-packages
  2. Berkas tersebut hanya berisi satu baris yaitu path lengkap dari Google AppEngine. Kalau di lingkungan saya akan tertulis:
    • /home/rahmad/google_appengine
    • Perhatikan ini harus path lengkap dan tidak boleh memakai ~ seperti: ~/google_appengine
  3. Buka berkas ngoprek/env/lib/python2.5/site.py
  4. Cari fungsi yang bernama main
  5. Pergi ke akhir fungsi main tersebut dan tambahkan dua baris berikut:
    • from dev_appserver import fix_sys_path
    • fix_sys_path()
  6. Uji apakah perubahan ini berhasil dengan:
    • Mengatifkan virtualenv
      • . env/bin/activate
    • Menjalankan program interpreter python
      • python
    • Dan eksekusi perintah-perintah berikut:
      • import yaml
      • from google import appengine
  7. Jika kedua perintah tersebut berhasil dijalankan tanpa kesalahan,  keluar dari python dan buka berkas: ~/google_appengine/google/appengine/tools/dev_appserver_import_hook.py
  8. Setelah perintah import sys (kira-kira baris ke-35) tambahkan kode berikut:
    • import cgi
  9. Kemudian di dalam berkas yang sama cari definisi untuk class yang bernama FakeFile
  10. Di dalam definisi class ini cari variabel yang bernama ALLOWED_DIRS
  11. Ubah definisi variable ini sehingga menjadi seperti berikut:
    • ALLOWED_DIRS = set([
    • os.path.normcase(os.path.realpath(os.path.dirname(os.__file__))),
    • os.path.normcase(os.path.abspath(os.path.dirname(os.__file__))),
    • os.path.normcase(os.path.dirname(os.path.realpath(os.__file__))),
    • os.path.normcase(os.path.dirname(os.path.abspath(os.__file__))),
    • # required when using virtualenv
    • # cgi is on system python folder /usr/lib/python2.5/cgi.py
    • # os is on virtualenv python folder '/path/to/virtualenv/lib/python2.5'])
    • os.path.normcase(os.path.realpath(os.path.dirname(cgi.__file__))),
    • os.path.normcase(os.path.abspath(os.path.dirname(cgi.__file__))),
    • os.path.normcase(os.path.dirname(os.path.realpath(cgi.__file__))),
    • os.path.normcase(os.path.dirname(os.path.abspath(cgi.__file__))),
    • ])
Ruwetnyalah Bug satu ini! Terus ini link untuk laporan bug ini, lihat-lihat apakah sudah diperbaiki! :p

Tuesday, November 15, 2011

Belajar Flask: Instalasi

Mari kita instalasi dan bermain/ngoprek dengan Flask. Sebagai catatan: langkah-langkah berikut dijalankan dengan memakai Ubuntu 11.10 (Oneiric Oncelot)
  1. Buat tempat khusus untuk tempat kita akan bermain/ngoprek
    • Dengan membuat directory yang katakanlah namanya cobaflask
    • mkdir cobaflask
    • Kemudian masuk ke directory tersebut
    • cd cobaflask
  2. Karena kita tidak ingin proses ngoprek ini mengganggu sistem kita yang lain maka kita akan membuat environment aman untuk kita bermain dengan memakai virtualenv. [Langkah ini dapat diabaikan jika anda tidak ingin memakai virtualenv.]
    • Untuk itu pertama sekali kita akan membuat subdirectory untuk menyimpan konfigurasi-konfigurasi yang diperlukan, katakanlah namanya env
    • mkdir env
    • Untuk ngoprek ini saya ingin memakai Python versi 2.7 dan kosong tanpa modul-modul lainnya yang sudah ada sebelumnya di komputer saya. Jadi perintahnya menjadi (dalam satu baris)
    • virtualenv -python=python2.7 --no-site-packages env
    • Perhatikan versi python ini sudah harus terinstalasi sebelumnya
    • Sekarang aktifkan environment ini dengan perintah (perhatikan ada spasi antara titik dan env)
    • . env/bin/activate
  3. Unduh dan install Flask dengan menjalankan perintah
  4. pip install Flask
    Perhatikan proses instalasi juga akan mengunduh dan menginstalasi modul-modul lain yang dibutuhkan seperti Werkzeug dan Jinja2.
  5. Untuk menguji apakah instalasi kita berhasil maka akan kita jalankan Flask secara manual
    • Petama jalankan interpreter Python dengan mengetik perintah
    • python
    • Jalankan kedua perintah Python berikut ini di dalam interpreter
    • import flask;
      flask.Flask(__name__).run()
      
  6. Perintah pertama akan memuat modul flask sedangkan perintah kedua akan menjalankan server Flask.
  7. Nantinya akan muncul pesan berikut yang menandakan server telah aktif
  8. Running on http://127.0.0.1:5000/
  9. Sekarang buka browser, ketik alamat http://127.0.0.1:5000, dan perhatikan bahwa browser akan menampilkan halaman Not Found yang artinya halaman yang kita minta tidak ada karena memang kita belum membuat halaman apapun. 
  10. Kembali perhatikan terminal dimana Flask dijalankan dan lihat telah muncul beberapa pesan seperti ini
  11. 127.0.0.1 - - [14/Nov/2011 11:25:53] "GET / HTTP/1.1" 404 -
    127.0.0.1 - - [14/Nov/2011 11:25:54] "GET /favicon.ico HTTP/1.1" 404 -
    
  12. Pesan-pesan ini menandakan bahwa Flask berhasil kita unduh dan instalasi, Flask dapat menerima perintah dari browser yang memintah halaman tertentu, tetapi Flask gagal melaksanakan permintaan tersebut karena memang kita belum membuat halaman apapun sehingga menampilkan pesan kesalahan tersebut!
  13. Untuk mematikan Flask, seperti biasanya, tekan kombinasi tombol Ctrl-C.
  14. Sedangkan untuk keluar dari interpreter Python ketikkan perintah perikut:
  15. quit()
Wah gampangnya! ;)

Kembali ke: Belajar Flask


Monday, November 14, 2011

Belajar Flask: Flask? Apaan sih ini?

Flask medeklarasikan dirinya sebagai microframework yang berbasis Python. Okey, ini apa maksudnya? Mari kita bedah:

  • Framework - dalam mengembangkan suatu aplikasi yang berbasis web biasanya sangat kompleks dan memerlukan keahlian dan mengetahui tentang berbagai aspek teknologi web, misalnya: harus mengerti HTML untuk bisa membuat halaman web, harus mengerti HTTP untuk bisa mengirim/menerima informasi di web, harus mengerti cara kerja web server untuk bisa menangani session/cookies/dll, harus mengerti database untuk bisa menyimpan data, dst. Untuk lebih memudahkan proses pengembangan aplikasi web maka hadirlah Application Framework, atau disingkat framework, yang pada dasarnya merupakan kerangka (=framework) agar si programmer bisa lebih mudah membuat aplikasi web. Beberapa framework yang populer sekarang: J2EE dan JBoss yang berbasis Java, Drupal yang berbasis PHP, Django dan Web2Py yang berbasis Python, dll.
  • Microframework - contoh-contoh framework yang diatas bisa diistilahkan sebagai framework yang lengkap (=full stack) dimana menyediakan kebanyakan fungsi yang dbutuhkan suatu aplikasi web: ada template engine untuk membangkitkan HTML, ada modul untuk menangani koneksi web, bisa dengan mudah dihubungkan dengan dan mengkofigurasi web server, pengelolaan session yang sangat baik, akses yang lumayan sederhana dari program ke database, dll. Tetapi masalahnya sekarang karena banyaknya komponen yang dimiliki framework-framework ini menjadikannya sangat besar, sulit untuk dipelajari,  dan jika hanya ingin memakai satu atau dua fungsionalitas kita tidak bisa memilihnya tetapi harus tetap memakai keseluruhan framework ini. Oleh karenya sekarang muncul konsep microframework yang merupakan framework tidak lengkap (=not full stack) dan sangat minimalis karena banyak fungsionalitas dengan sengaja tidak dimasukkan sehingga sangat mudah untuk dipelajari serta sangat cepat untuk membuat suatu aplikasi web. Beberapa contoh yang sudah bermunculan: Limonade yang berbasis PHP, Napalm yang berbasis Java, dan Flask yang berbasi Python.
  • Berbasis Python - ya karena microframework ini dibuat dengan Python dan diprogram dengan memakai bahasa Python. :)
Catatan pingir - sebenarnya sih istilah application framework bukan monopolinya aplikasi web tetapi bagi saya terkesan demikian karena lebih sering dipergunakan dalam konteks mengembangkan aplikasi web. Lihat artikel Wikipedia berikut: http://en.wikipedia.org/wiki/Application_framework

Kembali ke: Belajar Flask

virtualenv: Instalasi dan Konfigurasi

Saya sering sekali membangun beberapa aplikasi dalam kurun waktu yang sama. Masing-masing aplikasi memerlukan environment dengan konfigurasi-konfigurasi yang berbeda (misalnya perbedaan versi Python yang dipergunakan, jenis-jenis module yang dipakai, dll). Proses perpindahan dari satu environment ke environment yang lain kadang kala susah dan merepotkan (misalnya menggantikan versi Python yang dipakai, nonaktifkan/aktifkan modul-modul tertentu, dll). Di Python, untuk mempermudah proses perpindahan ini saya mempergunakan virtualenv.

Dasar instalasi dan pemakaiannya sbb:
  1. Instalasi aplikasi ini dengan cara membuka terminal dan jalankan perintah berikut dalam satu baris:
  2. sudo apt-get install python-virtualenv python-pip
  3. Perhatikan disini, saya juga ikut mengunduh aplikasi python-pip untuk mempermudah proses instalasi modul-modul Python lainnya jika dibutuhkan nantinya;
  4. Buatkan directory baru untuk environment yang akan dibangun, misalkan namanya aplikasiku
  5. mkdir aplikasiku
  6. Pindah ke directory yang baru dibuat
  7. cd aplikasiku
  8. Buat lagi sudirectory didalamnya untuk menampung semua berkas-berkas konfigurasi yang bakal dibutuhkan, misalkan namanya konf
  9. mkdir konf
  10. Perintahkan virtualenv untuk membuat environment baru dengan ketentuan berikut:
    • Tanpa mewarisi modul-modul Python yang sebelumnya telah ada pada komputer tersebut, dengan memakai opsi: --no-site-packages
    • Memakai python versi 2.5 (misalnya), dengan memakai opsi: --python=python2.5
      • Catatan: Versi Python tersebut harus sudah terinstalasi sebelumnya
    • Menyimpan  informasi untuk environment baru tersebut di subdirectory yang telah dibuat sebelumnya, dalam hal ini: konf
    • Makan perintahnya adalah
    virtualenv --python=python2.5 --no-site-packages konf
  11. Untuk mengaktifkan environment yang baru dibentuk, jalankan perintah berikut (perhatikan ada spasi antara titik dan konf)
  12. . konf/bin/activate
  13. Sekarang konfigurasi untuk environment tersebut akan aktif hanya di terminal ini.

PostgreSQL: Instalasi dan Konfigurasi

Berikut adalah langkah-langkah untuk instalasi dan konfigurasi PostgreSQL di Ubuntu ver 11.10 (Oneiric Ocelot).
  1. Kita akan menginstalasi aplikasi-aplikasi berikut: 
    • postgresql => server PostgreSQL
    • postgresql-doc => dokumentasi
    • postgresql-client => aplikasi client untuk mengakses server
    • pgadmin3 => GUI untuk adminitrasi server
  2. Buka terminal dan jalankan perintah berikut dalam satu baris:
    • sudo apt-get install postgresql postgresql-doc postgresql-client pgadmin3
    • Setelah proses instalasi selesai, apt-get akan secara otomatis menjalankan server di mesin anda.
    • Proses instalasi akan membuat satu akun baru di Ubuntu khusus untuk menjalankan server PostgresSQL yang  bernama postgres.
    • Disamping itu, proses instalasi juga akan membuatkan satu akun yang bertindak sebagai database administrator dan aku ini juga bernama postgres. Perhatikan, akun ini belum memiliki password oleh karenanya harus segera diberikan password. 
      • Jalankan program psql sebagai user Ubuntu postgres (sudo -u postgres) dan login ke database dengan akun  database administrator (psql postgress)
      • sudo -u postgres psql postgres
      • Jalan perintah untuk mengubah password untuk akun postgres 
      • \password postgres
      • Setelah memberikan password baru, akhiri program psql
      \q
    • INGAT: proses instalasi akan membuat dua akun dengan nama postgress: satu di Ubuntu yang akan menjalan database server dan satu di dalam database yang bertindak sebagai database adminsitrator.
    • Proses instalasi akan mengatur agar server dijalankan secara otomatis saat komputer dijalankan. Jika anda tidak menginginkan server dijalankan secara otomatis maka jalankan perintah b
    • sudo update-rc.d mysql remove
      • Nantinya, untuk menghidupkan server secara manual, jalankan perintah berikut:
      sudo /etc/init.d/postgresql start
      • Sedangkan untuk mematikan server secara manual, jalankan perintah berikut:
      sudo /etc/init.d/postgresql stop
    • Untuk membuat database baru jalankan perintah createdb tetapi dengan akun postgres. Misalnya untuk membuat database bernama dbku jalankan perintah berikut:
    • sudo -u postgres createdb dbku
    • Untuk menghapus suatu database jalankan perintah dropdb memakai akun postgres. Misalnya untuk menghapus database bernama dbku jalankan perintah berikut:
    • sudo -u postgres dropdb dbku