Dec13

Tidak dipungkiri memilih suatu Sistem Operasi, menginstallnya lalu mempelajarinya adalah suatu proses yang menyenangkan, saya pribadi memilih OS sebisa mungkin memilih berdasarkan kebutuhan, tetapi tidak dipungkiri juga sebagai manusia saya kadang memilih OS berdasarkan subjektifitas semata, benci atau suka terhadap Sistem Operasi tertentu tanpa berdasarkan alasan yang logis, seperti ketidaksukaan saya terhadap Distro Linux turunan Debian, ya dulu memang saya punya pengalaman jelek terhadap distro ubuntu, kalau tidak salah waktu zamannya Ubuntu Breezy Badger dimana waktu itu saya punya pengalaman kesulitan dalam menginstall (baca : compile) agar support mp3 dan gagal, karena Trauma sampai sekarang saya tidak pernah lagi mencoba menginstall ubuntu, padahal yang saya ketahui dari berbagai artikel di internet, Ubuntu terbaru (Karmic Koala) sudah sangat user-friendly, tetapi tetap saja hal itu tidak membuat saya tertarik… haha aneh memang saya ini

Di atas adalah sekilas dualisme motivasi saya dalam memilih Sistem Operasi, dan dibawah ini saya ingin berbagi, apa Sistem Operasi favorit saya saat ini dan mengapa saya menggunakannya

1. Linux CentOS 5 - Production Server

Reliable, mungkin itulah kata-kata yang tepat mengapa CentOS menjadi pilihan saya untuk menangani Production Server, dibanding Distro Lain (misalnya Fedora), CentOS mungkin kurang “bleeding-edge” a.k.a up to date dibandingkan Fedora, tetapi karena kurang up to date itulah kelebihan CentOS, distro yang bleeding-edge mempunyai satu kekurangan, karena cepatnya rilis cycle suatu paket, terkadang mengorbankan sisi testing, ada beberapa bagian yang luput dari test, sehingga jika kita memakainya bisa menyebabkan crash system, pada Fedora saya pernah mengalami ini, sedangkan di CentOS update pake relatif jarang, mengapa ?, karena paket yang dirilis harus ditest secara menyeluruh dan harus benar-benar stabil, tidak sekadar “bleeding-edge” saja

2. Linux Fedora 10 “Cambridge” - Personal Server/Desktop

Saya menggunakan Fedora untuk 2 kebutuhan yaitu kebutuhan Server Pribadi dan juga untuk OS di desktop, server pribadi saya gunakan untuk belajar, untuk otak-atik kalo perlu sampai kacau balau, dan kalau sudah kacau saya ingin kembali ke keadaan semula saya bisa reinstallnya dengan mudah (di production server tentu saja saya nggak bisa melakukan ini, gila namanya kalau itu dilakukan ^_^) , Fedora juga sering saya gunakan untuk proxy pribadi, kebetulan kalau sedang pake Fren Mobi terkadang ada beberapa website yang terblok, dengan adanya proxy pribadi ini tentu saja saya terbantu untuk mengakses situs yang terblok tersebut.

3. Mac OSX 10.5 “Leopard” - Mobile Computing + Coding

Powerful dan Secure, itulah yang saya rasakan ketika menggunakan Mac OSX untuk bekerja, buat saya boleh dibilang Mac OSX adalah perpaduan antara Secure-nya *nix dengan kemudahan MS Windows, selain itu tentu saja saya juga jatuh cinta kepada Mac OSX karena desainnya yang cantik, bukan hanya di luar, tetapi di dalam OS ini benar-benar intuitif, ada banyak fungsi-fungsi yang ditempuh hanya dengan sedikit klik, selain itu hanya Textmate yang ada di MacOSX, textmate ini adalah software andalan saya untuk bekerja, karena saya merasa dengan menggunakan textmate produktivitas saya lebih bagus ketimbang pake IDE lain (netbeans atau scite)

4. MS Windows XP SP2 - Entertainment

Sebetulnya di antara keluarga windows, Windows 98 SE adalah favorit saya, desainnya lebih cantik dan juga di zamannya sangat powerful, boleh dibilang bagi saya tidak ada yang menandingi Windows 98 SE pada waktu itu. Namun pada saat sekarang tentu saja bagi saya hampir mustahil untuk menggunakan Windows 98 SE, apalagi mengingat aktivitas saya di Windows biasanya untuk hiburan, bermain game2 terbaru ataupun memutar Film Blu-ray, Windows 98 SE tentu saja tidak bisa melakukan hal itu. Nah oleh karena itu pilihan jatuh terhadap Windows XP, lebih ringan dari Vista dan lebih cocok untuk hiburan ketimbang Windows 98 SE. tetapi walaupun begitu, dalam waktu dekat sepertinya saya akan mempensiunkan Windows XP, OS Microsoft yang terbaru Windows 7 tampak menjanjikan, banyak review yang bilang Windows ini lebih ringan dari Vista, dan saya tidak akan muluk-muluk menginstall Windows 7 versi ultimate, saya kira saya berencana menginstall Windows 7 Home Basic saja, saya tidak suka efek Aero di versi ultimate, bagi saya memory yang dialokasikan buat Aero bisa dihemat dan dipergunakan apabila saya sedang maen game

