Wednesday, October 19, 2011

Konfigurasi Apache Web Server

Dasar Teori
Pada beberapa tahun yang lalu dan sampai sekarang ini, Apache masih menjadi program web server yang paling banyak digunakan di dunia. Selain digunakan hampir 50% web server di dunia, Apache juga mampu mengalahkan program web server lainnya seperti Microsoft dengan IIS nya dan Netscape dengan  Netscape Netcenter nya. Dan Apache merupakan program web server yang menjadi bawaan dari hampir semua varian  distribusi Linux.
Sistem yang dibutuhkan
Apache dapat berjalan di semua distribusi Linux, sedangkan untuk performansinya yang terbaik perlu diperhatikan beberapa hal sebagi berikut:
1.      ANSI C Compiler
Semua program under UNIX/Linux merupakan source code yang berbahasa C sehingga untuk mengkompilasi program Apache, maka diperlukan C Compiler. GNU C Compiler (GCC) adalah C Compiler yang juga bawaan dari semua distro Linux. GCC diperlukan saat proses installasi Apache yang berbentuk source code (binary code) akan tetapi GCC tidak diperlukan jika paket Apache berbentuk RPM.
2.      Ruang Harddisk yang Memadai
Apache akan berjalan baik dengan ruang harddisk minimal 12 MB, kecil memang akan tetapi justru yang lebih diperhatikan lagi adalah saat penyimpanan log file dari Apache, terutama jika web server anda termasuk web server yang sangat sibuk, misal melayani ratusan ribut hit setiap harinya. Artinya jika demikian web server anda akan membutuhkan puluhan megabyte setiap hari, akan tetapi hal ini bisa diatasi dengan melakukan penghapusan log file secara berkala.
3.      RAM yang Memadai
Bagian yang tidak kalah penting untuk diperhatikan adalah kapasitas RAM yang memadai, karena Apache berjalan dengan menyediakan “child process” yaitu menyediakan beberapa daemond httpd sekaligus untuk melayani pengunjung. Oleh karena itu RAM yang dibutuhkan adalah jumlah maksimum httpd yang disediakan dikalikan dengan jumlah RAM yang dibutuhkan oleh masing-masing proses httpd tersebut.
Misalnya anda menset MaxSpareServer sebanyak 10 pada konfigurasi httpd.conf maka konfigurasi init artinya anda menyediakan maksimum 10 httpd daemons untuk melayani masing-masing pengunjung ke web server anda. Jadi jika rata-rata setiap httpd daemons membutuhkan 1.5 MB RAM, maka anda membutuhkan minimal 15 MB RAM yang dipakai oleh Apache saja, belum lagi yang dibutuhkan oleh system dan daemons lainnya. Jadi untuk kondisi demikian sebaiknya menyediakan 64 MB RAM pada server anda tersebut.
Sebagai gambaran, ada perusahaan portal di Indonesia yang sudah sangat terkenal dan menggunakan Linux sebagai system operasi web servernya, dan perusahaan portal tersebut menggunakan mod_perl pada Apachenya. Mereka menyediakan RAM sebesar 1 Gigabyte untuk melayani sekitar 200 ribut hit setiap hari pada web servernya.

