Optimizing Web Server (Lighttpd)

Berawal dari rasa penasaran kok situs penyedia film 300mbunited.com cepet banget loading tiap page-nya, saya pun akhirnya.. jadi iri hehe.

Saya lihat di source page ternyata situs itu berbasiskan WordPress dan menggunakan plugin W3 Total Cache. Pengalaman saya menggunakan plugin itu sih justru bikin blog saya makin lambat kurang lebih 1-3 detik.

Lalu saya mencari cara lain kira-kira apa yang bisa dilakukan untuk mempercepat loading page, dan ini dia yang saya lakukan;

HTTP Keep-Alive
Dengan mengaktifkan keep-alive akan membuat web server terasa lebih responsif dan menurunkan beban CPU, karena client dan server tidak perlu terus-terusan melakukan SYN / ACK dan menunggu respon. Tapi sebaiknya gunakan nilai time out / idle yang rendah agar tidak menghabiskan resource memory. Pada Lighttpd (/etc/lighttpd/lighttpd.conf) konfigurasinya seperti ini;

server.max-keep-alive-requests = 16
server.max-keep-alive-idle = 30
server.max-read-idle = 60
server.max-write-idle = 360

Install eAccelerator
eAccelerator adalah PHP accelerator – optimizer opensource dan gratis. Dengan menggunakan eAccelerator maka PHP scripts akan di-cache dalam keadaan sudah terkompilasi (HTML), sehingga proses kompilasi script PHP yang memakan waktu tidak perlu lagi dialami oleh client (browser). eAccelerator juga mengoptimasi scripts untuk mempercepat proses eksekusinya. Pada umumnya dengan menggunakan metode ini server load akan berkurang dan mempercepat PHP scripts 1 sampai 10 kali lipat. Release terakhir adalah versi 0.9.6.1 yang mendukung PHP 5.3, 5.2, dan 5.1. Cara instalasinya sebagai berikut;

apt-get update && apt-get upgrade && apt-get install php5-dev

Sekarang download eAccelerator di situsnya http://eaccelerator.net/ (atau dari blog saya ini, karena situs resminya sering down) dan install dengan cara;

cd /usr/src wget https://ariw.net/files/eaccelerator-0.9.6.1.zip
unzip eaccelerator-0.9.6.1.zip
cd eaccelerator-0.9.6.1 phpize
./configure make make install

Berikutnya kita integrasikan eAccelerator dengan PHP5. Pada Debian Squeeze (seharusnya pada versi Debian lainnya pun sama) konfigurasi untuk modul PHP terletak di direktori /etc/php5/conf.d/

Buat eaccelerator.ini file;

cd /etc/php5/conf.d/ touch eaccelerator.ini

dan isikan parameter-parameter berikut di dalamnya;

extension="eaccelerator.so"
eaccelerator.shmsize="16"
eaccelerator.cachedir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.checkmtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shmmax="0"
eaccelerator.shmttl="0"
eaccelerator.shmpruneperiod="0"
eaccelerator.shmonly="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

sekarang buat direktori /var/cache/eaccelerator dan setting supaya writeable;

mkdir /var/cache/eaccelerator chmod 777 /var/cache/eaccelerator

langkah terakhir adalah restart webserver;

/etc/init.d/lighttpd restart

Kita bisa mengecek apakah eAccelerator sudah terintegrasi atau belum dengan execute perintah;

php -v

dan jika eAccelerator sudah berjalan dengan sempurna, hasilnya kurang lebih akan seperti ini;

PHP 5.3.3-7+squeeze1 with Suhosin-Patch (cli) (built: Mar 18 2011 17:22:52) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator

Virtual Host Pada LIGHTTPD

Seperti yang sudah saya jelaskan di post sebelumnya, salah satu alasan saya menyenangi Lighttpd (dibaca “Lighty”) web server adalah kemudahannya dalam mengkonfigurasi virtual host. Secara garis besar, kita hanya perlu melakukan satu kali konfigurasi pada sebuah file dan selanjutnya untuk menambah virtual host cukup membuat direktori yang nantinya akan digunakan sebagai document-root virtual host tersebut. Langkah detailnya akan saya jelaskan di bawah ;)Pertama, edit file lighttpd.conf dan pastikan “modsimplevhost” telah di-uncomment dalam variabel server.modules:

server.modules = ( "modsimplevhost", "modaccess", "modaccesslog" )

Berikutnya buka file “/etc/lighttpd/conf-enabled/10-simple-vhost.conf” dan edit sesuai kebutuhan, contoh:

simple-vhost.server-root = "/var/www/vhosts/" simple-vhost.default-host = "default.vhost.com" simple-vhost.document-root = "/"

Ketika Lighttpd menerima request untuk suatu website / virtual host (misal koole.com), maka Lighty akan mengecek apakah direktori simple-vhost.server-root + ‘koole.com’ + simple-vhost.document-root ada atau tidak. Jika ada (yaitu misal “/var/www/vhosts/koole.com/”) maka halaman web dalam direktori tersebut akan ditampilkan.