Terakhir, ini masih rencana, saya masih ingin membangun sebuah barebone PC untuk kebutuhan multimedia storage server di rumah, PC 2nd low-end dengan Harddisk besar mungkin 2 - 4 Tera, tempat untuk menyimpan koleksi Film Blu-ray, DVD, MP3, Master Game dan juga sebagai Backup file2 penting, saya masih bingung OS apa yang cocok untuk storage server kecil-kecilan, sejauh ini saya tertarik terhadap OpenFiler Linux atau Fedora 12 versi LXDE, tetapi walaupun begitu saya masih mencari alternatif lainnya, nah kawan mungkin ada yang bisa ngasih saran ?

Jan08

Bagi anda pecinta Fedora, mungkin telah mengetahui bahwa Fedora 10 telah mengikutsertakan Amarok yang terbaru, yaitu versi 2, namun sayangnya menurut pengalaman saya, Amarok 2 ini banyak kekuranganya, GUI -nya sama sekali baru dan celakanya sangat tidak user friendly, layoutnya juga sangat jelek, alhasil saya kesulitan mengoperasikannya

Sejak kenal fedora (dari versi 6), saya selalu memakai amarok untuk memainkan musik, fiturnya cukup lengkap dan yang paling saya suka adalah fitur liriknya, namun karena terlanjur kecewa, akhirnya saya pindah ke software pemutar musik lain, saya pun mencoba Audacious dan Rythimbox, namun setelah beberapa hari mencoba, saya tetap kurang puas dan sempat punya pemikiran untuk downgrade Fedoranya ke versi 9 yang ada Amarok 1.4, namun ditengah-tengah hal tersebut, saya tiba-tiba ingat, kenapa gak coba saja tanya ke canmasagi yang boleh dikatakan beliau adalah seorang Master Fedora, setelah chit-chat sana-sini beliau juga ternyata nggak suka dengan Amarok 2 dan menyarankan saya untuk downgrade amarok ke versi 1.4

Berdasarkan “petuah” darinya, beginilah langkah-langkah untuk downgrade Amarok 2.0 ke versi 1.4

Hapus amarok 2

sudo yum remove amarok -y

Download paket RPM Amarok 1.4 beserta extrasnya

wget http://argsoft.net/rpms/amarok-1.4.10-1.fc10.i386.rpm
wget http://argsoft.net/rpms/amarok-visualisation-1.4.10-1.fc10.i386.rpm
wget http://argsoft.net/rpms/amarok-extras-freeworld-1.4.10-1.fc10.noarch.rpm

install paket tersebut satu per satu dengan menggunakan perintah sudo rpm -ivh

sudo rpm -ivh amarok-1.4.10-1.fc10.i386.rpm
sudo rpm -ivh amarok-visualisation-1.4.10-1.fc10.i386.rpm
sudo rpm -ivh amarok-extras-freeworld-1.4.10-1.fc10.noarch.rpm

Sebagai catatan terkadang melakukan install rpm tidak berjalan dengan mulus, seperti rpm meminta dependency dari paket lain, jika itu terjadi silahkan install paket dependency itu dengan menggunakan yum install

Jika ketiga RPM telah terinstall dengan sukses tanpa masalah, maka anda bisa menyalakan Amarok 1.4, silahkan klik KickStart –> Applications –> Multimedia –> Amarok

Dan sebagai tambahan, supaya Yum atau PackageKit tidak melakukan update terhadap Amarok 1.4, anda bisa “mengacuhkannya” dari daftar Yum, silahkan buka /etc/yum.conf menggunakan editor kesayangan anda, lalu tambahkan baris sebagai berikut

exclude=amarok

Silahkan save file tersebut dan keluar dari editor anda, so niscaya YUM akan mengacuhkan amarok sehingga tidak termasuk dalam daftar paket yang perlu di-update

Note :
Terima kasih buat canmasagi atas panduannya

Oct27

Nginx (baca : Engine-X) adalah web server buatan Igor Sysoev, seorang Rusia, digunakan sebagai alternatif dari Apache Web Server, salah satu keunggulan yang menarik dari nginx adalah, nginx relatif lebih kecil dalam memakan resource memory ketimbang Apache, nginx juga sangat cepat dalam menangani file statis (javascript, html, image , css file). Di dunia Rails, nginx seringkali digunakan dalam mode production sebagai Frontend Web Server/Load Balancer