Instalasi Apache
Paket Apache umumnya sudah ada di CD distro Linux yang ada, jadi anda tidak perlu mendownload dari internet, akan tetapi untuk mendapat versi terbarunya cara download menjadi alternatif yang murah. Paket Apache biasanya ada di http://www.apache.org atau anda bisa mencarinya di http://www.rpmfind.net dan http://www.freshmeat.net . Paket standard yang diperlukan untuk menginstal Apache adalah apache-1.4.21-1.i386.rpm , apache-devel-1.4.21-1.i386rpm , apache-manual-1.4.21-1.i386.rpm. Paket-paket tersebut terdiri dari paket Apache itu sendiri, paket pengembangan (develop), dan paket manual yang dalam contoh diatas untuk distro RedHat karena memakai kernel i386.
Berikut caranya untuk menginstal paket Apache yang berbentuk RPM
a.       Masuk ke direktori yang terdapat paket Apache yang akan diinstall
#cd /mnt/cdrom/RedHat/RPMS        (asumsi jika paket apache ada di cd installasi RedHat)
b.      Melakukan kompiling paket
#rpm –ivh apache-1.4.21-1.i386.rpm
#rpm –ivh apache-devel-1.4.21-1.i386.rpm
#rpm –ivh apache-manual-1.4.21-1.i386.rpm
Setelah semua paket terinstall maka langkah selanjutnya adalah mengkonfigurasi Apache pada file “httpd.conf” yang biasanya terletak di /etc/httpd/conf/httpd.conf untuk semua distro. Ingat!!! Apache hanyalah web server, jadi kalau anda ingin membuat web server dengan berbagai kecanggihan yang dimilikinya, maka anda perlu untuk mengkombinasikannnya degan web aplikasi yang anda butuhkan misalnya, PHP, Cold Fusion, Perl, atau bahkan anda bisa mendampingkannya dengan Tomcat Web Server untuk aplikasi java berbasis web.
Virtual Website
Virtual Website sangat dibutuhkan jika anda memiliki banyak domain Internet dan anda ingin memiliki alamat web yang spesifik untuk masing-masing domain, sedangkan anda hanya memiliki sebuah webserver.
Dengan Virtual Website, masalah tersebut dapat dipecahkan dengan mudah oleh Apache webserver. Anda tinggal mengkonfigurasi VirtualHost pada file konfigurasi Apache. Virtual Website sebenarnya terdiri atas dua tipe yaitu IP-based-Virtual Website dan Name-based-Virtual Website.
IP-based-Virtual Website adalah virtual website yang menggunakan banyak IP Address. Maksudnya setiap domain anda beri IP Address yang berbeda, walupun semua IP Address tersebut sebenarnya menuju ke sebuah webserver, karena pada webserver tersebut telah anda jalankan IP Alias.
Name-based-Virtual Website adalah virtual website yang hanya menggunakan sebuah IP Address tetapi dikonfigurasi untuk dapat melayani alamat web yang ditujukan untuk domain-domain ataupun hostname yang berbeda. Name-based-Virtual Website saat ini lebih banyak digunakan karena persediaan IP Address yang terbatas.
Tetapi yang perlu diingat dalam menjalankan IP-based-Virtual Website dan Name-based-Virtual Website adalah anda telah menset dengan benar IN A dan IN CNAME records pada zona file DNS Server anda.

Peralatan
1.      Sebuah PC Server dengan Apache Web Server yang sudah terinstall.
2.      PC client yang terhubung dengan PC Server via LAN.

Langkah Percobaan
1.      Login sebagai root melalui su ke sistem Linux
#su
#passwd
2.      Edit file /etc/httpd/conf/httpd.conf
#vi /etc/httpd/conf/httpd.conf dan commonhttpd.conf
            Bagain-bagian berikut perlu diperhatikan dan dilakukan perubahan jika perlu