Direktif “simple-vhost.default-host” adalah untuk mendefinisikan virtual host / folder apa yang akan ditampilkan jika virtual host yang diminta tidak ada. Semisal jika ada request domain andi.com dan ternyata domain tersebut tidak terdaftar pada server, maka isi dari direktori /var/www/vhosts/default.vhost.com yang akan ditampilkan.

Untuk menambahkan situs / virtual host baru, kita cukup membuat direktori di bawah simple-vhost.server-root (misal /var/www/vhost):

/var/www/vhosts/jaka.com/ /var/www/vhosts/budi.com/ /var/www/vhosts/danang.com/

dan seterusnya..

Gimana, sudah mengerti belum? Awalnya saya juga sempat bingung dengan konsepnya, tapi setelah dipraktekkan ternyata simpel sekali 😉

Install Lighttpd Dengan PHP5 Dan MySQL Pada Debian 6 (Squeeze)

Merasa bosan dengan Apache, akhirnya saya memutuskan untuk menggunakan Lighttpd sebagai web server di blog ini. Yep, sekarang saya udah ngga menggunakan shared hosting lagi, tapi Virtual Private Server (VPS) yang menggunakan Debian sebagai sistem operasinya.

Lighttpd saya rasakan memang lebih ringan, ngga menghabiskan banyak memory seperti Apache. Dan satu fitur yang paling saya sukai adalah mod-simple-vhost yang memudahkan kita untuk menambah virtual host atau domain. Tapi itu nanti aja akan saya bahas di posting berikutnya 😉

Install MySQL 5
Pertama kita menginstall MySQL 5 dengan cara seperti ini;

apt-get install mysql-server

Kita akan diminta memasukkan password root MySQL – password yang digunakan untuk user root@localhost.

Install Lighttpd
Karena Lighttpd udah tersedia di repo Debian, jadi kita bisa install dengan apt-get;

apt-get install lighttpd

Sekarang coba gunakan browser untuk mengakses server, misal dengan alamat http://192.168.0.100 dan harusnya akan tampil halaman placeholder.

Default document root Lighttpd untuk Debian adalah /var/www, dan file konfigurasinya ada di /etc/lighttpd/lighttpd.conf. File konfigurasi tambahan ada di direktori /et/lighttpd/conf-available. File konfigurasi tersebut dapat diaktifkan dengan menggunakan perintah lighttpd-enable-mod, yang akan membuat smbolic link dari /etc/lighttpd/conf-available ke /etc/lighttpd/conf-enabled.

Install PHP5 PHP5 di Debian menggunakan FastCGI dan diinstall dengan cara berikut;

apt-get install php5-cgi

Mengkonfigurasi Lighttpd dan PHP5 Untuk mengaktifkan PHP5 pada Lighttpd, kita harus mengedit file /etc/php5/cgi/php5.ini dan uncomment pada baris cgi.fix_pathinfo=1;

vi /etc/php5/cgi/php.ini
; cgi.fixpathinfo provides *real* PATHINFO/PATHTRANSLATED support for CGI. PHP's ; previous behaviour was to set PATHTRANSLATED to SCRIPTFILENAME, and to not grok ; what PATHINFO is. For more information on PATHINFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPTFILENAME rather than PATHTRANSLATED. ; http://php.net/cgi.fix-pathinfo
cgi.fixpathinfo=1

Lalu aktifkan konfigurasi fastcgi dengan menggunakan perintah berikut;

lighttpd-enable-mod fastcgi lighttpd-enable-mod fastcgi-php

Perintah ini membuat symlink /etc/lighttpd/conf-enabled/10-fastcgi.conf yang mengarah ke /etc/lighttpd/conf-available/10-fastcgi.conf

ls -l /etc/lighttpd/conf-enabled
total 0
lrwxrwxrwx 1 root root 33 Feb 17 18:02 10-fastcgi.conf -> ../conf-available/10-fastcgi.conf
lrwxrwxrwx 1 root root 37 Feb 17 18:04 15-fastcgi-php.conf -> ../conf-available/15-fastcgi-php.conf

Test Instalasi PHP5 Sekarang saatnya mengetes instalasi Lighttpd + PHP5. Document root default nya ada di /var/www. Kita akan coba membuat sebuah halaman php (phpinfo.php) yang menampilkan seluruh detail tentang konfigurasi PHP5 di server, misalnya versi PHP5 yang terinstall atau letak direktori document root.

vi /var/www/phpinfo.php

Lalu coba akses menggunakan browser, misal http://192.168.0.100/phpinfo.php

MySQL dan PHP5
Untuk mengaktifkan support MySQL pada PHP kita cukup menginstall paket php5-mysql

apt-get install php5-mysql

Atau bisa juga menginstall beberapa modul PHP lainnya sekaligus untuk dukungan aplikasi web yang lebih lengkap, tapi sebenarnya ngga saya anjurkan karena nantinya Lighttpd akan mengkonsumsi lebih banyak memory

apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Jika udah selesai proses instalasinya, sekarang refresh halaman http://192.168.0.100/phpinfo.php dan arahkan ke bagian modules di bawah. Harusnya akan terlihat detail tentang modul MySQL