Di artikel ini saya akan mencoba menuliskan bagaimana cara untuk mengcompile,menginstall, mengkonfigurasi dan menjadikan nginx sbg web server untuk Aplikasi Ruby on Rails yang sudah support dengan SSL di Fedora 9/CentOS 5

Install SSL dan PCRE

yum install pcre pcre-devel openssl openssl-devel

Download nginx 0.6.2 (versi Stable terakhir)

wget http://sysoev.ru/nginx/nginx-0.6.32.tar.gz

Ekstrak, konfigurasi, compile lalu install

tar -xzf nginx-0.6.32.tar.gz
cd nginx-0.6.32
./configure –with-http_ssl_module –with-http_dav_module
make
sudo make install

setelah itu kita perlu generate SSL key, supaya situs kita support protokol https

openssl genrsa -des3 -out server.key 1024 #akan menghasilkan server.key

command di atas akan menanyakan passphrase, jangan lupa untuk mengingat passphrase ini

openssl req -new -key server.key -out server.csr

comand tsb akan akan menghasilkan server.csr dengan sebelumnya menanyakan bbrp pertanyaan spt ini

Country Name (2 letter code) [GB]:IN
State or Province Name (full name) [Berkshire]:Cihanjuang
Locality Name (eg, city) [Newbury]:Bandung
Organization Name (eg, company) [My Company Ltd]:Prawirasoft
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server’s hostname) []:Prawirasoft.com
Email Address []:contoh@contoh.com

lalu terakhir, generate file crt

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

copy ketiga file di atas ke direktori tempat konfigurasi nginx berada

sudo cp server* /usr/local/nginx/conf/

setelah itu kita mesti konfigurasi beberapa setting nginx, di bawah ini adalah konfigurasi umum bagaimana nginx yang support ssl bekerja, referensi dasar berasal dari konfigurasi yang dibuat oleh akang Ezra Zygmuntowicz

Buka file /usr/local/nginx/conf/nginx.conf dengan editor kesayangan anda sebagai super user/sudoers, lalu masukan konfigurasi dibawah ini lalu save (sebaiknya melakukan backup terlebih dahulu)

#user  nobody;
worker_processes  2; #jumlah nginx instance
	
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
	
#pid        logs/nginx.pid;
	
events {
    worker_connections  1024;
}
	