·         ServerType [standalone/inetd]
Konfigurasi ini digunakan untuk menentukan tipe Apache yang berjalan pada server. Ada dua opsi yang dapat dipilih yaitu standalone atau inetd. Disini dipilih standalone.
Note: untuk apache versi 2.0, bagian ini sudah default (standalone) jadi tidak perlu didefinisikan.
·         ServerName namahost
Konfigurasi ini digunakan untuk menentukan nama server yaitu nama host-nya. Buat saja ns1.kelompok1.ac.id
·         ServerRoot “/etc/httpd”
Konfigurasi ini digunakan untuk menetukan letak root direktori dari Apache. Root direktori adalah tempat disimpannya file httpd.conf, modul-modul Apache, dan log file dari Apache. Jika anda menginstal apache secara default dari program RPM, maka secara default root direktori Apache berada pada direktori “/etc/httpd” , Sedangkan untuk distro SuSe direktori root berada pada “/var/lib/apache”, jadi dalam hal ini tergantung pakai distro yang mana. Kondisi default umumnya sudah benar.
·         StartServers angka
Konfigurasi ini digunakan untuk menetukan jumalh child process yang akan diluncurkan oleh Apache pada saat Apache mulai berjalan pada server. Nilai defaultnya adalah 8.
·         MaxClients angka
Konfigurasi ini digunakan untuk menentukan batas maksimum simultaneous requests yang masih dapat dilayani. Untuk konfigurasi biasa, angka maksimum adalah 256. Secara default nilainya adalah 150.
·         MaxSpareServers angka
Konfigurasi ini digunakan untuk menentukan jumlah maksimum Apache idle yang dapat disediakan. Konfigurasi ini sebenarnya sangat genting jika webserver anda melayani hit yang tinggi. Nilai 20 yang diset sebagai default sudah cukup untuk webserver anda jika tidak melayani hit yang sangat tinggi.
·         MinSpareServers angka
Konfigurasi ini digunakan untuk menentukan jumlah minimum Apache idle yang dapat disediakan. Nilai 5 yang diset sebagai default sudah cukup. Tetapi jika kurang, bisa ditambah.
·         Port nomor_port
Konfigurasi ini digunakan untuk menentukan pada port berapa Apache berjalan. Secara default port yang digunakan Apache adalah port 80
·         User nama_user
Konfigurasi ini digunakan untuk menentukan sebagai nama_user apa Apache tersebut dijalankan. Defaultnya adalah nobody atau apache. Sebaiknya jangan pernah menset user root untuk menjalankan Apache demi keamanan server. Kondisi default umumnya sudah benar.
·         Group nama_group
Konfigurasi ini digunakan untuk menentukan sebagai nama_group apa Apache tersebut dijalankan. Defaultnya adalah nobody atau apache. Sebaiknya jangan pernah menset group root untuk menjalankan Apache demi keamanan server. Kondisi default umumnya sudah benar.
·         ServerAdmin email_admin
Konfigurasi ini digunakan untuk menentukan alamat email Administrator yang bertanggungjawab mengelola server. Nantinya jika ada masalah pada server, maka Administrator akan menerima email tentang permasalahan tersebut. Buat aja root@kelompok1.ac.id
·         DocumentRoot “/var/www/html”
Konfigurasi ini digunakan untuk menentukan direktori root dari dokumen webserver. Niali defaultnya adalah /var/www/html/ (mandrake) sedangkan untuk distro lain menyesuaikan misal: /home/httpd/html/ (RedHat). Ini artinya jika seseorang mengunjungi http://domain_anda/test.html, maka Apache akan mencari file test.html pada direktori /var/www/html.
·         UserDir public_html
Konfigurasi ini digunakan untuk menentukan nama direktori tempat user menyimpan homepagenya. Defaultnya adalah public_html. Ini artinya jika seorang user misalnya memiliki login name pada suatu server dengan nama login bejo, maka jika si bejo membuat direktori public_html pada direktori homenya (/home/bejo/public_html), lalu membuat file index.html pada direktori /home/bejo/public_html, maka si bejo telah memiliki homepage dengan alamat http://nama_domain/~bejo.
·         DirectoryIndex index.html index.htm index.shtml index.cgi index.php
Konfiguras ini digunakan sebagai petunjuk bagi Apache untuk langsung mengakses file tersebut ketika mengunjungi suatu direktori. Misalnya root direktori dokumen adalah /var/www/html/, maka ketika seorang mengunjungi http://domain_anda, misalnya www.pcr.ac.id, Apache pada server www.pcr.ac.id akan terlebih dahulu mencari file index.html pada direktori /var/www/html. Jika ada maka file itulah yang dikirim ke pengunjung tersebut. Jika mengaktifkan PHP, maka perlu menambahkan index.php pada konfigurasi diatas.

·         ErrorLog /var/log/httpd/error_log
Konfigurasi ini digunakan untuk menentukan letak direktori dan nama file yang akan digunakan Apache untuk menyimpan error_log. Defaultnya adalah direktori /var/log/httpd, dengan nama file error_log.
·         CustomLog /var/log/httpd/access_log common
Sama seperti error_log konfigurasi ini digunakan untuk menyimpan file access_log.
·         Alias /icons/ “/var/www/icons/”
Konfigurasi ini digunakan untuk membuat alias direktori pada URL. Misalnya, jika seseorang mengunjungi http://domain_anda/icons maka apache langsung menujudirektori /var/www/icons pada server tersebut. Abaikan saja jika tidak memerlukannya.
·         ScriptAlias /cgi-bin/ “/var/www/cgi-bin/”
Konfigurasi ini digunakan untuk membuat skrip alias pada URL. Seperti contoh diatas, jika seseorang mengunjungi http://domain_anda/cgi-bin/test.cgi, maka Apache akan langsung mengeksekusi file test.cgi pada direktori /var/www/cgi-bin. Jadi penggunaannya sama seperti Alias hanya saja dengan ScriptAlias Apache dapat membuat aplikasi web dengan menggunakan CGI script, Java script dll. Abaikan saja jika tidak memerlukannya.

