Sunday, June 12, 2016

Asas Apache (Part 1) - Pengenalan

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.

  1. Clients, Servers, and URLs
  2. Hostnames dan DNS
  3. Configuration Files dan Directive
  4. Web Site content
  5. 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.

No comments:

Post a Comment