http {
    include       mime.types;
    default_type  application/octet-stream;
	
    #log_format  main  '$remote_addr - $remote_user [$time_local] $request '
    #                  '\"$status\" $body_bytes_sent \"$http_referer\" '
    #                  '\"$http_user_agent\" \"$http_x_forwarded_for\"';
	
    #access_log  logs/access.log  main;
	
    sendfile        on;
	
    #keepalive_timeout  0;
    keepalive_timeout  65;
	
   # These are good default values.
    tcp_nopush        on;
    tcp_nodelay       off;
	
    # output compression saves bandwidth
    gzip            on;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types      text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
	
    # this is where you define your mongrel clusters.
    # you need one of these blocks for each cluster
    # and each one needs its own name to refer to it later.
    upstream thin {
      server 127.0.0.1:3001; #port di mana server backend anda running, bisa lebih dari satu server+port, bisa memakai thin atau mongrel web server
    }
	
    # the server directive is nginx's virtual host directive.
    server {
      # port to listen on. Can also be set to an IP:PORT
      listen 80;
	
      # Set the max size for file uploads to 50Mb
      client_max_body_size 50M;
	
      # sets the domain[s] that this vhost server requests for
      server_name prawirasoft.com www.prawirasoft.com; #nama domain anda, ubah sesuai dengan kebutuhan
	
      # doc root
      root /home/aditya/webapp/prawirasoft/trunk/public; #public RAILS_ROOT, direktory public di mana file2 statis aplikasi rails berada
	
      # vhost specific access log
      access_log  /var/log/nginx.vhost.access.log ;
	
     # this rewrites all the requests to the maintenance.html
     # page if it exists in the doc root. This is for capistrano's
     # disable web task
     if (-f $document_root/system/maintenance.html) {
       rewrite  ^(.*)$  /system/maintenance.html last;
       break;
     }
	
     location / {
       # needed to forward user's IP address to rails
       proxy_set_header  X-Real-IP  $remote_addr;
	
       # needed for HTTPS
       proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header Host $http_host;
       proxy_redirect false;
       proxy_max_temp_file_size 0;
	
       # If the file exists as a static file serve it directly without
       # running all the other rewite tests on it
       if (-f $request_filename) {
         break;
       }
	
       # check for index.html for directory index
       # if its there on the filesystem then rewite
       # the url to add /index.html to the end of it
       # and then break to send it to the next config rules.
       if (-f $request_filename/index.html) {
         rewrite (.*) $1/index.html break;
       }
	
      # this is the meat of the rails page caching config
      # it adds .html to the end of the url and then checks
      # the filesystem for that file. If it exists, then we
      # rewite the url to have explicit .html on the end
      # and then send it on its way to the next config rule.
      # if there is no file on the fs then it sets all the
      # necessary headers and proxies to our upstream mongrels
      if (-f $request_filename.html) {
        rewrite (.*) $1.html break;
      }
	
      if (!-f $request_filename) {
        proxy_pass http://thin;
        break;
      }
    }
	
      error_page   500 502 503 504  /500.html;
      location = /500.html {
        root   /home/aditya/webapp/prawirasoft/trunk/public; #public RAILS_ROOT, direktory public di mana file2 statis aplikasi rails berada
      }
    }
	
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
	
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
	
    # HTTPS server
    #
      # This server is setup for ssl. Uncomment if
  # you are using ssl as well as port 80.
  server {
    # port to listen on. Can also be set to an IP:PORT
    listen 443;
	
    # Set the max size for file uploads to 50Mb
    client_max_body_size 50M;
	
    # sets the domain[s] that this vhost server requests for
    server_name prawirasoft.com www.prawirasoft.com; ## nama host, ubah sesuai kebutuhan
	
    # doc root
    root /home/aditya/webapp/prawirasoft/trunk/public; #public RAILS_ROOT, direktory public di mana file2 statis aplikasi rails berada
	
    ssl on;
	
    # path to ssl cert
    ssl_certificate server.crt;
    # path to ssl key
    ssl_certificate_key server.key;
	
    # vhost specific access log
    # access_log  /var/log/nginx.vhost.access.log  main;
	
    # this rewrites all the requests to the maintenance.html
    # page if it exists in the doc root. This is for capistrano's
    # disable web task
    if (-f $document_root/system/maintenance.html) {
      rewrite  ^(.*)$  /system/maintenance.html last;
      break;
    }
	
    location / {
      # needed to forward user's IP address to rails
      proxy_set_header  X-Real-IP  $remote_addr;
	
      # needed for HTTPS
      proxy_set_header X_FORWARDED_PROTO https;
	
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect false;
      proxy_max_temp_file_size 0;
	
      # If the file exists as a static file serve it directly without
      # running all the other rewite tests on it
      if (-f $request_filename) {
        break;
      }
	
      # check for index.html for directory index
      # if its there on the filesystem then rewite
      # the url to add /index.html to the end of it
      # and then break to send it to the next config rules.
      if (-f $request_filename/index.html) {
        rewrite (.*) $1/index.html break;
      }
	
      # this is the meat of the rails page caching config
      # it adds .html to the end of the url and then checks
      # the filesystem for that file. If it exists, then we
      # rewite the url to have explicit .html on the end
      # and then send it on its way to the next config rule.
      # if there is no file on the fs then it sets all the
      # necessary headers and proxies to our upstream mongrels
      if (-f $request_filename.html) {
        rewrite (.*) $1.html break;
      }
	
      if (!-f $request_filename) {
        proxy_pass http://thin;
        break;
      }
    }
	
    error_page   500 502 503 504  /500.html;
    location = /500.html {
      root   /home/aditya/webapp/prawirasoft/trunk/public;
    }
  }
	
}

setelah itu pastikan port 80,445 dan 3001 kosong, port 80 dan 445 biasanya dipakai oleh web server apache, oleh karena itu sebaiknya matikan apache-nya dulu, (atau kalou mau, pastikan apachenya ganti port - tapi kalo saya, melakukan hal ini lum pernah berhasil he he)

matikan apache

sudo /sbin/service httpd stop

setelah itu test apakah konfigurasi nginx-nya sudah benar

sudo /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

konfigurasi yang benar akan memunculkan pesan seperti ini

Enter PEM pass phrase:
2008/10/27 01:07:33 [info] 14294#0: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
2008/10/27 01:07:33 [info] 14294#0: the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully

setelah itu, silahkan nyalakan nginx-nya

sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

lalu, yang terakhir, nyalakan backend servernya di port 3001 (saya memakai thin), masuk ke direktory RAILS_ROOT, dalam kasus saya berada terletak di /home/aditya/webapp/prawirasoft/trunk/ lalu ketik

thin start -p 3001 -d

lebih lanjut tentang thin bisa dilihat juga di sini

tunggu selama 10-20 detik supaya thin selesai loading, lalu buka browser dan masukan url host yang tadi telah dimasukan ke file konfogurasi nginx, dalam kasus saya ke http://www.prawirasoft.com atau https://www.prawirasoft.com