3.      Administrasi Apache Webserver
Ada beberapa bagian untuk melakukan Administrasi Apache Webserver yaitu
·         Pengontrolan Apache Webserver, dengan melakukan perintah start / stop / status service httpd, hal ini dapat dilakukan di terminal seperti berikut:
#/etc/rc.d/init.d/httpd stop
Shuting down httpd:             [ OK ]
#/etc/rc.d/init.d/httpd start
Starting httpd:                 [ OK ]
#/etc/rc.d/init.d/httpd restart
Shuting down httpd:             [ OK ]
Starting httpd:                 [ OK ]
#/etc/rc.d/init.d/httpd status
httpd (pid 1005 1004 1003 1002 1001 999 998 995) is running….
·         Testing Apache Webserver di browser, dengan mengetikkan http://localhost/ jika muncul halaman web Apache Webserver maka “Selamat anda telah berhasil menginstall Apache Webserver dengan benar” uhh……J
·         Memonitor Status Apache Webserver, dengan mengetikkan di browser anda http://localhost/server-status dan selanjutnya akan muncul halaman web yang memperlihatkan Server Status dari Webserver yang telah anda buat.
4.      Pengetesan User_Dir public_html
·         Buatlah direktori “public_html” di home direktori dari user student.
student$mkdir public_html
·         Setelah itu buatlah HTML sederhana dengan editor vi dan beri nama “index.html” dan simpan di dalam direktori “public_html”
·         Akses “index.html” yang anda buat tadi dengan browser dengan mengetikkan URLnya http://localhost/~student/ , maka akan muncul tampilan HTML dari file index.html, jika tidak maka cek kembali kebenaran file konfigurasi httpd.conf pada bagian User_Dir publichtml.
5.      Pembuatan Virtual Website
·         Lihat file “vhosts.conf” dan perhatikan bagian berikut:
NameVirtualHost ip_address:nomor_port
   ServerAdmin email_admin
   DocumentRoot path_ke_direktori_root_dokumen
   ServerName nama_host
Untuk konfigurasi “NameVirtualhost ip_address:nomor_port” jika anda menggunakan port standard yaitu port 80, maka anda cukup menggunakan konfigurasi “NameVirtualhost ip_address”.
·         Rubah konfigurasi diatas sesuai kondisi Webserver anda seperti berikut:
NameVirtualHost 192.168.1.1 (sesuaikan no IP)
   ServerAdmin root@kelompok1.ac.id
   DocumentRoot /var/www/html
   ServerName ns1.kelompok1.ac.id
(sesuaikan no IP)
   ServerAdmin bejo@kelompok1.ac.id (sesuaikan alamatnya)
   DocumentRoot /var/www/rumbai (sesuaikan direktorinya)
   ServerName www.rumbai.com (sesuaikan nama virtual webnya)
·         Rubah di zone file pada DNS Servernya menjadi seperti berikut:
Pad file db.kelompok1.ac.id tambahkan baris berikut:
www.rumbai.com   IN   CNAME     ns1.kelompok1.ac.id.
·         Kemudian buat direktori /var/www/rumbai dengan perintah
#mkdir rumbai (asumsi sudah berada di direktori /var/www/)
dan pastikan permision filenya adalah 755
·         Letakkan file-file html dari situs www.rumbai.com pada direktori tersebut. Jangan lupa beri nama index.html pada file html yang berfungsi sebagai halama utama
·         Agar direktori yang baru dibuat tadi bisa diakses oleh seluruh orang melalui web browser maka tambahkan baris berikut di file commonhttpd.conf
   Order allow,deny
   Allow from all
·         Kemudian Restart Apache
#/etc/rc.d/init.d/httpd restart
·         Kemudian akses www.rumbai.com dari komputer klien.

Referensi
1.      Jhony H. Sembiring, “Jaringan Komputer Berbasis Linux”.
2.      http://httpd.apache.org/docs-2.0/

1 comment: