Pengenalan
Ada beberapa benda basic yang korang kena
tau pasal web server apache, kalau nak senang tengok je documentation
dalam website apache. Untuk bab pengenalan ni, aku listkan beberapa
perkara yang korang kena tau.
- Clients, Servers, and URLs
- Hostnames dan DNS
- Configuration Files dan Directive
- Web Site content
- Log File dan Troubleshooting
Kalau korang kerja bahagian server dan kena setup web server
apache, korang kena rajin baca semua documentation dari yang basic
sampai lah advance. Sebabnya, ianya sangat membantu korang untuk plan
apa nak buat dan senang nak troubleshoot kalau ada problem.
Clients, Servers, and URLs
Kalau korang buka browser macam firefox, chrome atau internet
explorer, benda pertama yang korang buat adalah taip address, betul tak?
contoh address popular - http://www.google.com hehehe
Address
tu juga dikenal sebagai URL atau Uniform Resource Locators. Dalam URL
ni sebenarnya ada beberapa benda yang kena paham iaitu protocol,
servername, URL-path dan query. Apa benda tu? jom tengok.
protocol
- protocol ni membolehkan client dan server berkomunikasi. Macam
manusia jugak lah, kalau nak berkomunikasi korang kenalah bercakap
dengan bahasa yang masing-masing paham kan? Kalau dua2 tak paham dah
jadi macam ayam dengan itik. Ada dua protocol yang biasanya digunakan
iaitu http dan https.
servername - servername ni
macam address kat atas tu lah, www.google.com, ini lah servername. Ada
juga yang kata benda tu domain name. Tak kisahlah apa pun namanya yang
penting korang paham benda tu apa.
URL-path - ok
lepas korang taip servername kan, contoh
http://prpm.dbp.gov.my/default.html (aku ambik contoh lain supaya senang
paham). Apa2 je selepas "http://prpm.dbp.gov.my/" dikenali sebagai
URL-path. So default.html tu lah URL-path iaitu sejenis fail. Tapi
sebenarnya, URL-path ni ada 3 benda, sama ada fail, handler (macam
server-status) atau fail program (macam index.php).
query
- kadang2 dekat URL-path tu ada tanda soal "?" di ikuti dengan argumen,
contoh "?no=1". Benda nilah dinamakan query string, iaitu maklumat
tambahan yang dihantar ke server untuk diproses.
Bila
korang tekan enter je, sebenarnya korang sedang menghantar request ke
server menggunakan maklumat2 di atas. Server akan respon setiap request
korang tu dengan menghantar status code. Status code ni sebenarnya nak
bagitau yang request korang tu berjaya atau tak. Setiap code tu berbeza2
bergantung jenis error, nanti aku bukak bab lain cerita pasal error.
Hostnames dan DNS
Kalau korang tau pasal rangkaian
kan, mesti korang tau apa itu IP address betul tak? IP address ni
sebenarnya adalah logical address bagi sesuatu mesin komputer. Apa itu
logical address, nanti aku bukak bab lain hahaha. Sebenarnya, bila
korang taip servername dekat URL address tu, komputer korang tu tak tau
pun nak hantar ke mana request yang korang buat tu. So apa dia buat, dia
akan convert servername tu kepada IP address server. Tapi macam mana
komputer tu tau IP address tu, itulah gunanya DNS. Korang kena register
servername tu dalam DNS dulu baru lah komputer boleh tau IP address tu.
Apa pulak DNS tu? nanti aku bukak bab lain hahaha.
Hostname
ni apa pulak? Hostname ni sama macam servername. Dalam satu server
fizikal tu sebenarnya boleh letak banyak hostname. Dan lebih dari satu
hostname boleh point ke IP address yang sama, dan lebih daripada satu IP
address boleh letak dalam satu server fizikal. Nampak tak sebenarnya
korang boleh letak semua laman web korang tu dalam satu server. Tak
payah lah nak membazir satu sistem satu server, selain kos tinggi, nak
maintain pun payah.
Configuration Files dan Directive
Configuration file apache ni mudah je, simpan dalam bentuk text.
Lokasinya bergantung macam korang setup server tu lah. Default
configuration file nama dia httpd.conf sebagai master file. Kalau korang
baru take over server tu, cari fail ni dulu, lepas tu tengok lah dalam
dia macam mana server tu di configure. Biasanya, orang akan pecah2 kan
configuration file tu supaya mudah nak manage. Takde lah semua longgok
dalam fail httpd.conf tu. Sebab fail httpd.conf ni master fail, so fail
yang kecik2 tu kena import masuk ke dalam fail ni, macam mana nak
import, guna Include.
Selain daripada tu, ada
configuration file yang agak special sikit nama dia .htaccess. Fail ni
sebagai tambahan kepada fail utama httpd.conf. Biasanya orang guna fail
ni kalau dia tak dapat access pada fail utama. Contohnya programmer.
Ok
apa pulak directive tu? Directive tu sebenarnya cara configuration file
tu ditulis. Caranya, keyword diikuti dengan argumen. Contoh directive -
BufferSize integer. BufferSize tu adalah keyword manakala integer tu
adalah argumen.
Setting configuration ni pulak ada
global dan local. Kalau global tu directive terpakai untuk semua dan
diluar kawasan <Directory>, <Location>,<VirtualHost>
atau mana-mana section. Kalau local, maknanya directive tu hanya
terpakai pada section tertentu saja seperti <VirtualHost>.
Web Site Content
Web site content ni maksudnya kandungan laman web korang tu lah
sama ada dinamik atau statik. Maksud dimanik adalah content tu tak
tetap, boleh berubah-rubah mengikut request yang korang buat. Statik
pulak contentnya sama je, walaupun korang request pada masa berbeza.
Contoh
content yang static adalah fail HTML, CSS, Javascript, gambar, atau
apa-apa fail dalam filesystem. Kat mana korang simpan fail ni dalam
server? Apache gunakan directive DocumentRoot untuk tetapkan lokasi
fail-fail tu. Korang boleh set global atau local.
Korang
tau PHP kan? PHP tu salah satu content yang dinamik tapi sebenarnya PHP
ni kira third-party module, bukan asal usul daripada Apache. Kalau
Apache punya original, diorang guna handlers atau CGI program untuk
generate content dinamik.
Log Files dan Troubleshooting
Kebolehan korang untuk baca dan paham log files ni amatlah
bagus sebab dapat jimatkan masa korang untuk troubleshoot error atau
aktiviti yang pelik macam hacking. Kalau korang troubleshoot tanpa
tengok log files samalah macam korang drive kereta tapi mata tutup
hehehe
Lokasi log files ni ada dekat directive
ErrorLog. Korang boleh set global atau local. Aku cadangkan korang
simpan log files tu selama 6 bulan.