Tujuan:
·
Mengetahui dan memahami konsep web
·
Mampu membangun web server dengan Apache
·
Mengerti dan memahami konfigurasi web server Apache
3.1. Apa itu web ?
Web adalah salah satu layanan internet yang paling populer diantara
layanan internet lainnya (mail, ftp, messenger, chat dll). Web sebenarnya
hanyalah suatu file atau dokumen dengan format HTML
Gambar-1.
HTTP Client-Server
(Hyper Text Mark up Language) yang ditransfer dari suatu komputer yang
menyediakan file -file web tersebut ke komputer client yang meminta. Web
bekerja dalam konsep client – server, artinya ada aplikasi client yang meminta
dokumen web kepada web server (yang menyediakan dokumen web). Aplikasi web
client contohnya: Mozilla, Firefox, Netscape, Internet Explorer, Opera dll.
Sedangkan contoh aplikasi web server yaitu: Apache web server, thttpd, IIS
(Microsoft web server) dll.
Web client dan web server
berkomunikasi menggunakan protokol HTTP (Hyper Text Transfer Protocol).
Protokol HTTP merupakan protokol TCP/IP yang bekerja pada 'Application layer',
bertanggungjawab dalam proses transfer file-file Hyper Text.
3.2. Apache HTTP server
Apache HTTP Server adalah sebuah aplikasi web server yang 'robust',
'open source' yang dikembangkan oleh Apache Software Foundation (http://www.apache.org). Sebagian
besar web server di internet saat ini menggunakan Apache sebagai aplikasi web
servernya, pada september 2005 berdasarkan survey pada www.netcraft.com hampir 70% web server di dunia(internet)
menggunakan Apache HTTP server. Sebagian
besar distribusi linux menyertakan Apache sebagai default aplikasi web server.
Apache adalah web server dengan lisensi GPL. Artinya boleh digunakan
oleh siapapun baik untuk keperluan komersial maupun non-komersial. Kita juga
bisa mendapatkan kode sumber dari web server ini. Oleh sebab itu sering disebut
juga dengan program open source.
3.3. Instalasi Apache
Jika pada saat instalasi linux Anda belum memilih paket Apache HTTP
server untuk diinstal pada saat instalasi, maka sekaranglah saatnya Anda
menginstal apache. Apache yang tersedia di www.apache.org biasanya
dalam kemasan tarball (tar.gz atau tar.bz2), namun untuk kemudahan maka
sebaiknya Anda cukup menginstal apache
dalam kemasan rpm yang sudah tersedia di CD distribusi linux yang Anda
miliki (misal Fedora).
# mount /mnt/cdrom
# rpm -ivh /mnt/cdrom/Fedora/RPMS/httpd-x-x.x.i386.rpm
catatan:
x-x.x adalah versi apache yang digunakan, sesuaikan dengan yang ada pada
CD linux Fedora Anda, nama paket apache
dalam distribusi linux yang lain bisa jadi bukan httpd tetapi apache. Dan pada
contoh perintah diatas lokasi file
source apache diasumsikan pada current
directory.
Setelah terinstal, Apache secara default telah membuatkan file
konfigurasi default yang sudah dapat digunakan, file konfigurasi tersebut
terletak di /etc/httpd/conf/httpd.conf. Untuk itu Anda dapat
mengaktifkan apache web server dengan perintah sbb (Fedora, Mandrake):
# service httpd start
atau
# /etc/init.d/httpd start
Selanjutnya Anda dapat memastikan apakah service web benar-benar sudah
berjalan, gunakanlah perintah berikut ini:
# netstat -tanp |grep :80
tcp 0 0 0.0.0:80
0.0.0.0:* LISTEN 2076/httpd
Jika perintah 'netstat -tanp |grep :80' tersebut ada output
seperti diatas maka web server sudah jalan dan siap menerima request dari
client. Cobalah Anda gunakan web browser (misal mozilla) lalu ketiklah pada bar
address http://localhost. Maka akan
muncul welcome page.
3.4. Konfigurasi Apache
Sebagaimana telah disebutkan sebelumnya bahwa dengan default konfigurasi
Apache web server sudah berfungsi, dan jika diperlukan konfigurasi ulang
(merubah konfigurasi), Anda cukup mengedit file konfigurasi Apache yaitu
file /etc/httpd/conf/httpd.conf. Untuk itu Anda harus memahami terlebih
dahulu beberapa parameter(directive) konfigurasi Apache yang penting dan umum.
File konfigurasi apache biasanya di dalamnya menyertakan guide atau keterangan
yang menjelaskan fungsi dari masing-masing parameter yang ada pada file
konfigurasi apache.
Global Environment
ServerType
Apache bisa dijalankan dengan dua cara, yaitu sebagai server yang berjalan
sendiri atau dijalankan oleh program lain, yang sering disebut dengan super
server. Nilai yang mungkin untuk direktif ini adalah inetd dan standalone.
ServerRoot
Direktif ini dipakai untuk menentukan top level direktori tree dari
file-file konfigurasi, log, dan error log. Direktif ini sudah dicontohkan di
depan.
PidFile
Untuk menentukan file yang dipakai untuk menyimpan proses ID dari server
induk.
Timeout
Waktu tunggu maksimal dalam detik yang diperbolehkan, baik untuk
mengirim atau menerima permintaan ke server.
KeepAlive,
MaxKeepAliveRequests, dan KeepAliveTimeout
Ketiga direktif ini berhubungan dengan "persistent
connections". Jika KeepAlive bernilai On maka server memberi
kesempatan untuk menjaga presistensi koneksi dari klient ke server. Nilai lain
yang mungkin untuk direktif ini adalah Off. Yang dimaksud dengan
persistensi adalah klien yang sama akan dilayani oleh proses anak yang sama
dari Apache server. Jadi disini ada mekanisme mengingat koneksi.
MaxKeepAliveRequests menentukan jumlah koneksi maksimum yang
diperbolehkan saat terjadi koneksi persisten. Anda bisa memberikan nilai 0 agar
jumlah koneksi tidak dibatasi.
Waktu tunggu maksimum sebuah koneksi masih bisa dilayani dengan cara
koneksi persisten. Satuannya adalah detik.
MinSpareServers,
MaxSpareServers, dan StartServers
Saat pertama server dijalankan proses induk akan membuat proses anak
sebanyak yang disebutkan dalam direktif StartServers. Proses anak akan terus
diawasi agar tidak kurang dari MinSpareServers dan tidak lebih dari
MaxSpareServers.
MaxClients
Membatasi jumlah klien yang dilayani secara bersamaan.
MaxRequestsPerChild
Setiap proses anak diperbolehkan melayani paling banyak sejumlah
MaxRequestsPerChild sebelum mati. Sebagai catatan, dalam proses koneksi persisten
dianggap satu koneksi. Nilai 0 dipakai untuk mewakili jumlah tak terbatas.
Listen dan
BindAddress
Akan menentukan dimana server Apache melayani permintaan. Contoh:
Listen 8080
Listen
192.168.1.192:80
Artinya apache akan melayani permintaan dari port 8080 dan dari nomor IP
192.168.1.192 pada port 80. Direktif ini sangat bermanfaat untuk membuat
virtual host bila server Anda mempunyai beberapa nomor IP yang bisa dipakai.
BindAddress berfungsi sama dengan Listen akan tetapi disini hanya bisa
dipakai nomor IP dan nama host saja.
Direktif Main server
User dan Group
User dan Group yang akan dipakai untuk menjalankan server Apache.
ServerAdmin
dan ServerName
ServerAdmin berisi alamat email dari administrator web server. Sedangkan
ServerName berisi menentukan nama host dari server utama.
Contoh:
ServerAdmin
root@your-server.com
ServerName
www. your-server.com
DocumentRoot
Root direktori dari dokumen-dokumen html. Contoh:
DocumentRoot
"/var/www/html"
Jika kita mengakses url http://www.your-server.com/utama.html, sama
dengan mengakses file /var/www/html/utama.html.
Directory
Tag-tag <Directory
/path/to/directory> dan </Directory> mendefinisikan ijin akses,
directive-directive dan option-option yang akan diterapkan pada suatu direktori.
Secara default , root directory ( / ) dibatasi ijin aksesnya oleh apache
(untuk keamanan) dengan hanya menggunakan directive Options dan AllowOverride . Untuk root
directory directive option hanya mengenable fitur FollowSymLinks dan directive AllowOverride
di set None.
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Modul
Apache banyak mendukung
modul-modul. Modul dalam apache diterapkan dengan konsep Dynamic Shared Object (DSO) agar mudah
dikembangkan. Modul semacam php, python, perl, mod rewrite dan lain-lainnya
dikembangkan dengan konsep ini, sehingga mempermudah pengembangan dan
pemeliharaan masing-masing modul.
Untuk mengetahui modul apa saja yang dikompilasi dalam server http.
# /usr/sbin/httpd -l
Compiled-in modules:
core.c
prefork.c
http_core.c
mod_so.c
suexec: enabled; valid wrapper
/usr/sbin/suexec
Agar bisa memanfaatkan modul-modul dalam bentuk shared-object, modul
mod_so harus dikompilasi kedalam apache. Jika hasil dari perintah httpd -l
tidak terdapat modul mod_so. Maka apache harus kita kompilasi ulang dengan
memasukkan modul ini.
Untuk memuat modul DSO tersebut saat apache berjalan maka Anda perlu
mnambhakan pada file httpd.conf suatu bari dengan directive LoadModule.
LoadModule <module-name>
<path/to/module.so>
contoh: memuat modul php pada apache saat runtime.
LoadModule php4_module modules/libphp4.so
Direktori HTML User linux (UserDir)
Apache memungkinkan dapat membaca dokumen-dokumen html milik user sistem
linux yang tersimpan dalam home directory user. Sehingga setiap user linux
dapat memiliki web pribadi. Ini dapat dilakukan dengan mendefinisikan lokasi
direktori web milik user dalam file konfigurasi apache dengan menggunakan
directive UserDir.
Secara default dalam konfigurasi Apache directive UserDir masih disable.
Untuk itu rubahlah sehingga seperti berikut ini.
<IfModule mod_userdir.c>
UserDir public_html
</IfModule>
Kemudian beri ijin akses pada direktori public_html tersebut yang
nantinya direktori public_html berada
didalam setiap home directory user, sbb:
<Directory /home/*/public_html>
AllowOverride FileInfo
AuthConfig Limit
Options MultiViews Indexes
SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST
OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST
OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
Jangan lupa jika Anda merubah konfigurasi apache , kemudian service
httpd nya harus di restart.
Agar setiap user sistem linux nantinya secara default memiliki direktori
public_html sebagai direktori tempat menyimpan dokumen-dokumen web(html) nya,
maka buatlah template direktori public_html pada direktori /etc/skel, sbb:
# mkdir /etc/skel/public_html
Selanjutnya, cobalah buat user baru sbb:
#adduser juanda
kemudian agar home directory user akhtar dapat diakses oleh user yang
menjalankan service httpd (Apache) maka jangan lupa merubah atribut ijin akses
home directory user menjadi minimal 711 (rwx—x—x), sbb:
#chmod 711 /home/juanda
Berikutnya cobalah Anda buat file html sederhana dengan nama index.html
pada direktori /home/akhtar/public_html, sbb:
# echo “<h1> Web Juanda</h1>” >
/home/juanda/public_html/index.html
# chown juanda.juanda /home/akhtar/public_html/index.html
Dan akhirnya user akhtar memiliki web site pribadi dengan alamat web
site http://your-server-name/~juanda/ atau
http://your-IP-address/~juanda/
Virtual Hosts
Virtual Host adalah fitur apache yang bisa dimanfaatkan untuk membuat
web hosting dengan satu mesin tetapi melayani servername (domain) yang banyak.
Virtual Hosts dapat berbasiskan IP atau server name. Namun umumnya konfigurasi
virtual host menggunakan tipe berbasiskan server name.
Untuk dapat memanfaatkan Virtual
Hosts, pertama Anda harus mendefinisikan dulu pada IP address yang manakah
diterapkan virtual host berbasiskan server name, ini artinya seluruh server
name dari masing-masing virtual host tentunya pada DNS server yang
bersangkutan harus di petakan atau di
mapping ke IP address tersebut. minimal satu. Contoh :
NameVirtualHost 192.168.1.1
Contoh konfigurasi 2 buah Virtual Hosts dapat dilihat sebagai
berikut :
<VirtualHost 192.168.1.1>
ServerAdmin
webmaster@domain-utama-anda.com
DocumentRoot /var/www/html
ServerName
www.domain-utama-anda.com
</VirtualHost>
<VirtualHost 192.168.1.1>
ServerAdmin
webmaster@domain-anda-lainnya.net
DocumentRoot
/home/anda/public_html
ServerName
www.domain-anda-lainnya.net
</VirtualHost>
Direktori DocumentRoot /var/www/html sudah ada (karena merupakan default DocumentRoot) dan jangan lupa
/home/anda/public_html harus sudah ada maka
buatlah direktori tersebut dengan cara membuat dahulu user “anda”, maka
otomatis akan dibuatkan direktori public_html dalam home direktori user “anda”
(diasumsikan sudah ada template direktori public_html dalam direktori
/etc/skel), sbb:
# adduser anda
# chmod 711 /home/anda
# echo “<h2>tes domain-anda</h2>” >
/home/anda/public_html/index.html
# chown anda.anda /home/anda/public_html/index.html
3.5. Modul Authentication
Apache web server mendukung beberapa modul-modul authentication,
modul-modul ini umumnya digunakan untuk menyediakan proses autentikasi yang
dapat dterapkan dalam direktori-direktori document root atau dokumen web,
apache akan melakukan verifikasi user yang mencoba mengakses direktori web.
Informasi Account dapat disimpan dalam file text , file database, atau kedalam
database server. Dalam buku ini kita hanya akan membahas Autentikasi yang mana
informasi user account nya tersimpan dalam file text biasa dan dalam file
database (dbm) .
Untuk menyediakan proses autentikasi dapat kita terapkan dengan 2 cara ,
yang pertama dengan mendefinisikan parameter-parameter autentikasi dalam
section direktori yang akan kita berikan proses autentikasi, dengan
menuliskannya dalam file konfigurasi htpd.conf. Atau cara yang kedua
menggunakan file htaccess. Untuk itu mari kita lihat beberap contoh yang akan
menggambrkan kedua cara tersebut.
Cara pertama:
Tambahkan baris berikut ini kedalam file konfigurasi apache (httpd.conf)
, sebagai contoh Anda akan memproteksi direktori DocumentRoot (/var/www/html),
maka pada section directory /var/www/html yang ditandai dengan tanda
“<Directory /var/www/html>”, sbb:
AuthType
Basic
AuthName
"Restricted Files"
AuthUserFile
/etc/httpd/passwd
require
valid-user
Kemudian buatlah File database text, dengan menggunakan tool htpasswd
sbb:
htpasswd -c /etc/httpd/passwd henry
htpasswd /etc/httpd/passwd akhtar
dan hasilnya akan dibutlah sebuah
file database text yang berisi username dan password dengan lokasi di
/etc/httpd, dan isi file sbb;
henry:KDp4desIpaOc.
akhtar:RedYva8skPWPY
Kemudian restart apache web servernya
agar proses proteksi diterapkan. Kalau kita lihat file database diatas
masih dapat dibaca karena masih dalam bentuk File ASCII text biasa, sebenarnya
anda dapat juga menggunakan tool htdbm yang bisa digunakan untuk
menghasilkan file database yang sulit dibaca user. Untuk menggunakan file
database htdbm maka baris yang perlu ditambahkan kedalam file konfigurasi
apache (httpd.conf) sebenarnya sama seperti kita menggunakan file database
ascii text perbedaanya hanya pada tipe Auth user filenya. Lihat bars berikut
ini:
AuthType
Basic
AuthName "Restricted Files"
AuthDBMUserFile /etc/httpd/passwdbm
AuthDBMType DB
require valid-user
Selanjutnya buatlah File database , dengan menggunakan tool htdbm
sbb:
htdbm -TDB -c /etc/httpd/passwdbm henry
htdbm -TDB /etc/httpd/passwdbm akhtar
hasilnya terdapat sebuah file database dengan tipe Barkeley Hash
Database di /etc/httpd dengan nama file passwdbm. Jangan lupa selanjutnya restart apache web servernya agar proses proteksi diterapkan.
Cara kedua:
Cara yang kedua dalam menerapkan autentikasi yaitu dengan menggunakan htaccess file, dimana kita bisa saja menerapkan autentikasi tidak harus mendefinisikan parameter autentikasi kedalam file konfigurasi utama apache (httpd.conf) . Untuk menerapkan cara ini kita perlu memmastikan dalam file konfigurasi apache terdapat parameter “AccessFileName” dan parameter ini memiliki nilai sbb:
AccessFileName .htaccess
Kemudian Anda harus memastikan bahwa dalam konfigurasi apache
memungkinkan user untuk meng-override option atau directive dalam atau melalui
file “.htaccess”. Jika Anda akan
menerapkannya proses autentikasi dalam document root (/var/www/html)
maka pada section directory /var/www/html yang ditandai dengan tanda
“<Directory /var/www/html>” pastikan terdapat parameter “AllowOverride” tidak benilai
“None” , tetapi “AuthConfig”, seperi berikut ini:
AllowOverride AuthConfig
Kemudian buatlah file dengan nama “.htaccess” dan diletakkan dalam
direktori yang akan di proteksi. Dan isi file .htaccess sama dengan isi yang
ditulis kedalam file konfigurasi apache pada cara yang pertama, sbb:
AuthType
Basic
AuthName "Restricted Files"
AuthDBMUserFile /etc/httpd/passwdbm
AuthDBMType DB
#Jika ingin mengijinkan user tertentu
#Require user henry
Require valid-user
Selanjutnya restart apache, dan coba Anda akses direktori tersebut lewat
web.

Tidak ada komentar:
Posting Komentar