Nota Kursus OSS Server Setup

89
Nota Kursus Disediakan Oleh: MOHD SAFFUAN BIN SUNTONG RAZALI BIN MOHAMAD SERVER SETUP (PERISIAN OSS)

description

Nota Kursus / Tutorial OSS Server Setup (Linux + Apache + MySQL + PHP + perisian lain) menggunakan Centos 5.5

Transcript of Nota Kursus OSS Server Setup

Page 1: Nota Kursus OSS Server Setup

Nota Kursus

Disediakan Oleh:

MOHD SAFFUAN BIN SUNTONG

RAZALI BIN MOHAMAD

SERVER SETUP (PERISIAN OSS)

Page 2: Nota Kursus OSS Server Setup

Isi Kandungan

Hari Isi Kandungan Modul Muka

Surat

Tempoh

(Jam)

1 Penyediaan Sistem Pengoperasian

Membuat pemasangan Sistem Pengoperasian server dengan

menggunakan Centos Linux version 5.5. Topik yang terlibat:

a) Membuat hard disk partition.

b) Membuat konfigurasi rangkaian pada server.

c) Membuat pemasangan perisian dan aplikasi.

d) Membuat pemasangan aplikasi Firewall.

e) Mencipta pengguna server.

f) Menggunakan Desktop Linux.

1

4

7

10

12

15

16

3 jam

Arahan Asas Linux

Mempelajari arahan-arahan asas Linux menggunakan terminal. Topik

yang terlibat adalah:

a) Mengurus struktur direktori, file manipulation dan arahan

biasa lain.

b) Mengurus pengguna, kumpulan pengguna dan access right.

c) Membuat konfigurasi parameter server seperti nama server

dan rangkaian.

d) Menggunakan arahan tools tertentu untuk menyemak keadaan

server.

e) Membangunkan shell script ringkas dan penggunaan cronjob.

20

23

26

28

31

3 jam

2 Penyediaan Web Server

Membuat pemasangan web server Apache 2 di server serta sokongan

PHP. Topik yang terlibat:

a) Memasang dan mengkonfigurasi web server Apache dan PHP

menggunakan kaedah automatik Yum Install.

b) Memasang dan mengkonfigurasi web server Apache dan PHP

menggunakan kaedah semi-auto RPM Install.

c) Memasang dan mengkonfigurasi web server Apache, PHP dan

MySQL menggunakan kaedah manual Tarball.

34

35

37

3 jam

Penyediaan Pangkalan Data

Membuat pemasangan pangkalan data MySQL di server. Topik yang

terlibat:

a) Memasang pangkalan data MySQL menggunakan kaedah

automatik Yum Install.

b) Memasang pangkalan data MySQL menggunakan kaedah semi-

auto RPM Install.

c) Menggunakan arahan MySQL asas di terminal.

d) Membuat pemasangan PhpMyAdmin.

42

43

44

48

3 jam

Page 3: Nota Kursus OSS Server Setup

3 Konfigurasi Tambahan Pada Server

Melaksanakan konfigurasi tambahan pada web server Apache, PHP dan

MySQL. Topik yang terlibat:

a) Melaksanakan konfigurasi Firewall Iptables.

b) Membuat konfigurasi virtual host pada web server Apache.

c) Membuat konfigurasi pada setting PHP.

d) Menambah komponen sokongan pada PHP.

e) Menambah sokongan penghantaran email menggunakan

Sendmail.

f) Membuat konfigurasi pada setting MySQL dan membuat

konfigurasi user privileges pada pangkalan data MySQL

menggunakan PhpMyAdmin.

g) Membuat konfigurasi Network Time Protocol (NTP) client.

52

55

56

58

61

63

68

3 jam

Pengujian Web Server

Melaksanakan pengujian pada web server agar aplikasi dapat berjalan

dengan baik. Antara yang diuji adalah:

a) Keupayaan memproses kod HTML.

b) Keupayaan memproses kod PHP.

c) Keupayaan memproses capaian di antara PHP dan pangkalan

data MySQL.

d) Keupayaan menyokong perisian sumber terbuka seperti

Joomla.

e) Menguji masa capaian laman web menggunakan Apache

Benchmark tools.

f) Menyemak statistik capaian laman web menggunakan Awstats.

g) Menyemak servis dan server yang up menggunakan Nmap.

70

71

73

74

78

80

82

3 jam

Page 4: Nota Kursus OSS Server Setup

1

MODUL 1: PENYEDIAAN SISTEM PENGOPERASIAN

1. Mula membuat Installation

a. Masukkan DVD Centos 5.5 Installer ke dalam DVD-ROM dan pastikan server akan boot

bermula dengan CD/DVD Device.

b. Tekan <ENTER>

c. Pilih OK sekiranya hendak membuat media test (mengambil masa beberapa minit) atau

Skip media test.

Page 5: Nota Kursus OSS Server Setup

2

d. Pilih Next.

e. Pilih bahasa yang digunakan untuk Installation - default: English (English) dan klik pada

Next.

Page 6: Nota Kursus OSS Server Setup

3

f. Pilih jenis keyboard yang digunakan – default: U.S. English dan klik Next.

g. Warning mengatakan partition table tidak dapat dibaca disebabkan belum di Initialized.

Klik Yes untuk initialized dan padam semua data di partition table.

Page 7: Nota Kursus OSS Server Setup

4

2. Membuat hard disk partition

a. Pilih “Remove all partitions on selected drives and create default layout” untuk format

dan padam segala data dan partition di dalam hard disk.

b. Tick pada “Review and modify partitioning layout” dan klik Next.

c. Warning mengatakan semua partition pada hard disk akan dibuang. Klik Next.

Page 8: Nota Kursus OSS Server Setup

5

d. Kebiasaannya, hard disk di dalam linux dikenali sebagai sd(turutan) atau hd(turutan).

Sd(turutan) selalunya digunakan hard disk adalah SATA, SCSI atau USB manakala

hd(turutan) digunakan sekiranya hard disk adalah IDE. “Turutan” mewakili bilangan ke

berapa hard disk di dalam server. Sebagai contoh:

i. Sda – Hard disk SATA/SCSI/USB pertama

ii. Sdb – Hard disk SATA/SCSI/USB kedua

Konsep yang sama digunakan bagi hard disk IDE seperti hda, hdb, hdc dan seterusnya.

Di dalam hard disk pula, ia akan dipecahkan lagi ke beberapa partition dan dikenalpasti

dengan nombor dibelakang seperti:

i. Sda1 – Partition pertama bagi sda

ii. Sdb2 – Partition kedua bagi sda

Secara default, partition akan dilaksanakan seperti berikut:

Partition Mount

point/RAID/

Volume

Jenis

Filesystem

Saiz Nota

sda1 /boot Ext3 100MB Kebiasaannya sistem akan mengambil

100MB sahaja bagi direktori boot.

sda2 VolGroup00 LVM Baki saiz

partition

Baki hard disk dijadikan LVM (Logical

Volume) dan digunakan oleh lain-lain

struktur direktori dan swap memory.

Bagi LVM pula, secara default akan dilaksanakan seperti berikut:

Volume

Group

Mount

point/RAID

/ Volume

Jenis

Filesystem

Saiz Nota

VolGroup01 swap 2GB atau

lain

Beberapa volume space akan

diperuntukkan bagi dijadikan swap

memory. Kebiasaannya saiz swap

memory adalah 2x saiz fizikal memory

(RAM).

VolGroup02 / ext3 Baki saiz

volume

group

Direktori / merupakan root atau

permulaan kepada direktori lain seperti

/var, /usr, /opt dan lain-lain. Pengguna

boleh menggunakan sepenuhnya

volume group ke direktori / atau

memecahkan lagi struktur direktori ke

volume group lain mengikut kesesuaian.

Jenis filesystem yang selalu digunakan bagi Linux pada masakini adalah ext3.Namun

terdapat pilihan filesystem seperti ext2, ext4, reiserFS, reiser4, jfs, xfs dan lain-lain.

Page 9: Nota Kursus OSS Server Setup

6

Berikut adalah penerangan kepada struktur direktori utama dalam Linux:

Direktori Penerangan

/ Root atau permulaan bagi struktur direktori

/root Direktori home bagi pengguna root

/home Direktori home bagi pengguna lain

/bin Menyimpan arahan linux semasa boot dan arahan yang biasa digunakan

pengguna biasa

/sbin Sama seperti /bin tetapi arahan bukan untuk pengguna biasa

/proc Merupakan virtual directory yang digunakan untuk menyimpan process

/usr Menyimpan segala arahan, library, fail manual dan lain-lain bagi pengguna biasa

/boot Menyimpan fail yang digunakan semasa proses boot oleh bootloader seperti

GRUB atau LILO. Juga menyimpan kernel images.

/lib Shared libraries yang diperlukan bagi program pada filesystem.

/dev Menyimpan fail driver bagi peranti seperti hard disk, serial ports dan lain-lain.

/etc Fail konfigurasi spesifik bagi mesin.

/var Mengandungi fail yang berubah seperti mail, printer spool, fail sementara

/opt Menyimpan pakej perisian yang tidak wajib.

/mnt Mount point bagi membuat mount sementara oleh pentadbir sistem.

/tmp Menyimpan fail sementara.

Setelah konfigurasi partition dibuat, klik pada Next.

Page 10: Nota Kursus OSS Server Setup

7

e. Pastikan “The GRUB boot loader will be installed on /dev/sda” ditandakan. Sekiranya

hendak meletakkan katalaluan pada boot loader, pilih “Use a boot loader password”.

Klik Next.

3. Membuat konfigurasi rangkaian

a. Kebiasannya Server akan diberi Alamat IP yang statik. Bagi membuat konfigurasi IP, klik

pada Edit.

Page 11: Nota Kursus OSS Server Setup

8

b. Pastikan “Enable IPv4 support” bertanda. Masukkan alamat IP dan Subnet Mask ke

dalam ruang yang disediakan dan klik OK. Tanda pada “Enable IPv6 Support” sekiranya

mahu membolehkan sokongan IPv6 pada server.

c. Pada bahagian hostname, setkan secara manual dengan memasukkan hostname bagi

server. Masukkan juga konfigurasi Gateway, Primary DNS dan Secondary DNS sekiranya

ada. Tekan Next.

Page 12: Nota Kursus OSS Server Setup

9

4. Menyambung proses installation.

a. Pilih region Asia/Kuala_Lumpur dan Tekan Next.

b. Masukkan Root Password 2 kali dan tekan Next.

Page 13: Nota Kursus OSS Server Setup

10

c. Software installation akan dibuat secara manual, oleh itu boleh terus tekan Next.

d. Tekan Next.

Page 14: Nota Kursus OSS Server Setup

11

e. Tunggu sehingga proses installation tamat.

f. Setelah proses installation tamat, tekan Reboot dan PC akan restart.

Page 15: Nota Kursus OSS Server Setup

12

g. Setelah PC restart, tunggu sehingga skrin ini keluar dan klik pada Forward.

5. Membuat pemasangan aplikasi Firewall

a. Pastikan Firewall diset pada Enabled. Pada bahagian Trusted services, tandakan pada

bahagian SSH. Konfigurasi Firewall bagi services yang lain akan dilakukan kemudian

secara manual

Page 16: Nota Kursus OSS Server Setup

13

6. Menyambung proses installation.

a. Pada SELinux Setting, pilih Disabled disebabkan ciri-ciri ini tidak perlu digunakan. Tekan

Forward.

b. Warning berkenaan SELinux dipaparkan. Tekan Yes.

Page 17: Nota Kursus OSS Server Setup

14

c. Pada bahagian Date and Time, pastikan maklumat tarikh dan masa adalah tepat dan

tekan Forward. Sekiranya hendak menggunakan fungsi Network Time Protocol (NTP),

tekan pada tab Network Time Protocol.

d. Tandakan pada “Enable Network Time Protocol”. Secara default terdapat 3 NTP Server

yang disediakan tetapi perlukan capaian ke Internet. Sekiranya terdapat NTP Server

sendiri atau lain, tambah dengan tekan pada Add. Tekan Forward setelah tamat

konfigurasi.

Page 18: Nota Kursus OSS Server Setup

15

7. Mencipta pengguna server

a. Sistem akan meminta pengguna mencipta 1 pengguna server (selain root) dan secara

default, pengguna yang akan dicipta ini mempunyai hak Administrator. Masukkan

username, nama penuh dan kata laluan dan tekan Forward.

8. Menyambung proses installation.

a. Tekan Sound test untuk menguji Sound Card. Tekan Forward untuk teruskan.

Page 19: Nota Kursus OSS Server Setup

16

b. Tekan Finish untuk menamatkan proses Installation dan server akan Reboot semula.

9. Menggunakan Desktop Linux

a. Masukkan Username dan Kata Laluan untuk masuk ke dalam Desktop.

Page 20: Nota Kursus OSS Server Setup

17

b. Menu utama Desktop Centos Linux adalah Application, Places dan System.

c. Pada menu Applications terdapat perisian dan aplikasi yang biasa digunakan seperti

Word Editor, Picture Editor, Video Player, Games dan lain-lain.

Page 21: Nota Kursus OSS Server Setup

18

d. Pada menu Places terdapat pautan ke Folder Home, Desktop, Computer, CD/DVD Drive

dan Network Server.

e. Pada menu System terdapat 2 submenu yang utama iaitu Preferences dan

Administration. Bagi submenu Preferences, ia lebih kepada fungsi Desktop seperti

Background, File Manamgement, Fonts, Keyboard, Mouse, Screensaver dan sebagainya.

Page 22: Nota Kursus OSS Server Setup

19

f. Bagi submenu Administration, ia lebih kepada fungsi pengurusan server seperti

Authentication, Masa dan Tarikh, Perkakasan, Rangkaian, Services, Pengguna dan lain-

lain.

g. Bagi membuka Termninal, klik kanan pada background Desktop dan pilih Open Terminal.

Page 23: Nota Kursus OSS Server Setup

20

MODUL 2: ARAHAN ASAS LINUX

1. Mengurus struktur direktori, file manipulation dan arahan biasa lain.

a. Struktur direktori Linux hampir sama dengan Windows. Bezanya ia bermula dengan root

(/) manakala Windows bermula dengan drive letter (C:\>). Fungsi direktori telah

diterangkan dalam Modul 1.

b. Segala arahan, nama fail dan direktori di dalam Linux adalah case sensitive. Elakkan

menamakan fail atau direktori dengan menggunakan <spaces> dan special character

seperti ( / * & % ? ) dan lain-lain. Cara terbaik adalah menggunakan aksara alphanumeric

iaitu abjad dan nombor serta _ (underscore) dan . (dot), contohnya my_big_program.c.

c. Berikut adalah senarai arahan asas yang boleh digunakan bagi menguruskan direktori

dan fail:

Arahan Kegunaan

ls -a Menyenaraikan semua fail dan direktori

ls -al Menyenaraikan semua fail dan direktori termasuk attribute

dan parameter fail/direktori seperti saiz, pemilik, tarikh

dicipta dan sebagainya

mkdir <nama direktori> Membuat direktori baru

cd <direktori> Masuk ke dalam struktur direktori yang dinyatakan

cd .. Undur satu direktori ke belakang (parent directory)

pwd Memaparkan kedudukan direktori semasa

cp <fail1><fail2> Salin fail1 dan namakan sebagainya fail2

mv <fail1><fail2> Pindah/rename fail1 ke fail2

rm <fail> Hapus fail

Page 24: Nota Kursus OSS Server Setup

21

rmdir <direktori> Hapus direktori kosong

rm -Rf <direktori/fail> Hapus direktori yang mempunyai kandungan secara

recursive dan force

cat <fail> Memaparkan fail (tambah | more untuk memaparkan fail

sedikit demi sedikit)

less <fail> Sama seperti cat <fail> | more

head <fail> Memaparkan beberapa baris kandungan fail yang teratas

tail <fail> Memaparkan beberapa baris kandungan fail yang terbawah.

Kedua arahan head dan tail boleh ditambah dengan

parameter -n <bilangan baris> bagi memaparkan kandungan

mengikut baris yang dikehendaki, contohnya

# tail -n 100 abc.txt

grep ‘katakunci’ <fail> Mencari katakunci dalam fail yang dinyatakan

wc <fail> Memaparkan bilangan baris, perkataan dan aksara di dalam

fail

sort <fail> Susun kandungan fail mengikut abjad dan paparkan ke

terminal

touch <fail1> Mencipta fail kosong bernama fail1

d. Kebanyakan proses yang dijalankan oleh pengguna akan dipaparkan ke terus ke

terminal. Namun dengan menggunakan kaedah redirecting, output bagi sesuatu arahan

dapat disimpan ke dalam fail dan boleh dibuka kemudian untuk rujukan. Berikut adalah

arahan asas bagi proses redirection:

Arahan Kegunaan

arahan >[fail1] Cipta satu fail baru bernama fail1 dan output arahan

disimpan ke fail1

arahan >> [fail1] Simpan output arahan dengan menambah ke dalam fail1

sedia ada

arahan < [fail1] Melaksanakan arahan berdasarkan maklumat yang terdapat

di dalam fail1

arahan1 | arahan2 Melaksanakan arahan2 selepas arahan1. Contohnya:

# tail fail1 | sort

- susun output selepas senaraikan kandungan fail terakhir

# ls -al | grep ‘katakunci’

- paparkan senarai direktori/fail tetapi yang mempunyai

katakunci yang dimasukkan

Juga boleh digunakan lebih daripada 2 arahan.

cat [fail1] [fail2] > [file0] Gabungkan kandungan di dalam fail1 dan fail2 ke fail0

Page 25: Nota Kursus OSS Server Setup

22

e. Arahan juga boleh digunakan bersama wildcards. Berikut adalah contoh arahan dan

juga arahan lain yang boleh digunakan untuk melihat panduan arahan atau manual

page:

Arahan Kegunaan

* Match aksara tanpa had, contoh:

# ls list* - match semua perkataan bermula dengan list

# ls *list - match semua perkataan berakhir dengan list

? Match hanya 1 aksara, contoh:

# ls ?ouse

- match satu huruf sebelum ouse seperti mouse, house.

man arahan1 Paparkan manual/panduan penuh penggunaan bagi arahan1

whatis arahan1 Paparkan maklumat singkat mengenai arahan1

apropos ‘katakunci’ Paparkan maklumat singkat mengenai mana-mana arahan

yang mempunyai katakunci yang dinyatakan

f. Berikut adalah arahan lain-lain yang biasa digunakan:

Arahan Kegunaan

date Paparkan masa dan tarikh semasa server

find . -name "*.txt" Membuat carian fail *.txt di direktori semasa

history Paparkan arahan yang pernah digunakan sebelum ini.

Arahan di bawah digunakan untuk menghadkan ingatan

history ke 100 arahan sebelum

# set history=100

locate <fail> Sama seperti find tetapi proses carian lebih laju kerana ia

akan membuat carian di dalam database direktori. Untuk

mengemaskini database direktori, jalankan arahan

# updatedb

who Paparkan senarai pengguna yang sedang login ke server

menerusi telnet/ssh atau desktop

whoami Paparkan nama pengguna sendiri yang sedang digunakan

g. Arahan biasa bagi membuat compression fail/direktori:

Arahan Kegunaan

gzip fail1 Compress fail1 ke fail1.gz.

gunzip fail1.gz Uncompress fail1.gz dan dapatkan fail asal fail1. Fail fail1.gz

akan dipadam.

tar -cvzf dir1.tar.gz dir1/ Gabungkan direktori dir1 ke dalam satu fail dan compress fail

tersebut dengan kaedah gzip. Penjelasan parameter:

- c = cipta archive baru

- v = verbose, paparkan fail yang akan di archived

- z = compression fail menggunakan kaedah gunzip

Page 26: Nota Kursus OSS Server Setup

23

- f = simpan archive ke fail yang dinyatakan

tar -xvzf dir1.tar.gz Extract dan uncompressed fail dir1.tar.gz ke direktori

semasa. Penjelasan parameter:

- x = extract fail archive

Parameter lain sama seperti di atas

tar -cvjf dir1.tar.bz2

dir1/

Gabungkan direktori dir1 ke dalam satu fail dan compress fail

tersebut dengan kaedah bzip. Penjelasan parameter:

- j = compression fail menggunakan kaedah bzip

tar -xvjf dir1.tar.bz2

/home/abc/

Extract dan uncompressed fail dir1.tar.bz2 ke direktori

/home/abc/.

h. Untuk edit fail teks di dalam linux, terdapat pelbagai text editor yang boleh digunakan.

Text editor yang sering digunakan adalah vi/vim editor dan nano.

Arahan Kegunaan

vi [nama fail]

vim [nama fail]

Buka fail yang dinyatakan menggunakan text editor vi/vim.

Text editor ini agak sukar digunakan. Ia terbahagi kepada 2

mod iaitu mod command dan mod insert.

Mod command – masukkan arahan tertentu untuk

melakukan tugas tertentu seperti:

- :wq = simpan perubahan dan keluar

- :w = simpan perubahan

- :q! = keluar tanpa simpan fail

- tekan i untuk masuk ke mod insert

Mod insert – pengguna boleh menulis fail di mod ini. Untuk

keluar dari mod insert dan kembali ke mod command

dengan menekan ESC.

nano [nama fail] Buka fail yang dinyatakan menggunakan text editor nano. Ia

lebih mudah digunakan dan straight forward. Berikut adalah

beberapa command yang sering digunakan:

- Ctrl+O = simpan fail

- Ctrl+W = buat carian di dalam fail berdasarkan katakunci

- Ctrl+X = keluar dari text editor

2. Mengurus pengguna, kumpulan pengguna dan access right.

a. Maklumat pengguna dan kumpulan pengguna disimpan di dalam fail text-based

database. Berikut adalah fail yang digunakan untuk menyimpan kedua-dua maklumat:

Fail Kegunaan

/etc/passwd Menyimpan maklumat pengguna seperti username, userid,

group id, home directory dan command shell (bash)

/etc/group Menyimpan maklumat kumpulan pengguna seperti nama

group, group id, senarai nama pengguna yang menjadi ahli

kepada group

/etc/shadow Menyimpan maklumat kata laluan pengguna dalam bentuk

Page 27: Nota Kursus OSS Server Setup

24

encrypt.

b. Bagi menguruskan pengguna dan kumpulan pengguna boleh menggunakan arahan-

arahan berikut:

Arahan Kegunaan

useradd

useradd -gusers -Gmgmt

-s/bin/shell -pxxxx

-d/home/roger -m roger

Untuk menambah pengguna baru. Parameter yang boleh

digunakan:

-d home directory

-s starting program (shell)

-p password

-g (primary group assigned to the users)

-G (Other groups the user belongs to)

-m (Create the user's home directory)

Dengan melaksanakan arahan seperti di sebelah, pengguna

roger dicipta dengan primary group users, group lain iaitu

mgmt, command shell yang akan digunakan /bin/shell,

katalaluan iaitu xxxx dan home directory /home/roger

usermod

usermod -Gothers roger

Untuk mengubah maklumat pengguna sedia ada. Parameter

yang boleh digunakan:

-d home directory

-s starting program (shell)

-p password

-g (primary group assigned to the users)

-G (Other groups the user belongs to)

Arahan di sebelah akan memasukkan pengguna roger ke

dalam group others.

userdel

userdel -r roger

Padam pengguna sedia ada. Parameter yang boleh

digunakan:

-r (remove home directory)

passwd

passwd roger

Untuk mengubah kata laluan bagi pengguna semasa yang

sedang login atau katalaluan pengguna lain (hanya boleh

dilakukan oleh pengguna root)

su

su roger

Switch user – bagi menukar pengguna semasa yang sedang

login di terminal/telnet ke pengguna lain. Arahan su sahaja

akan membuatkan penukaran ke pengguna root.

groupadd

groupadd bptm

Untuk menambah kumpulan pengguna/group baru

groupmod

groupmod -n btmbptm

Untuk membuat perubahan maklumat group.

Arahan disebelah akan mengubah nama group bptm ke btm.

groudel

groupdel btm

Padam group sedia ada.

Page 28: Nota Kursus OSS Server Setup

25

c. Setiap fail dan direktori dalam linux mempunyai pemilik dan kumpulan pemilik yang

dipanggil access right. Gambarajah di bawah (dipapar dengan arahan ls -al)

menunjukkan penerangan mengenai access right bagi file1.

Lebih terperinci, maklumat access right bagi fail/direktori adalah seperti jadual di

bawah:

Permission/Kebenaran Pemilik

Fail

Pemilik

Bersama

(Group)

Saiz Fail Tarikh Fail

dicipta/diubah

Nama

Fail Dir

/Fail

Pemilik Group Pengguna

lain

- rwx rwx rwx ali bptm 24 Nov 4 2010 a.txt

d rwx rw- r-- abu bswp 4096 Nov 1 2010 dir1

* r–read, w – write, x – execute

Permission rwx boleh diterjemahkan kepada 7 atau 111 dalam bentuk binari. Lain-lain

bentuk permission:

Permission Permission (Numeric) Permission (Binari)

--- 0 000

--x 1 001

-w- 2 010

-wx 3 011

r-- 4 100

r-x 5 101

rw- 6 110

rwx 7 111

Oleh itu dalam bentuk permission penuh, sebagai contoh, rwxrwxrwx boleh

diterjemahkan ke 777 dalam bentuk numeric. Contoh lain seperti rwxrw-r-- boleh

diterjemahkan ke 764.

Page 29: Nota Kursus OSS Server Setup

26

Berikut adalah arahan yang boleh digunakan bagi mengubah permission sesuatu

fail/direktori:

Arahan Penerangan

chmod [permission

numeric] <nama fail>

chmod 777 abc.txt

Membuat perubahan pada permission sesuatu fail/direktori.

Arahan seperti contoh di sebelah akan menyebabkan

permission bagi fail abc.txt akan diubah ke rwxrwxrwx.

chown

[username]:[group]

<nama fail>

chown ali:bptm abc.txt

Membuat perubahan pada pemilik dan group bagi sesuatu

fail/direktori.

Arahan di sebalah akan menyebabkan fail abc.txt diubah

pemilikan kepada ali dan group bptm.

3. Membuat konfigurasi parameter server seperti nama server dan rangkaian.

a. Server yang dibangunkan perlu diberi nama hostname sebagai pengenal server. Sewaktu

installation, hostname telah diberikan. Konfigurasi hostname ini disimpan di dalam fail

/etc/sysconfig/network. Di bawah adalah kandungan bagi fail tersebut. Bagi mengubah

nama hostname, tukar pada baris HOSTNAME=[nama hostname]. Konfigurasi Gateway

yang terdapat di fail ini merupakan gateway default bagi semua network interface yang

ada pada server.

NETWORKING=yes

NETWORKING_IPV6=yes

HOSTNAME=trainingcentos1.abc.com

GATEWAY=10.23.52.1

b. Konfigurasi rangkaian boleh dilakukan secara manual dan juga automatik dengan

penggunaan DHCP. Namun kebiasaannya bagi server, konfigurasi rangkaian dilakukan

secara manual kerana IP Address yang sama pada setiap waktu perlu ditetapkan.

Konfigurasi rangkaian perlu dilakukan pada setiap network interface. Kebiasaanya nama

network interface bermula dengan eth0, eth1, eth2 dan seterusnya. Konfigurasi

rangkaian ini disimpan di dalam fail /etc/sysconfig/networking/devices/ifcfg-eth* dan

kandungannya seperti di bawah. Konfigurasi IP Address, Subnet Mask, Network ID dan

Broadcast ID perlu dilakukan di dalam fail ini.

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth0

BOOTPROTO=static

BROADCAST=10.23.52.255

HWADDR=00:0C:29:31:9A:E9

IPADDR=10.23.52.235

IPV6INIT=yes

IPV6_AUTOCONF=yes

NETMASK=255.255.255.0

NETWORK=10.23.52.0

ONBOOT=yes

Page 30: Nota Kursus OSS Server Setup

27

c. Sekiranya memerlukan konfigurasi rangkaian secara automatik menggunakan DHCP,

konfigurasi fail /etc/sysconfig/networking/devices/ifcfg-eth* boleh dilakukan seperti

berikut di mana baris BOOTPROTO perlu disetkan ke dhcp dan konfigurasi IP Address

lain tidak perlu dimasukkan.

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth0

BOOTPROTO=dhcp

HWADDR=00:0C:29:29:1E:EF

ONBOOT=yes

TYPE=Ethernet

USERCTL=no

IPV6INIT=no

PEERDNS=yes

d. Konfigurasi DNS disimpan di dalam fail nano /etc/resolv.conf seperti di bawah. Baris

pertama iaitu search [domain] digunakan untuk menetapkan domain organisasi/ISP

yang akan digunakan oleh server ini. Baris seterusnya iaitu nameserver [IP Address]

digunakan untuk menetapkan IP Address bagi Primary DNS, dan baris seterusnya untuk

Secondary DNS dan seterusnya sekiranya ada.

search abc.com

nameserver 10.23.59.4

nameserver 172.30.0.51

nameserver 172.30.0.50

e. Sekiranya hendak menetapkan domain name lain ke IP Address yang diisytiharkan

sendiri tanpa bergantung kepada DNS server, seperti contoh alamat domain

www.abc.com hendak dipetakan ke alamat localhost (127.0.0.1) boleh dilaksanakan

dengan membuat konfigurasi pada fail /etc/hosts di mana konfigurasi boleh dibuat

seperti berikut:

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 localhost.localdomain localhost

::1 localhost6.localdomain6 localhost6

127.0.0.1 www.abc.com

10.23.59.5 www2.abc.com

f. Setelah selesai membuat konfigurasi berkaitan rangkaian, service rangkaian perlu

direstart semula bagi mengaktifkan perubahan yang dibuat. Bagi mengrestart service

rangkaian, jalankan arahan berikut:

# service network restart

Bagi melihat IP Address dan lain-lain konfigurasi rangkaian yang telah dibuat pada

server, jalankan arahan berikut:

# ifconfig

Page 31: Nota Kursus OSS Server Setup

28

4. Menggunakan arahan tools tertentu untuk menyemak keadaan server.

a. Terdapat beberapa status keadaan server yang perlu dan boleh dipantau bagi

memastikan kesihatan server seperti hard disk space, CPU load, memory usage dan

network traffic load. Jadual di bawah merupakan beberapa arahan asas yang boleh

digunakan untuk memantau keadaan server:

Arahan Kegunaan

lsb_release -a Memaparkan versi operating system yang digunakan.

top Akan memaparkan segala process yang sedang berjalan di background,

serta CPU load dan memory usage.

htop Sama seperti top tetapi mempunyai antaramuka lebih menarik dan

mudah difahami serta load bagi setiap CPU Processor boleh dilihat

secara graphical. Perisian ini perlu diinstall terlebih dahulu seperti

berikut:

a) Cipta satu fail bernama dag.repo di direktori /etc/yum.repos.d

b) Masukkan butiran berikut ke dalam fail dag.repo dan simpan.

[dag]

name=Dag RPM Repository for Red Hat Enterprise Linux

baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag

gpgcheck=0

enabled=1

c) Jalankan arahan berikut dan ikut arahan yang diberikan:

# yum install htop

Page 32: Nota Kursus OSS Server Setup

29

ps -ef

ps –ef | more

ps –ef | grep

<proses>

Memaparkan imbasan senarai proses yang sedang berjalan di server.

df -h Memaparkan jumlah hard disk usage dan free space serta peratusan

bagi setiap partition yang dibuat di dalam server. Parameter -h yang

digunakan adalah human-readable bermaksud paparan size adalah

dalam bentuk yang mudah difahami (Megabyte, Gigabyte).

Page 33: Nota Kursus OSS Server Setup

30

fdisk -l Memaparkan maklumat hard disk partition yang telah dikonfigurasi

dalam server.

free -m Memaparkan jumlah penggunaan memory RAM dan swap yang sedang

digunakan dan yang masih kosong. Parameter -m bermaksud paparan

jumlah dalam format Megabait. Parameter yang boleh digunakan juga

adalah seperti -b (byte), -k (KB), -g (GB).

du -sh * Arahan ini akan memaparkan jumlah hard disk space yang telah

digunakan bagi setiap direktori di dalam direktori semasa. Contoh di

bawah menunjukkan arahan ini dijalankan di directori /var.

iptraf Arahan ini digunakan untuk menjalankan IPTraf iaitu sebuah program

yang digunakan untuk melihat network communication dan traffic di

Page 34: Nota Kursus OSS Server Setup

31

server. Pilih menu IP traffic monitor > eth0 untuk melihat network

traffic bagi network interface eth0. Komunikasi rangkaian di antara

server dan hos lain boleh dilihat di paparan tersebut dan analisa boleh

dibuat sekiranya terdapat komunikasi luar biasa yang berkemungkinan

menyebabkan prestasi server menurun. Program ini perlu diinstall

terlebih dahulu dengan arahan:

# yum install iptraf

5. Membangunkan shell script ringkas dan penggunaan cronjob.

a. Shell script merupakan script aturcara yang ditulis untuk kegunaan aktiviti sistem

operasi yang kebiasannya digunakan untuk membuat file manipulation, program

execution dan paparan teks. Dengan menggunakan shell script, pentadbir sistem juga

boleh melakukan batch jobs iaitu menjalankan beberapa program sekaligus tanpa perlu

pentadbir sistem menjalankan setiap program secara manual.

b. Seperti contoh di bawah, arahan tersebut apabila dijalankan satu persatu secara

manualakan menyebabkan perkataan yang diecho dipaparkan ke skrin.

# echo “HELLO WORLD”

HELLO WORLD

# echo “Selamat Datang ke Server Centos”

Selamat Datang ke Server Centos

# echo “Tarikh hari ini adalah $(date)”

Tarikh hari ini adalah Mon Nov 8 15:14:12 MYT 2010

Semua arahan di atas boleh dikumpulkan dan disatukan ke dalam satu fail, contohnya

namakan sebagai welcome.sh.

echo “HELLO WORLD”

echo “Selamat Datang ke Server Centos”

echo “Tarikh hari ini adalah $(date)”

Page 35: Nota Kursus OSS Server Setup

32

Untuk menjalankan shell script yang telah dibangunkan tadi, taip arahan di bawah di

direktori yang sama dengan fail welcome.sh

# sh welcome.sh

Output bagi arahan di dalam shell script tersebut akan dijalankan sekaligus seperti

berikut:

[root@localhost /]# sh welcome.sh

HELLO WORLD

Selamat Datang ke Server Centos

Tarikh hari ini adalah Mon Nov 8 15:16:13 MYT 2010

c. Contoh lain penggunaan shell script adalah untuk membuat file backup, contohnya

terdapat fail yang perlu kita backup setiap hari. Sebagai contoh kaedah yang digunakan

membuat file backup adalah:

i. Copy fail senarai.txt ke fail lain dan namakan mengikut tarikh, contohnya

senarai20101108.txt.

ii. Tukar access right bagi fail yang telah dibackup ke 600.

iii. Padam fail asal senarai.txt.

iv. Cipta satu fail baru senarai.txt.

v. Pinda access right bagi fail senarai.txt ke 666.

Dengan menggunakan kaedah manual, arahan yang perlu digunakan adalah:

i. # cp senarai.txt senarai20101108.txt

ii. # chmod 600 senarai20101108.txt

iii. # rm -f senarai.txt

iv. # touch senarai.txt

v. # chmod 666 senarai.txt

Untuk membangunkan shell script yang akan melaksanakan semua arahan di atas, cipta

satu fail contohnya backup_senarai.sh dan masukkan semua arahan di atas dengan

sedikit perubahan dengan penambahan arahan $(date +"%Y%m%d") agar tarikh dapat

dijana secara automatik serta menggunakan full path agar arahan ini dapat dijalankan di

mana-mana direktori semasa.

cp /var/www/html/senarai.txt /var/www/html/senarai$(date +"%Y%m%d").txt

chmod 600 /var/www/html/senarai$(date +"%Y%m%d").txt

rm -f /var/www/html/senarai.txt

touch /var/www/html/senarai.txt

chmod 666 /var/www/html/senarai.txt

Jalankan fail shell script backup_senarai.sh

# sh backup_senarai.sh

Segala proses backup fail senarai.txt akan dijalankan secara automatik apabila arahan

tersebut dijalankan.

Page 36: Nota Kursus OSS Server Setup

33

d. Contoh pembangunan shell script yang telah diberikan dapat memberi gambaran

bahawa kita boleh memanipulasikan segala arahan yang terdapat dalam server Linux

dan dapat dijalankan dengan begitu mudah. Namun, pentadbir sistem masih lagi perlu

menjalankan arahan untuk membuatkan shell script tersebut diproses setiap hari seperti

contoh untuk membuat backup itu tadi. Akan tetapi dengan penggunaan cronjob,

pentadbir sistem dapat menetapkan shell script atau apa sahaja arahan untuk dijalankan

pada waktu dan hari yang dikehendaki secara automatik tanpa perlu pentadbir sistem

menjalankan sendiri secara manual.

Fail konfigurasi cronjob disimpan di /etc/crontab. Di dalam fail crontab terdapat

beberapa baris arahan yang mempunyai format seperti berikut:

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

Format tersebut boleh diterjemahkan kepada berikut di mana:

***** [username] [/path/to/command]

* * * * * [username] [command to be executed] - - - - - | | | | | | | | | ----- Day of week (0 - 7) (Sunday=0 or 7) | | | ------- Month (1 - 12) | | --------- Day of month (1 - 31) | ----------- Hour (0 - 23) ------------- Minute (0 - 59)

Menggunakan contoh shell script backup_senarai.sh yang telah dibangunkan sebelum

ini, pentadbir sistem hendak menetapkan bahawa script ini perlu dijalankan pada pukul

10 malam setiap hari. Oleh itu arahan cronjob yang perlu dimasukkan adalah:

01 22 * * * root sh /var/www/html/backup_senarai.sh

Bagi menjalankan arahan contohnya updatedb pada setiap 1jam, arahan cronjob berikut

boleh dimasukkan ke dalam fail /etc/crontab:

01* * * * root updatedb

Bagi menjalankan arahan yang sama pada setiap 5 minit, arahan cronjob berikut boleh

dimasukkan ke dalam fail /etc/crontab:

*/5* * * * root updatedb

Dengan gabungan shell script dan juga cronjob, ia dapat memudahkan serta membantu

pelbagai tugas seharian yang perlu dilakukan oleh pentadbir sistem

Page 37: Nota Kursus OSS Server Setup

34

MODUL 3: PENYEDIAAN WEB SERVER

1. Pemasangan web server Apache 2 di server serta sokongan PHP dengan kaedah Yum Install.

a. Pemasangan akan menggunakan versi perisian seperti berikut:

i. Apache – Apache 2.2++

ii. PHP – PHP 5.3++

b. Dengan menggunakan Yum Install, segala proses installation akan dilakukan secara

automatik dan installer file juga tidak perlu dicari. Namun bagi menginstall versi terkini

Apache dan PHP, kita perlu menggunakan Yum Repository yang terkini daripada Fedora

Redhat Epel dan Remi Repository. Jalankan arahan berikut untuk tujuan tersebut:

# wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

# wget http://rpms.famillecollet.com/el5.i386/remi-release-5-8.el5.remi.noarch.rpm

# rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

Kemudian buka fail /etc/yum.repos.d/remi.repo dan pada baris ke-5, gantikan

enabled=0 dengan enabled=1 dan simpan fail.

c. Buat installation Apache Web Server dan PHP dengan menggunakan arahan berikut.

Tunggu sehingga proses installation selesai. Jawab Y (Yes) pada semua soalan.

# yum install httpd php

Dengan ini Apache 2.2.3 dan PHP 5.3.3 telah selesai diinstall.

d. Jalankan arahan berikut bagi menetapkan Apache Web Server agar dijalankan secara

automatik setiap kali server mula beroperasi.

# chkconfig httpd on

e. Untuk memulakan servis Apache Web Server, jalankan arahan berikut:

# service httpd start

Page 38: Nota Kursus OSS Server Setup

35

f. Buka Internet Browser di dalam server dan taip http://localhost/. Sekiranya page seperti

di bawah muncul maka installation berjaya.

2. Pemasangan web server Apache 2 di server serta sokongan PHP dengan kaedah RPM Install.

a. Pemasangan akan menggunakan versi perisian seperti berikut:

i. Apache – Apache 2.2++

ii. PHP – PHP 5.3++

b. Untuk membuat installation menggunakan RPM iaitu RedHat Package Manager, fail

installer Apache dan PHP yang berformat RPM perlu diperolehi. Untuk mendapatkan fail

tersebut boleh dicari melalui Google. Fail tersebut boleh didownload dahulu dan

kemudian dipindah ke server ataupun didownload secara terus menggunakan wget dan

fail tersebut akan disimpan di direktori semasa. Contoh berikut merupakan cara untuk

mengdownload secara terus daripada laman web sumber:

# wget ftp://ftp.icm.edu.pl/vol/rzm1/linux-centos/5.5/os/i386/CentOS/httpd-2.2.3-43.el5.centos.i386.rpm

# wget http://rpms.famillecollet.com/el5.i386/php-5.3.3-1.el5.remi.i386.rpm

c. Jalankan arahan berikut untuk membuat installation Apache dan PHP:

# rpm -Uvh httpd*.rpm php*.rpm

Page 39: Nota Kursus OSS Server Setup

36

d. Apache akan berjaya diinstall namun PHP tidak akan berjaya diinstall disebabkan

masalah dependencies seperti berikut:

error: Failed dependencies:

php-cli = 5.3.3-1.el5.remi is needed by php-5.3.3-1.el5.remi.i386

php-common = 5.3.3-1.el5.remi is needed by php-5.3.3-1.el5.remi.i386

Bagi mengatasi masalah dependencies tersebut, package PHP-cli dan PHP-common

perlu didownload dan diinstall terlebih dahulu.

# wget http://rpms.famillecollet.com/el5.i386/php-cli-5.3.3-1.el5.remi.i386.rpm

# wget http://rpms.famillecollet.com/el5.i386/php-common-5.3.3-1.el5.remi.i386.rpm

# rpm -Uvh php*.rpm

Sistem akan cuba untuk membuat installation package PHP, PHP-cli dan PHP-common

namun akan ada masalah dependencies yang lain.

error: Failed dependencies:

libedit.so.0 is needed by php-cli-5.3.3-1.el5.remi.i386

Kali ini library libedit.so.0 perlu diinstall terlebih dahulu.Membuat installation

menggunakan RPM kadangkala merumitkan kerana masalah dependencies ini. Kita

perlu mencari dan menginstall dahulu library/package lain yang diperlukan sebelum

menginstall program yang diperlukan. Dapatkan library libedit dan install semula semua

komponen.

# wget http://download.fedora.redhat.com/pub/epel/5/i386/libedit-2.11-2.20080712cvs.el5.i386.rpm

# rpm -Uvh libedit*.rpm php*.rpm

1:php-common ########################################### [ 25%]

2:libedit ########################################### [ 50%]

3:php-cli ########################################### [ 75%]

4:php ########################################### [100%]

Dengan ini Apache 2.2.3 dan PHP 5.3.3 telah selesai diinstall.

e. Jalankan arahan berikut bagi menetapkan Apache Web Server agar dijalankan secara

automatik setiap kali server mula beroperasi dan mulakan Apache.

# chkconfig httpd on

# service httpd start

Page 40: Nota Kursus OSS Server Setup

37

f. Buka Internet Browser di dalam server dan taip http://localhost/. Sekiranya page seperti

di bawah muncul maka installation berjaya.

3. Pemasangan web server Apache 2 serta sokongan PHP dan MySQL dengan kaedah Tarball.

a. Pemasangan akan menggunakan versi perisian seperti berikut:

i. Apache – Apache 2.2++

ii. PHP – PHP 5.3++

iii. MySQL – MySQL 5.1++

b. Teknik installation menggunakan Tarball adalah teknik yang paling rumit dan mengambil

masa. Sekiranya hendak menggunakan web server asas tanpa perlu membuat

konfigurasi kepada source web server adalah disarankan menggunakan teknik Yum

Install atau RPM. Teknik installation Tarball ini digunakan sekiranya pentadbir sistem

ingin membuat customization sendiri pada library dan komponen web server.

c. Tukar direktori semasa ke /usr/local/src/. Jalankan arahan berikut untuk mengdownload

fail tarball Apache Web Server, PHP dan MySQL. Bagi pemasangan menggunakan tarball,

adalah dinasihatkan untuk membuat pemasangan MySQL terlebih dahulu.

# wget http://lawyersdb.com/mirrors/apache//httpd/httpd-2.2.17.tar.gz

# wget http://my2.php.net/get/php-5.3.3.tar.gz/from/my.php.net/mirror

# wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-

5.1.52.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/

Page 41: Nota Kursus OSS Server Setup

38

d. Extract semua fail tarball menggunakan arahan berikut dan direktori bagi setiap

komponen akan tercipta:

# tar zxf httpd-2.2.17.tar.gz

# tar zxf php-5.3.3.tar.gz

# tar zxf mysql-5.1.52.tar.gz

e. Sebelum membuat installation, komponen compiler gcc, gcc-c++ dan ncurses-devel

perlu diinstall terlebih dahulu bagi mengelakkan masalah ketika compilation dan

installation.

# yum install gcc gcc-c++

# yum install ncurses-devel

f. Mulakan installation MySQL dahulu mengikut arahan berikut. Sesetengah proses

mungkin akan mengambil masa yang agak lama dalam 10-15 minit.

// Cipta user dan group mysql

# groupadd mysql

# useradd -g mysql -c "MySQL Server" mysql

# cd /usr/local/src/mysql-5.1.52

# chown -R root.root *

# make clean

# ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-

mysqld-user=mysql --with-unix-socket-path=/tmp/mysql.sock --without-comment --

without-debug

// Tunggu dalam 5 minit

# make && make install

// Tunggu dalam 10-15 minit

g. Buat konfigurasi MySQL yang baru diinstall dengan mengikut arahan berikut satu

persatu. Penerangan bagi setiap arahan dan fungsinya boleh dirujuk di laman web

http://www.lamphowto.com/.

# ./scripts/mysql_install_db

# chown -R root:mysql /usr/local/mysql

# chown -R mysql:mysql /usr/local/mysql/data

# cp support-files/my-small.cnf /etc/my.cnf

# chown root:sys /etc/my.cnf

# chmod 644 /etc/my.cnf

# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf

# ldconfig

# cp ./support-files/mysql.server /etc/rc.d/init.d/mysql

Page 42: Nota Kursus OSS Server Setup

39

# chmod +x /etc/rc.d/init.d/mysql

# /sbin/chkconfig mysql on

# cd /usr/local/mysql/bin

# for file in *; do ln -s /usr/local/mysql/bin/$file /usr/bin/$file; done

// Mulakan service mysql

# service mysql start

Jika tiada sebarang error, MySQL versi 5.1.52 telah berjaya diinstall dengan jayanya.

h. Mulakan installation Apache Web Server dengan mengikut arahan berikut:

# cd /usr/local/src/httpd-2.2.17

# make clean

# ./configure --prefix=/usr/local/apache --enable-shared=max --enable-module=rewrite

--enable-module=so

// Tunggu dalam 5 minit

# make && make install

// Tunggu dalam 10 minit

i. Mulakan installation PHP pula dengan mengikut arahan berikut:

// Library libxml2-devel perlu diinstall terlebih dahulu bagi mengelakkan error kemudian

# yum install libxml2-devel

# cd /usr/local/src/php-5.3.3

# ./configure --with-apxs2=/usr/local/apache/bin/apxs --disable-debug --enable-ftp --

enable-inline-optimization --enable-magic-quotes --enable-mbstring --enable-safe-mode

--enable-wddx=shared --enable-xml --with-gettext --with-mysql=/usr/local/mysql --with-

regex=system--with-zlib-dir=/usr/lib

// Tunggu dalam 5 minit

# make && make install

// Tunggu dalam 10 minit

# cp php.ini-production /usr/local/lib/php.ini

j. Lakukan sedikit konfigurasi Apache Web Server bagi memulakan service web server:

# ln -s /usr/local/apache/conf/httpd.conf /etc/httpd.conf

# ln -s /usr/local/apache/bin/apachectl /etc/rc.d/init.d/apache

# ln -s /etc/rc.d/init.d/apache /etc/rc.d/rc3.d/S90apache

Page 43: Nota Kursus OSS Server Setup

40

k. Lakukan sedikit konfigurasi Apache Web Server dengan buka fail /etc/httpd.conf dan

cari baris berikut:

AddType application/x-gzip .gz .tgz

Di bawahnya tambah baris berikut:

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

Cari pula baris yang mengandungi kod berikut:

DirectoryIndex index.html

Tambah perkataan index.php di belakangnya seperti berikut dan simpan.

DirectoryIndex index.html index.php

l. Mulakan service web server dengan arahan berikut:

# /etc/rc.d/init.d/apache start

// Untuk menyemak sama ada service Apache sudah dimulakan, jalankan arahan

// berikut. Sekiranya terdapat proses httpd di senarai maka Apache sudah dijalankan

# ps –ef | grep httpd

m. Buka Internet Browser di dalam server dan taip http://localhost/. Sekiranya page seperti

di bawah muncul maka installation berjaya. Dengan ini Apache 2.2.17, PHP 5.3.3 dan

MySQL 5.1.52 telah berjaya diinstall.

Page 44: Nota Kursus OSS Server Setup

41

n. Bagi melihat samada PHP sudah berjaya diintegrasi dengan Apache Web Server, cipta

satu fail bernama phpinfo.php di root direktori di direktori seperti berikut:

i. Installation menggunakan Yum Install dan RPM = /var/www/html/

ii. Installation menggunakan Tarball = /usr/local/apache/htdocs/

Di dalam fail phpinfo.php tersebut, masukkan kod berikut dan simpan:

<?php

Phpinfo();

?>

o. Buka Internet Browser di dalam server dan taip http://localhost/phpinfo.php. Sekiranya

page seperti di bawah muncul maka integrasi di antara Apache Web Server dan PHP

telah berjaya.

Page 45: Nota Kursus OSS Server Setup

42

MODUL 4: PENYEDIAAN PANGKALAN DATA

1. Pemasangan pangkalan data MySQL dengan kaedah Yum Install.

a. Pemasangan akan menggunakan versi perisian seperti berikut:

i. MySQL – MySQL 5.1.x

b. Dengan menggunakan Yum Install, segala konfigurasi dan integration dengan PHP akan

dilakukan secara automatik. Jalankan arahan berikut untuk mula installation:

# yum install mysql mysql-server php-mysql

Setelah tamat installation, jalankan arahan berikut untuk menetapkan agar MySQL

5.1.52 server ini dijalankan secara automatik setiap kali server bermula:

# chkconfig mysqld on

c. Mulakan service MySQL dan restart service Apache dengan arahan berikut untuk refresh

integrasi antara PHP dan MySQL:

# service mysqld start

# service httpd restart

Cipta fail phpinfo.php jika belum dicipta. Buka Internet Browser di dalam server dan taip

http://localhost/phpinfo.php.Scroll ke bawah dan cari bahagian mySQL. Sekiranya

tedapat maklumat MySQL di dalam page phpinfo.php seperti di bawah maka integrasi di

antara PHP dan MySQL telah berjaya dilaksanakan.

Page 46: Nota Kursus OSS Server Setup

43

2. Pemasangan pangkalan data MySQL dengan kaedah RPM Install.

a. Pemasangan akan menggunakan versi perisian seperti berikut:

i. MySQL – MySQL 5.1.x

b. Untuk membuat installation menggunakan RPM fail installer MySQL yang berformat

RPM perlu diperolehi. Ia boleh diperolehi daripada laman web MySQL atau cari melalui

Google. Komponen PHP-MySQL,PHP-Pdo, Perl-DBI dan Perl-DBD-MySQL juga perlu

didownload bagi membuat installation dan integrasi antara PHP dan MySQL. Berikut

adalah mirror site yang digunakan untuk mendapatkan fail-fail tersebut:

# wget ftp://ftp.icm.edu.pl/vol/rzm1/linux-centos/5.5/os/i386/CentOS/perl-DBI-1.52-2.el5.i386.rpm

# wget ftp://ftp.icm.edu.pl/vol/rzm1/linux-centos/5.5/os/i386/CentOS/perl-DBD-MySQL-3.0007-

2.el5.i386.rpm

# wget http://rpms.famillecollet.com/el5.i386/mysql-server-5.1.52-1.el5.remi.i386.rpm

# wget http://rpms.famillecollet.com/el5.i386/mysql-5.1.52-1.el5.remi.i386.rpm

# wget http://rpms.famillecollet.com/el5.i386/mysql-libs-5.1.52-1.el5.remi.i386.rpm

# wget http://rpms.famillecollet.com/el5.i386/mysqlclient15-5.0.67-1.el5.remi.i386.rpm

# wget http://rpms.famillecollet.com/el5.i386/sqlite2-2.8.17-2.el5.remi.i386.rpm

# wget http://rpms.famillecollet.com/el5.i386/php-pdo-5.3.3-1.el5.remi.i386.rpm

# wget http://rpms.famillecollet.com/el5.i386/php-mysql-5.3.3-1.el5.remi.i386.rpm

c. Jalankan arahan berikut untuk mula membuat installation MySQL dan komponen-

komponen lain.

# rpm -Uvh perl-DB*mysql* sqlite* php-pdo*php-mysql*

Setelah tamat installation, jalankan arahan berikut untuk menetapkan agar MySQL

5.1.52 server ini dijalankan secara automatik setiap kali server bermula:

# chkconfig mysqld on

d. Mulakan service MySQL dan restart service Apache dengan arahan berikut untuk refresh

integrasi antara PHP dan MySQL:

# service mysqld start

# service httpd restart

Cipta fail phpinfo.php jika belum dicipta. Buka Internet Browser di dalam server dan taip

http://localhost/phpinfo.php. Scroll ke bawah dan cari bahagian mySQL. Sekiranya

tedapat maklumat MySQL di dalam page phpinfo.php seperti di bawah maka integrasi di

antara PHP dan MySQL telah berjaya dilaksanakan.

Page 47: Nota Kursus OSS Server Setup

44

3. Menggunakan arahan MySQL asas di terminal.

a. Dengan menggunakan mana-mana server yang telah disetup (disarankan server yand

diinstall menggunakan Yum atau RPM Install), buka terminal atau Putty ke server

tersebut.

b. Masukkan arahan berikut untuk tetapkan katalaluan bagi user root MySQL.

# mysqladmin -u root password 'katalaluan'

// Untuk mengubah katalaluan

# mysqladmin --user=root --password='katalaluan' password 'katalaluan-baru'

c. Untuk masuk ke MySQL command-line tool, masukkan arahan berikut dan masukkan

katalaluan yang telah ditetapkan. Shell mysql> akan dipaparkan sekiranya berjaya:

# mysql -u root –p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 7

Server version: 5.1.52 MySQL Community Server (GPL) by Remi

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

This software comes with ABSOLUTELY NO WARRANTY. This is free software,

and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Page 48: Nota Kursus OSS Server Setup

45

d. Untuk keselamatan, default database iaitu test perlu dibuang dan segala anonymous

user perlu dipadam terlebih dahulu.

mysql> DROP DATABASE test;

mysql> DELETE FROM mysql.user WHERE user = '';

mysql> FLUSH PRIVILEGES;

e. Bagi melihat semua database yang terdapat di dalam MySQL, guna arahan berikut.

Secara default, terdapat 2 database sedia ada tidak termasuk database test yang telah

dipadam sebelum ini.

mysql>SHOWDATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+

2 rows in set (0.00 sec)

f. Untuk melihat senarai pengguna database yang telah didaftar, guna arahan berikut:

mysql> SELECT user();

g. Untuk mencipta database baru dan grant privileges database tersebut ke user tertentu,

guna arahan berikut:

mysql>CREATE DATABASE [nama database];

mysql>GRANT ALL PRIVILEGES ON [nama database].* TO 'username'@'localhost'

IDENTIFIED BY 'katalaluan user';

h. Untuk membuang database, guna arahan berikut:

mysql> DROP DATABASE [nama database];

i. Untuk masuk dan menggunakan database yang ada di dalam MySQL, guna arahan

berikut:

mysql> USE [nama database];

Database changed

j. Untuk mencipta table baru, guna arahan seperti contoh berikut.

mysql>CREATE TABLE staff (nama VARCHAR(50), nostaff VARCHAR(10), bahagian

VARCHAR(30), gender CHAR(1), birth DATE);

Page 49: Nota Kursus OSS Server Setup

46

k. Bagi melihat senarai table yang terdapat di dalam database semasa, guna arahan

berikut:

mysql> SHOW TABLES; +----------------------+ | Tables_in_aplikasidb | +----------------------+ | staff | +----------------------+

l. Bagi melihat description/table structure bagi table, guna arahan berikut:

mysql>DESCRIBE [nama table];

m. Untuk membuang table, guna arahan berikut:

mysql> DROP TABLE [nama table];

n. Bagi memasukkan data ke dalam table, guna arahan seperti contoh berikut:

mysql>INSERT INTO staff VALUES ('Mohd Saffuan','02557','BPTM','L','1981-10-12');

mysql>INSERT INTO staff VALUES ('Ali','02558','BPTM','L','1980-05-25');

o. Untuk memaparkan kandungan data di dalam table, guna arahan seperti contoh berikut:

mysql> SELECT * FROM staff; +--------------+---------+----------+--------+------------+ | nama | nostaff | bahagian | gender | birth | +--------------+---------+----------+--------+------------+ | Mohd Saffuan | 02557 | BPTM | L | 1981-10-12 | | Ali | 02558 | BPTM | L | 1980-05-25 | +--------------+---------+----------+--------+------------+

p. Untuk mengemaskini data di dalam table, guna arahan seperti contoh berikut:

mysql>UPDATE staff SET bahagian='BSWP' WHERE nostaff='02558';

q. Untuk memadam data tertentu di dalam table, guna arahan seperti contoh berikut:

mysql>DELETE FROM staff WHERE nostaff='02558';

r. Bagi mengosongkan semua data di dalam table, guna arahan seperti berikut:

mysql> TRUNCATE TABLE[nama table];

Page 50: Nota Kursus OSS Server Setup

47

s. MySQL juga menyediakan tools untuk membuat backup database ke text file agar boleh

disimpan atau diimport ke tempat lain. Keluar dahulu daripada terminal mysql dan ikut

arahan berikut:

mysql> exit

// Format arahan untuk backup database ke text file

# mysqldump -u [username]–p[katalaluan] --databases [nama database]> /[path]/[nama fail]

// Contoh penggunaan

# mysqldump -u root -pzaq12wsx --databases aplikasidb > /var/www/html/aplikasidb_backup.sql

Fail backup yang telah dicipta tadi boleh dibuka dengan text editor untuk melihat isi

kandungannya.

t. Untuk restore atau import semula database yang telah dibackup ke text file, guna

arahan berikut, tetapi sebelum itu nama database yang hendak direstore perlu dicipta

terlebih dahulu.

// Format arahan untuk restore database daripada text file

# mysql -u [username]–p[katalaluan][nama database]< /[path]/[nama fail]

// Contoh penggunaan

# mysql -u root -pzaq12wsx aplikasidb </var/www/html/aplikasidb_backup.sql

u. Banyak lagi syntax SQL Query lain yang boleh dimasuk dan diproses melalui MySQL

terminal ini. Untuk mempelajari SQL Query bolehlah membuat carian di Google atau

melalui website http://www.w3schools.com/sql/default.asp. Namun dengan

menggunakan database administration tool yang lain seperti PhpMyAdmin, pengurusan

database dapat dilakukan dengan mudah dengan bantuan antaramuka yang cantik dan

mudah difahami.

4. Membuat pemasangan PhpMyAdmin.

a. PhpMyAdmin merupakan aplikasi atau tools yang biasa digunakan oleh pentadbir sistem

dan pangkalan data untuk menguruskan database MySQL. Ini kerana ia sangat mudah

digunakan dan difahami. Dalam panduan ini, kita akan membuat installation dengan 2

cara iaitu menggunakan Yum Install dan juga Tarball.

b. Untuk pemasangan PhpMyAdmin menggunakan Yum Install, jalankan sahaja arahan

berikut (hanya boleh digunakan dengan repository tambahan seperti Remi Repository):

# yum install phpmyadmin

Page 51: Nota Kursus OSS Server Setup

48

Apabila arahan tersebut dijalankan, didapati terdapat banyak komponen tambahan lain

yang perlu diinstall bagi membolehkan PhpMyAdmin berjalan dengan sempurna seperti

php-gd, php-mbstring, libmcrypt dan lain-lain. Setelah installation tamat, restart service

Apache dengan arahan:

# service httpd restart

c. Buka Internet Browser di dalam server dan taip http://localhost/phpmyadmin.

Sekiranya page seperti di bawah muncul maka PhpMyAdmin 3.3.8 telah berjaya diinstall.

Masukkan username database serta katalaluan untuk masuk ke dalam aplikasi

PhpMyAdmin.

d. Setelah berjaya login, paparan seperti di bawah akan muncul. Melalui PhpMyAdmin,

pentadbir sistem dan pangkalan data boleh membuat segala pengurusan database

seperti mencipta database, mencipta table, mengubah struktur table, memasukkan

data, menghapus data, import dan export table dan lain-lain lagi fungsi berkaitan

database.

Page 52: Nota Kursus OSS Server Setup

49

e. Bagi installation menggunakan Tarball pula, dapatkan tarball file PhpMyAdmin daripada

laman web http://www.phpmyadmin.net/home_page/downloads.php dan download

versiphpMyAdmin-3.3.8-all-languages.tar.gz. Boleh juga dapatkan terus menggunakan

arahan berikut (simpan fail di direktori /var/www/html/):

# wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/3.3.8/phpMyAdmin-

3.3.8-all-languages.tar.gz/download?use_mirror=autoselect

f. Extract filephpMyAdmin-3.3.8-all-languages.tar.gz yang telah didownload dan rename

direktori ke nama phpmyadmin mengikut arahan berikut:

# tar zxf phpMyAdmin-3.3.8-all-languages.tar.gz

# mv phpMyAdmin-3.3.8-all-languages phpmyadmin

g. Buka Internet Browser di dalam server dan taip http://localhost/phpmyadmin.

Sekiranya PhpMyAdmin login page muncul maka PhpMyAdmin 3.3.8 telah berjaya

diinstall. Masukkan username database serta katalaluan untuk masuk ke dalam aplikasi

PhpMyAdmin.

Page 53: Nota Kursus OSS Server Setup

50

h. Sekiranya tiada sebarang masalah anda akan berjaya login ke dalam aplikasi

PhpMyAdmin. Namun jika diperhatikan pada bahagian bawah terdapat beberapa error

message dipaparkan. Ia disebabkan beberapa komponen tambahan seperti yang dibuat

secara automatik dengan Yum Install tidak diinstall.

Untuk menghilangkan error tersebut, jalankan arahan berikut (sekiranya menggunakan

server yang belum ditambah repository Remi dan Epel, sila tambah dahulu repository

tersebut):

# yum install libmcrypt php-gd php-mbstring php-mcrypt t1lib

Sekiranya sewaktu installation ada error berikut:

GPG key retrieval failed: [Errno 5] OSError: [Errno 2] No such file or directory:

'/etc/pki/rpm-gpg/RPM-GPG-KEY-remi'

Buka fail /etc/yum.repos.d/remi.repo dan /etc/yum.repos.d/epel.repo dan cari baris

yang mempunyai enabled=1 dan dibawahnya gpgcheck=1, gantikan gpgcheck=0.

Jalankan semula arahan installation.

i. Restart semula service Apache dan refresh semula page http://localhost/phpmyadmin

dan login. Semua error mesej akan hilang kecuali satu iaitu “The configuration file now

needs a secret passphrase (blowfish_secret)”. Untuk menghilangkannya ikut arahan

berikut:

Page 54: Nota Kursus OSS Server Setup

51

# cd /var/www/html/phpmyadmin

# cp config.sample.inc.php config.inc.php

Buka fail config.inc.php dan cari baris yang mengandungi perkataan berikut:

$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Masukkan apa-apa perkataan yang boleh dipakai sebagai blowfish secret seperti contoh:

$cfg['blowfish_secret'] = 'qwert12345'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Kemudian logout dan login semula ke dalam aplikasi PhpMyAdmin dan error tersebut

akan hilang. Dengan ini PhpMyAdmin sudah lengkap diinstall.

Page 55: Nota Kursus OSS Server Setup

52

MODUL 5: KONFIGURASI TAMBAHAN PADA SERVER

1. Pelaksanaan Konfigurasi Firewall menggunakan IPTables.

a. IPtables merupakan aplikasi Firewall yang biasa digunakan bagi Sistem Operasi Linux. Ia

sering didatangkan secara default. Sewaktu proses installation kita telah enablekan

Firewall dan buka port 22 (SSH). Kita akan mempelajari arahan IPTables yang asas untuk

membolehkan kita membuka atau menutup sesuatu port.

b. Buka Internet Browser di komputer anda dan cuba buka laman web menggunakan IP

Address server yang telah disetup seperti contoh http://10.23.52.235. Anda akan

mendapati laman web tersebut tidak dapat dibuka disebabkan IPTables tidak membuka

port 80 kepada IP hos lain.

c. Bagi memulakan atau memberhentikan service IPTables, guna arahan berikut:

// Untuk mulakan IPTables

# service iptables start

// Untuk menghentikan IPTables

# service iptables stop

d. Bagi melihat rules dan status Firewall, guna arahan berikut dan output rulesnya akan

dipaparkan:

# iptables --list Chain INPUT (policy ACCEPT)

target prot opt source destination

RH-Firewall-1-INPUT all -- anywhere anywhere

Chain FORWARD (policy ACCEPT)

target prot opt source destination

RH-Firewall-1-INPUT all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

Chain RH-Firewall-1-INPUT (2 references)

target prot opt source destination

ACCEPT all -- anywhere anywhere

ACCEPT icmp -- anywhere anywhere icmp any

ACCEPT esp -- anywhere anywhere

ACCEPT ah -- anywhere anywhere

ACCEPT udp -- anywhere 224.0.0.251 udp dpt:mdns

ACCEPT udp -- anywhere anywhere udp dpt:ipp

ACCEPT tcp -- anywhere anywhere tcp dpt:ipp

ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED

ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh

REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Page 56: Nota Kursus OSS Server Setup

53

Jika dilihat pada rules yang dihighlightkan iaitu:

ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh

Ia menunjukkan port SSH iaitu 22 diterima (ACCEPT) dari mana-mana host (Anywhere).

e. Kita akan cuba membuat rules baru agar port 80 (http) dapat dibuka daripada tempat

lain menggunakan arahan berikut:

# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

Penerangan arahan:

-I = Insert rules (ke chain INPUT/FORWARD/OUTPUT/lain-lain)

-p = Protocol (tcp/udp/all)

--dport = Port no. yang hendak dibuka/tutup

-j = Jump target polisi (ACCEPT/DROP/REJECT)

Jalankan arahan #iptables --list dan akan didapati satu rules baru telah dimasukkan:

ACCEPT tcp -- anywhere anywhere tcp dpt:http

Cuba akses laman web dari komputer anda dan kali ini didapati laman web tersebut

boleh dibuka.

f. Restart semula service iptables dan lihat semula rules dengan arahan:

# service iptables restart

# iptables --list

Didapati rules yang baru dimasukkan telah hilang. Untuk menetapkan rules secara kekal,

buka fail /etc/sysconfig/iptables, cari baris berikut (2 baris terakhir):

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

Di atasnya, masukkan syntax berikut:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

Simpan fail dan restart service iptables. Lihat semula rules dan rules baru untuk port 80

telah dimasukkan:

ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http

Cuba akses laman web dari komputer anda dan lihat semula hasilnya.

Page 57: Nota Kursus OSS Server Setup

54

g. Kali ini kita akan mencuba untuk menutup port pula. Buka fail /etc/sysconfig/iptables,

cari baris syntax yang baru dimasukkan tadi dan gantikan dengan ACCEPT dengan DROP

seperti berikut:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

Restart service iptables dan cuba akses laman web tersebut dari komputer anda dan

didapati laman web tersebut tidak dapat diakses.

h. Daripada komputer anda, cuba ping ke server yang telah dibangunkan seperti contoh

berikut:

C:\> ping 10.23.52.235

Pinging 10.23.52.235 with 32 bytes of data:

Reply from 10.23.52.235: bytes=32 time<1ms TTL=64

Didapati ping berjaya dilakukan. Kita akancuba block ICMP packet yang digunakan untuk

proses ping. Buka fail /etc/sysconfig/iptables dan cari syntax berikut:

-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT

Gantikan ACCEPT dengan DROP seperti berikut:

iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP

Simpan fail, restart service iptables dan cuba ping server semula dari komputer anda.

Didapati ping ke server tersebut tidak akan berjaya disebabkan Request timed out.

i. Kadangkala terdapat keperluan untuk memblok akses ke server dari IP Address tertentu

atas sebab keselamatan. Untuk memblok IP Address tertentu buka fail

/etc/sysconfig/iptables dan cari baris berikut:

-A FORWARD -j RH-Firewall-1-INPUT

Masukkan syntax berikut di bawah baris tersebut:

-A RH-Firewall-1-INPUT -s [IP Address yang hendak diblok] -j DROP

Contoh:

-A RH-Firewall-1-INPUT -s 10.23.52.100 -j DROP

Restart service IPTables dan didapati IP Address tersebut akan diblok sepenuhnya

daripada membuat sebarang akses ke server tersebut seperti ping, http, ssh dan lain-

lain.

j. Terdapat banyak lagi function lain yang boleh dibuat menggunakan IPTables. Untuk

mempelajari lebih lanjut berkenaan IPTables boleh melawat http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_Linux_Firewalls_Using_iptables

Page 58: Nota Kursus OSS Server Setup

55

2. Membuat konfigurasi virtual host pada web server Apache.

a. Apache Web Server yang telah dibangunkan mempunyai Document Root yang

digunakan untuk meletakkan aplikasi web yang dibangunkan seperti contoh

/var/www/html/. Di dalam direktori ini kita boleh membina pelbagai aplikasi web dan

kebiasaannya setiap aplikasi akan diletakkan di dalam direktori yang berasingan seperti

contoh:

i. Sistem Pendaftaran - /var/www/html/edaftar

ii. Portal Joomla - /var/www/html/joomla

iii. Forum Pengguna - /var/www/html/forumpengguna

Untuk mencapai aplikasi-aplikasi tersebut daripada Internet Browser, kita akan

memasukkan main URL domain (contohnya www.abc.com) diikuti dengan direktori

aplikasi tersebut sebagai contoh:

i. Sistem Pendaftaran – http://www.abc.com/edaftar

ii. Portal Joomla - http://www.abc.com/joomla

iii. Forum Pengguna - http://www.abc.com/forumpengguna

Namun Apache Web Server membolehkan pentadbir sistem menghoskan setiap aplikasi

di dalam direktori Document Root mempunyai URL domain sendiri seperti

http://www.edaftar.com, http://joomla.abc.com dan sebagainya dengan menggunakan

fungsi Virtual Host.

b. Bina 2 direktori di dalam Document Root (/var/www/html/) iaitu edaftar dan

forumpengguna. Di dalam direktori edaftar, bina satu fail index.php dan masukkan kod

berikut:

<h1> Selamat Datang ke Sistem eDaftar</h1>

Manakala dalam direktori forumpengguna, bina satu fail index.php dan masukkan kod

berikut:

<h1> Selamat Datang ke Forum Pengguna</h1>

c. Kini kita akan menghoskan sistem eDaftar sebangai www.edaftar.com dan Forum

Pengguna sebagai forum.abc.com. Buka fail /etc/httpd/conf/httpd.conf dan scroll

hingga ke page bawah sekali pada Section 3: Virtual Hosts dan masukkan syntax berikut:

NameVirtualHost *:80

<VirtualHost *:80>

ServerName www.edaftar.com

ServerAlias edaftar.com

DocumentRoot /var/www/html/edaftar

</VirtualHost>

Page 59: Nota Kursus OSS Server Setup

56

<VirtualHost *:80>

ServerName forum.abc.com

DocumentRoot /var/www/html/forumpengguna

</VirtualHost>

Simpan fail dan restart service httpd di server. Buka Windows Explorer pada komputer

anda dan buka fail C:\Windows\System32\drivers\etc\hosts. Masukkan 2 baris berikut:

<IP server> www.edaftar.com

<IP server> forum.abc.com

Contoh:

10.23.52.235 www.edaftar.com

10.23.52.235 forum.abc.com

Simpan fail tersebut dan buka Internet Explorer. Masukkan url http://www.edaftar.com

dan http://forum.abc.com. Sekiranya tiada masalah pada konfigurasi, URL

http://www.edaftar.com akan memaparkan “Selamat Datang ke Sistem eDaftar”

manakala URL http://forum.abc.com akan memaparkan “Selamat Datang ke Forum

Pengguna”.Dengan itu konfigurasi Virtual Host telah berjaya dilakukan.

d. Apabila Virtual Host digunakan, maka Document Root /var/www/html/ tidak lagi boleh

dicapai dengan menggunakan IP Address server seperti http://10.23.52.235 kerana ia

akan terus redirect ke Virtual Host pertama di dalam fail konfigurasi httpd.conf iaitu

www.edaftar.com di mana direktorinya adalah /var/www/html/edaftar/.

3. Membuat konfigurasi pada setting PHP.

a. Untuk membuat konfigurasi pada setting PHP, fail yang perlu digunakan adalah

/etc/php.ini. Fail ini mengandungi semua konfigurasi yang berkaitan dengan PHP seperti

paparan ralat, memory limit, log file path, session timeout, maximum upload size dan

lain-lain. Setiap kali ada perubahan dibuat pada fail konfigurasi /etc/php.ini ini, server

Apache perlu direstart untuk membolehkan ia berkuatkuasa.

b. Antara konfigurasi PHP yang sering dilakukan oleh pentadbir sistem adalah seperti

berikut:

Parameter Penerangan

max_execution_time = 30 Masa maksimum yang diambil untuk execute script

(dalam saat). Sekiranya script PHP yang digunakan

terlalu kompleks dan memerlukan masa yang panjang

untuk diproses, masa max_execution_time boleh

dilanjutkan lagi bergantung kepada keperluan.

Page 60: Nota Kursus OSS Server Setup

57

display_errors = Off Enable atau disabled paparan ralat/amaran sekiranya

terdapat kesalahan syntax atau function dalam script

PHP.

display_startup_errors = Off Sama seperti display_errors tetapi ralat/amaran yang

dipaparkan adalah error pada permulaan pemprosesan

page seperti kehilangan library function PHP.

Kedua display_errors dan display_startup_errors secara

default disetkan Off. Bagi Development server,

disarankan agar ia ditukar ke On bagi pembangun sistem

dapat mengesan sebarang ralat dalam script ketika

membangunkan sistem. Tetapi apabila di Production

server, parameter tersebut perlu ditukar ke Off agar

sebarang error atau warning tidak dipapar di website.

post_max_size = 8M Saiz maksimum yang dibolehkan untuk membuat

penghantaran data melalui teknik POST. Boleh dilanjut

atau dikurangkan mengikut keperluan data.

file_uploads = On Membenarkan file upload dilakukan melalui PHP script

atau tidak.

upload_max_filesize = 2M Saiz maksimum yang dibenarkan bagi fail yang diupload.

Digunakan sekiranya fail yang hendak diupload lebih

besar daripada 2M maka saiz maksimum boleh

ditinggikan lagi. Akan tetapi sekiranya saiz fail yang

diupload semakin besar, maka masa yang diambil untuk

untuk memproses akan meningkat dan beberapa

parameter lain perlu ditingkatkan juga seperti

session.gc_maxlifetime dan max_execution_time.

session.gc_maxlifetime =

1440

Masa maksimum bagi suatu session (dalam saat). Secara

default, 1440 saat = 24 minit. Setting ini akan

digunapakai oleh semua aplikasi di dalam server yang

sama, tetapi sekiranya setiap aplikasi mahukan masa

session timeout yang berlainan, ia boleh diprogramkan

sendiri di dalam PHP script.

c. Berikut merupakan contoh penggunaan display_errors. Buka fail /etc/php.ini dan tukar:

display_errors = On

Cipta satu fail /var/www/html/edaftar/script_error.php dan masukkan kod berikut:

<?php

$file=fopen("welcome.txt","r");

echo(“Ini adalah test script”);

?>

Page 61: Nota Kursus OSS Server Setup

58

Simpan dan buka Internet Explorer, masukkan URL seperti berikut:

http://www.edaftar.com/script_error.php

Anda akan dapati ia akan mengeluarkan Warning mesej seperti berikut:

Warning: fopen(welcome.txt): failed to open stream: No such file or directory in

/var/www/html/edaftar/script_error.php on line 2 Ini adalah test script

Sekarang buka semula fail /etc/php.ini dan tukar:

display_errors = Off

Restart service Apache dan refresh semula page

http://www.edaftar.com/script_error.php. Anda akan dapati Warning mesej tersebut

sudah tidak dipaparkan.

4. Menambah komponen sokongan pada PHP.

a. Installation PHP yang dilakukan sebelum ini merupakan komponen asas atau PHP Core

yang hanya mengandungi library PHP yang digunakan untuk memproses script PHP yang

biasa digunakan. Namun adakalanya terdapat keperluan untuk menggunakan function

PHP yang jarang digunakan dan memerlukan library tambahan tertentu seperti contoh

GD, Encryption, XML Parser dan lain-lain. Untuk melihat komponen PHP yang telah

diinstall di server, jalankan arahan berikut:

# rpm -qa | grep php- php-gd-5.3.3-1.el5.remi

php-common-5.3.3-1.el5.remi

php-cli-5.3.3-1.el5.remi

php-5.3.3-1.el5.remi

php-mysql-5.3.3-1.el5.remi

php-mcrypt-5.3.3-1.el5.remi

php-pdo-5.3.3-1.el5.remi

php-mbstring-5.3.3-1.el5.remi

b. Buka fail /etc/php.ini dan tukar semula display_errors = On. Cipta satu XML iaitu

/var/www/html/edaftar/note.xml dan masukkan kod berikut:

<?xml version="1.0" encoding="ISO-8859-1"?>

<note>

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

Page 62: Nota Kursus OSS Server Setup

59

Simpan fail dan cipta satu PHP fail iaitu /var/www/html/edaftar/viewxmldom.php dan

masukkan kod berikut:

<?php

$xmlDoc = new DOMDocument();

$xmlDoc->load("note.xml");

print $xmlDoc->saveXML();

?>

Simpan fail dan buka Internet Explorer. Masukkan URL berikut:

http://www.edaftar.com/viewxmldom.php dan didapati error mesej berikut terpapar:

Fatal error: Class 'DOMDocument' not found in

/var/www/html/edaftar/viewxmldom.php on line 2

Error berikut adalah disebabkan komponen library sokongan XML-DOM belum diinstall

lagi ke dalam server. Untuk membuat installation komponen tersebut, jalankan arahan

berikut:

# yum install php-xml

Setelah selesai installation, restart service Apache dan refresh semula site

http://www.edaftar.com/viewxmldom.php. Didapati error mesej sebelum ini sudah

tiada dan output page dapat dipaparkan dengan betul.

c. Terdapat banyak lagi komponen-komponen PHP yang boleh diinstall. Kebiasannya

komponen ini hanya perlu diinstall sekiranya terdapat keperluan pada penggunaan

library tersebut. Berikut merupakan contoh untuk membuat installation komponen

library PHP-Gd secara manual dengan installation yang menggunakan tarball.

d. Buka terminal untuk server yang diinstall menggunakan tarball dan masuk ke direktori

/usr/local/apache/htdocs/. Cipta satu fail bernama testgd.php dan masukkan kod

berikut:

<?php

$img = imagecreate(250,80);

$black = imagecolorallocate($img, 0, 0, 0);

$white = imagecolorallocate($img, 255, 255, 255);

$red = imagecolorallocate($img, 255, 0, 0);

$green = imagecolorallocate($img, 0, 255, 0);

$blue = imagecolorallocate($img, 0, 0, 255);

Page 63: Nota Kursus OSS Server Setup

60

$corners = array(

0 => 190,

1 => 60,

2 => 210,

3 => 20,

4 => 230,

5 => 60,

);

imagerectangle($img, 10, 10, 240, 70, $white);

imagefilledrectangle($img, 20, 20, 60, 60, $red);

imagefilledellipse($img, 90, 40, 40, 40, $blue);

imagefilledellipse($img, 150, 40, 70, 40, $green);

imagefilledpolygon($img, $corners, 3, $white);

header ("Content-type: image/jpeg");

imagejpeg($img);

imagedestroy($img);

?>

Simpan fail dan buka Internet Explorer dan akses fail tersebut menggunakan IP Address

server tersebut contohnya http://10.23.52.80/testgd.php. Anda akan mendapati tiada

sebarang paparan malah mungkin terdapat error HTTP 500 Internal Server Error.Ini

disebabkan komponen PHP-Gd belum diinstall di server tersebut.

e. Buka terminal dan pergi ke direktori /usr/local/src/php-5.3.3. Sebelum mulakan

installation komponen, jalankan arahan berikut untuk install library jpeg dan png seperti

berikut:

# yum install libjpeg-devel libpng-devel

Setelah tamat installation, jalankan arahan berikut:

# ./configure --with-apxs2=/usr/local/apache/bin/apxs --disable-debug --enable-ftp --

enable-inline-optimization --enable-magic-quotes --enable-mbstring --enable-safe-mode

--enable-wddx=shared --enable-xml --with-gettext --with-mysql=/usr/local/mysql --with-

regex=system --with-zlib-dir=/usr/lib --with-gd --with-jpeg-dir=/usr/lib --with-png-

dir=/usr/lib

Perhatikan arahan berikut sama sewaktu hendak membuat pemasangan PHP namun

terdapat pertambahan parameter iaitu “--with-gd --with-jpeg-dir=/usr/lib --with-png-

dir=/usr/lib” di belakangnya. Kemudian jalankan arahan berikut untuk mula installation:

# make && make install

Page 64: Nota Kursus OSS Server Setup

61

f. Setelah lebih kurang 10-15 minit masa installation, restart semula service Apache

dengan arahan berikut:

# /etc/rc.d/init.d/apache restart

Kemudian buka semula Internet Explorer dan akses semula URL

http://10.23.52.80/testgd.php dan lihat hasilnya. Sekiranya page seperti berikut tertera

maka installation komponen PHP-Gd secara manual berjaya dilakukan.

5. Menambah sokongan penghantaran email menggunakan Sendmail.

a. PHP mempunyai keupayaan untuk membolehkan penghantaran Email dibuat melalui

script PHP. Untuk membuat penghantaran email, email server diperlukan dan

penghantaran email akan dibuat melalui program Sendmail iaitu Mail Transport Ageng

(MTA) yang kebiasaannya diinstall sekali di dalam server Linux. Namun Sendmail perlu

dikonfigurasi terlebih dahulu sebelum boleh digunakan untuk penghantaran email.

b. Bagi menggunakan perkhidmatan Email Server bagi membuat penghantaran email,

kebenaran perlu dimohon dahulu kepada Email Administrator agar email yang dihantar

daripada server dapat dilepaskan dan tidak dianggap sebagai SPAM atau JUNK mail.

c. Bagi membuat konfigurasi Sendmail, install dahulu package sendmail-cf dengan

menggunakan arahan berikut:

# yum install sendmail-cf

Setelah tamat installation buka fail /etc/mail/sendmail.mc dan cari baris berikut:

dnl define(`SMART_HOST', `smtp.your.provider')dnl

Page 65: Nota Kursus OSS Server Setup

62

Buang perkataan dnl di depan baris tersebut dan gantikan perkataan

“smtp.your.provider” dengan IP Address atau DNS Email Server yang terdapat di

organisasi anda, seperti contoh mail.abc.com:

define(`SMART_HOST', `mail.abc.com')dnl

Simpan fail dan jalankan arahan berikut dan restart service Sendmail:

# make -C /etc/mail

# service sendmail restart

Untuk membuat ujian penghantaran email menggunakan Sendmail, ikut arahan berikut:

# mail [email protected] � Ganti dengan email anda

Subject: Test Mail [Enter]

Test Sending Mail from Training Server [Enter]

[Ctrl-D]

Cc: [Enter]

d. Sekiranya tiada masalah dan pentadbir email sudah meluluskan IP Address server yang

digunakan untuk menghantar email, anda akan mendapat email testing yang baru

dihantar tersebut. Untuk menguji samada PHP boleh melakukan penghantaran email,

cipta fail /var/www/html/edaftar/testmail.php dan masukkan kod berikut:

<?php

// Gantikan dengan email anda

$to="[email protected]";

// Email subject

$subject="Test";

// Daripada

$header="Server Setup Training";

// Mula tulis mesej

$message="Hello \r\n";

$message.="This is test\r\n";

$message.="Test again ";

// Proses penghantaran email

$sentmail = mail($to,$subject,$message,$header);

echo("Sila semak Inbox Email $to");

?>

Page 66: Nota Kursus OSS Server Setup

63

e. Simpan fail dan buka fail Internet Explorer, masukkan URL

http://www.edaftar.com/testmail.php. Semak Inbox Email anda, sekiranya terdapat test

email tersebut maka penghantaran email melalui PHP berjaya dilakukan.

6. Membuat konfigurasi pada setting MySQL dan membuat konfigurasi user privileges pada

pangkalan data MySQL menggunakan PhpMyAdmin.

a. Database MySQL juga boleh dikonfigurasi seperti port no., socket path, buffer size dan

lain-lain. Fail konfigurasi bagi database MySQL terletak di /etc/my.cnf. Bagi database

MySQL yang dibangunkan menggunakan Yum Install atau RPM Install, konfigurasi telah

dibuat secara automatik dan jika dilihat dalam fail /etc/my.cnf, tidak banyak parameter

yang dipaparkan kerana parameter yang tiada disitu akan mengambil value default yang

diberikan oleh server.

b. Untuk melihat parameter konfigurasi yang lebih banyak, buka fail /etc/my.cnf di server

yang dibangun menggunakan Tarball. Berikut adalah beberapa parameter yang perlu

diketahui dan kadangkala diubah.

Parameter Penerangan

[mysqld]

port = 3306

Port No. default yang digunakan untuk server MySQL

menghoskan servicenya.

socket = /tmp/mysql.sock Path bagi socket MySQL yang digunakan oleh

program/aplikasi lain untuk connect ke database MySQL.

skip-networking Dengan function ini, database MySQL hanya boleh

diakses dari aplikasi yang dihoskan pada local IP Address.

Sekiranya database MySQL ini dihos berasingan dengan

server aplikasi, maka database ini perlu dibuka ke

network agar server aplikasi dapat mengakses database

tersebut. Untuk membolehkan capaian terus ke

database daripada tempat lain, comment baris tersebut:

# skip-networking

datadir=/var/lib/mysql Path di mana fail database disimpan.

Setiap perubahan yang dibuat dalam fail my.cnf memerlukan pentadbir pangkalan data

mengrestart service MySQL agar perubahan dapat dikuatkuasakan.

c. Untuk membuat konfigurasi user priveleges pada database MySQL, kita akan

menggunakan tools yang telah diinstall sebelum ini iaitu PhpMyAdmin. Tetapi sebelum

itu Apache perlu dilakukan sedikit dikonfigurasi agar PhpMyAdmin boleh dibuka

daripada komputer lain selain dari server itu sendiri.

d. Buka terminal di server yang diinstall menggunakan Yum Install dan buka fail

/etc/httpd/conf.d/phpMyAdmin.conf. Cari bahagian berikut:

Page 67: Nota Kursus OSS Server Setup

64

<Directory /usr/share/phpMyAdmin/>

order deny,allow

deny from all

allow from 127.0.0.1

allow from ::1

</Directory>

Gantikan syntax tersebut dengan syntax berikut:

<Directory /usr/share/phpMyAdmin/>

order deny,allow

allow from all

</Directory>

Restart service Apache dengan # service httpd restart. Kemudian buka Internet Explorer

di komputer anda dan buka URL http://www.edaftar.com/phpmyadmin.Akan tetapi

kemungkinan berlaku masalah login sekiranya menggunakan Internet Explorer, maka

buka URL tersebut menggunakan Mozilla Firefox.Login menggunakan user root dan

katalaluan yang telah disetkan sebelum ini.

e. Setelah login ke PhpMyAdmin, cipta dahulu sebuah database baru bernama aplikasidb.

Page 68: Nota Kursus OSS Server Setup

65

f. Cipta table baru bernama maklumatstaffdan Number of Field = 5. Kemudian masukkan

butiran berikut untuk structure bagi setiap field dan kemudian Simpan:

Field Type Length/Values Index A_I (Auto Inc.)

staffid INT PRIMARY X

namastaff VARCHAR 100

bahagian VARCHAR 50

jantina CHAR 1

tarikhlahir DATE

g. Masukkan sedikit data ke dalam table maklumat staff seperti contoh di bawah

menggunakan tab Insert. Setelah data selesai dimasukkan, tekan butang Go.

StaffID Namastaff Bahagian Jantina TarihkLahir

Tidak perlu Ali BPTM L 1/1/1980

Tidak perlu Fatimah BSWP P 26/11/1984

h. Untuk browse data-data yang terdapat dalam table maklumatstaff, tekan pada tab

Browse.

i. Sekarang kita akan buat satu user database MySQL baru dan setkan privileges bagi user

tersebut ke database aplikasidb. Tekan icon Home di atas sebelah kiri dan tekan tab

Privileges. Kemudian tekan link “Add a new User” di bawah page tersebut. Masukkan

maklumat user tersebut seperti contoh dan tekan butang Go bila sudah selesai:

Page 69: Nota Kursus OSS Server Setup

66

Username: Use text field sysadmin

Host: Any host

Password: Use text field [masukkan katalaluan]

Re-type: [masukkan katalaluan]

j. Pergi ke bahagian Database-specific privileges dan pada pilihan “Add privileges on the

following database:”, pilih database yang hendak diberi privileges kepada sysadmin iaitu

aplikasidb. Kemudian edit privileges bagi user sysadmin bagi database aplikasidb

mengikut kesesuaian, seperti contoh berikut semua kotak ditandakan kecuali pada

bahagian Administration kerana privileges tersebut lebih menjurus kepada tugas

Pentadbir Pangkalan Data atau DBA Admin. Setelah selesai menanda privileges, tekan

butang Go.

k. Tekan semula tab Privileges dan akan didapati user sysadmin tersenarai di senarai

tersebut. Tekan icon Action – Edit Privileges bagi user sysadmin. Pada page Edit

Privileges, scroll ke bawah pada bahagian “Change Login Information / Copy User”. Pada

combo box Host, pilih Local dan tekan butang Go. Selepas itu scroll ke bahagian yang

sama sekali lagi dan pada combo box Host, kali ini pilih “Use text field:” dan masukkan

“127.0.0.1” pada text box di sebelahnya dan tekan Go.

l. Tekan semula tab Privileges dan akan didapati terdapat 3 baris bagi pengguna sysadmin,

sama seperti user root. Sekarang keluar dan logout daripada aplikasi PhpMyAdmin.

Page 70: Nota Kursus OSS Server Setup

67

m. Pada login page PhpMyAdmin, login sebagai user sysadmin yang baru dicipta tadi dan

masukkan katalaluan.

Page 71: Nota Kursus OSS Server Setup

68

n. Setelah login masuk sebagai user sysadmin, didapati database yang boleh dilihat hanya

aplikasidb dan information_schema. Ini kerana database aplikasidb telah diberi

privileges kepada user sysadmin manakala table information_schema hanya merupakan

database informasi mengenai MySQL. User sysadmin ini juga tidak boleh mencipta

database baru dan mempunyai function Database Administration yang terhad.

o. Dengan membuat pengguna database lain dan mengkonfigurasi privileges database

kepada pengguna database tertentu, pengurusan database dapat dikawalselia dengan

lebih terurus.Hanya pengguna yang sah kepada database itu sahaja dapat melihat dan

mengurus database mereka sendiri. Ini juga dapat mengelakkan daripada penggunaan

pengguna database DBA Admin iaitu root secara berleluasa dan tidak terkawal.Setiap

aplikasi yang dibangunkan oleh pembangun sistem boleh membuat connection ke

databasenya menggunakan user mereka tersendiri.

7. Membuat konfigurasi Network Time Protocol (NTP) client.

a. Bagi memastikan masa dan tarikh pada server sentiasa tepat dengan masa yang

sebenar, NTP client perlu dikonfigurasi supaya masa server boleh disynchronize dengan

masa di NTP server. Bagi contoh konfigurasi NTP, kita akan menggunakan NTP server

yang sedia ada di MOF.

b. Jalankan arahan berikut untuk membuat installation NTP. Kemungkinan package berikut

telah diinstall di server tetapi sekiranya tiada lagi maka package NTP akan diinstall.

# yum install ntp

Page 72: Nota Kursus OSS Server Setup

69

c. Semak masa dan tarikh semasa server dengan menjalankan arahan berikut:

# date

Mon Nov 15 15:37:54 MYT 2010

d. Kemudian jalankan arahan berikut untuk mengupdate tarikh dan masa daripada NTP

Server sedia ada, contohnya 10.23.59.55.

# ntpdate 10.23.59.55

15 Nov 15:37:10 ntpdate[7194]: adjust time server 10.23.59.55 offset 0.016233 sec

e. Semak masa dan tarikh semasa server semula dengan arahan # date untuk melihat sama

ada masa dan tarikh telah berubah mengikut waktu server. Bagi memastikan masa

server sentiasa sycnchronize dengan masa NTP Server, masukkan arahan berikut ke

dalam fail /etc/crontab dan jadualkan untuk menjalankan arahan tersebut setiap hari

seperti contoh pada pukul 12:01 malam setiap hari:

01 00 * * * root ntpdate 10.23.59.55

Page 73: Nota Kursus OSS Server Setup

70

MODUL 6: PENGUJIAN WEB SERVER

1. Keupayaan memproses kod HTML

a. Setelah semua installation dan konfigurasi server selesai dibuat, kita akan membuat

beberapa pengujian mudah bagi memastikan server dapat berfungsi dengan baik. Untuk

pengujian pertama, kita akan menguji samada server yang dibangunkan dapat

memproses kod HTML (Hypertex Markup Language) yang biasa.

b. Cipta satu fail di /var/www/html/edaftar/testhtml.html dan masukkan kod berikut:

<html>

<head>

<title>This is HTML Test Page</title>

</head>

<body bgcolor="white" text="blue">

<h2>Hello World!</h2>

<b>Selamat datang ke Kursus Server Setup (Perisian OSS)...</b>

<hr>

<p>Pengujian HTML Berjaya dilaksanakan!</p>

<img src="http://www.rangsanganekonomi.abc.com/images/M_images/1malaysia.png">

</body>

</html>

c. Melalui Internet Explorer, buka URL http://www.edaftar.com/testhtml.html. Sekiranya

page seperti berikut dipaparkan maka pengujian kod HTML berjaya.

Page 74: Nota Kursus OSS Server Setup

71

2. Keupayaan memproses kod PHP

a. Kali ini kita akan membuat menguji samada server yang dibangunkan boleh memproses

kod asas PHP. Cipta fail di /var/www/html/edaftar/testphp.php dan masukkan kod

berikut:

<html>

<head>

<title>This is PHP Test Page</title>

</head>

<body>

<?php

echo("<h2>Pengujian Kod PHP</h2>");

echo("<b>Kalendar PHP</b>");

//This gets today's date

$date =time () ;

//This puts the day, month, and year in seperate variables

$day = date('d', $date) ;

$month = date('m', $date) ;

$year = date('Y', $date) ;

//Here we generate the first day of the month

$first_day = mktime(0,0,0,$month, 1, $year) ;

//This gets us the month name

$title = date('F', $first_day) ;

//Here we find out what day of the week the first day of the month falls on $day_of_week = date('D', $first_day) ;

//Once we know what day of the week it falls on, we know how many blank days occure before it. If the first day of the

week is a Sunday then it would be zero

switch($day_of_week){

case "Sun": $blank = 0; break;

case "Mon": $blank = 1; break;

case "Tue": $blank = 2; break;

case "Wed": $blank = 3; break;

case "Thu": $blank = 4; break;

case "Fri": $blank = 5; break;

case "Sat": $blank = 6; break;

}

//We then determine how many days are in the current month

$days_in_month = cal_days_in_month(0, $month, $year) ;

//Here we start building the table heads

echo "<table border=1 width=294>";

echo "<tr><th colspan=7> $title $year </th></tr>";

echo "<tr><td width=42>S</td><td width=42>M</td><td

width=42>T</td><td width=42>W</td><td width=42>T</td><td

width=42>F</td><td width=42>S</td></tr>";

//This counts the days in the week, up to 7

$day_count = 1;

echo "<tr>";

//first we take care of those blank days

while ( $blank > 0 )

{

echo "<td></td>";

$blank = $blank-1;

$day_count++;

}

Page 75: Nota Kursus OSS Server Setup

72

//sets the first day of the month to 1

$day_num = 1;

//count up the days, untill we've done all of them in the month

//sets the first day of the month to 1

$day_num = 1;

//count up the days, untill we've done all of them in the month

while ( $day_num <= $days_in_month )

{

echo "<td> $day_num </td>";

$day_num++;

$day_count++;

//Make sure we start a new row every week

if ($day_count > 7)

{

echo "</tr><tr>";

$day_count = 1;

}

}

//Finaly we finish out the table with some blank details if needed

while ( $day_count >1 && $day_count <=7 )

{

echo "<td> </td>";

$day_count++;

}

echo "</tr></table>";

?>

</body></html>

b. Melalui Internet Explorer, buka URL http://www.edaftar.com/testphp.php. Sekiranya

page yang mengandungi calendar seperti berikut dipaparkan maka pengujian kod PHP

berjaya. Sekiranya terdapat warning mesej pada page ini, tukar display_errors = Off di

/etc/php.ini dan restart service Apache.

Page 76: Nota Kursus OSS Server Setup

73

3. Keupayaan memproses capaian di antara PHP dan pangkalan data MySQL

a. PHP membolehkan integrasi dengan database MySQL, di mana ia boleh digunakan untuk

memapar data, memasukkan data, mengemaskini data dan memadam data di database

MySQL. Kita akan cuba membuat pengujian untuk memproses capaian ke MySQL

menggunakan kod PHP. Cipta fail di /var/www/html/edaftar/testphpmysql.php dan

masukkan kod berikut:

<?php

// Database configuration

$dbhost = 'localhost';

$dbname = 'aplikasidb';

$dbuser = 'root';

$dbpasswd = 'zaq12wsx'; // Gantikan dengan katalaluan database user root anda

$conn = @mysql_connect("$dbhost","$dbuser","$dbpasswd")

or die("Err:Conn");

$rs = @mysql_select_db("$dbname",$conn)

or die("Err:D");

?>

<html>

<head>

<title>This is PHP/MySQL Test Page</title>

</head>

<body>

<h2>Pengujian Integrasi PHP dan MySQL</h2>

<p>Paparan data Database <b>aplikasidb</b> - Table <b>maklumatstaff</b></p>

<table border="1">

<tr>

<td><b>Staff ID</b></td>

<td><b>Nama Staff</b></td>

<td><b>Bahagian</b></td>

<td><b>Jantina</b></td>

<td><b>Tarikh Lahir</b></td>

</tr>

<?php

$sql = "SELECT * FROM maklumatstaff";

$rs = mysql_query($sql,$conn);

while($row = mysql_fetch_array($rs))

{

$staffid = trim($row['staffid']);

$namastaff = trim($row['namastaff']);

$bahagian = trim($row['bahagian']);

$jantina = trim($row['jantina']);

$tarikhlahir = trim($row['tarikhlahir']);

?>

<tr>

<td><?php echo($staffid); ?></td>

<td><?php echo($namastaff); ?></td>

<td><?php echo($bahagian); ?></td>

<td><?php echo($jantina); ?></td>

<td><?php echo($tarikhlahir); ?></td>

</tr>

<?php

}

?>

</table></body></html>

Page 77: Nota Kursus OSS Server Setup

74

b. Buka Internet Explorer dan masukkan URL http://www.edaftar.com/testphpmysql.php.

Sekiranya page seperti berikut dipaparkan maka pengujian integrasi PHP dan MySQL

berjaya.

4. Keupayaan menyokong perisian sumber terbuka seperti Joomla

a. Aplikasi Joomla merupakan perisian sumber terbuka yang berasaskan PHP dan MySQL.

Ia merupakan sebuah CMS (Content Management System) yang popular buat masa ini.

Dengan Joomla, pembangun sistem boleh mereka bentuk laman web dengan cepat dan

mudah dan telah mempunyai banyak fungsi seperti Menu, penghantaran Artikel, Text

Editor, User Authentication, Pautan dan sebagainya. Oleh itu kita akan menguji samada

server yang dibangunkan boleh menyokong aplikasi Joomla ini.

b. Sebelum itu pergi ke direktori /var/www/html dan cipta satu direktori baru iaitu joomla.

Masuk ke direktori /var/www/html/joomla tersebut dan jalankan arahan berikut untuk

download fail package Joomla:

# wget http://joomlacode.org/gf/download/frsrelease/13105/57239/Joomla_1.5.22-Stable-

Full_Package.tar.gz

Selesai download jalankan arahan berikut untuk extract fail package:

# tar zxf Joomla_1.5.22-Stable-Full_Package.tar.gz

c. Selesai extract, buka fail /etc/httpd/conf/httpd.conf dan masukkan syntax berikut di

baris terakhir untuk menambah Virtual Host Joomla:

<VirtualHost *:80>

ServerName joomla.abc.com

DocumentRoot /var/www/html/joomla

</VirtualHost>

Page 78: Nota Kursus OSS Server Setup

75

Simpan fail dan restart service Apache dengan arahan # service httpd restart.

d. Kemudian pada komputer anda, buka fail C:\Windows\System32\drivers\etc\hosts dan

masukkan baris berikut dan simpan:

10.23.52.235 joomla.abc.com

e. Kemudian dengan menggunakan PhpMyAdmin, cipta satu database baru bernama

‘joomladb’ dan cipta user database baru bernama ‘joomla123’ dan tetapkan katalaluan.

Beri priveleges database ‘joomladb’ kepada user ‘joomla123’. (Rujuk Modul 5: Perkara 6

di mukasurat 66)

f. Buka Internet Explorer dan masukkan URL http://joomla.abc.com. Sekiranya tiada

sebarang masalah, Installation Page bagi Joomla akan dipaparkan. Pilih Language English

dan klik Next.

g. Pada bahagian Pre-Installation Check, semua parameter berkemungkinan Yes kecuali

satu No iaitu configuration.php writeable. Di terminal, pergi ke directory

/var/www/html dan jalankan arahan berikut untuk menukar file permission ke mode

777:

# chmod 777 -R joomla

Page 79: Nota Kursus OSS Server Setup

76

Pergi semula ke Joomla installation dan tekan butang Check Again dan parameter

configuration.php writeable telah menjadi Yes. Tekan Next.

h. Pada bahagian License, tekan Next. Pada bahagian Database Configuration, masukkan

maklumat seperti berikut dan setelah selesai tekan Next:

Database Type: mysql

Host Name: localhost

Username: joomla123

Password: [kalalaluan bagi database user joomla123]

Database Name: joomladb

Page 80: Nota Kursus OSS Server Setup

77

i. Pada bahagian FTP Configuration tekan Next. Pada bahagian Main Configuration

masukkan maklumat seperti berikut:

Site Name: My Joomla Testing Site

Your Email: [email anda]

Admin Password: [katalaluan admin Joomla]

Confirm Admin Password: [katalaluan admin Joomla]

Install Default Sample Data: Tekan butang Install Sample Data

Tekan Next setelah selesai. Setelah itu bahagian Finish akan dipaparkan dan sedikit

makluman akan diberikan. Guna Terminal dan masuk ke direktori

/var/www/html/joomla dan jalankan arahan berikut untuk memadam direktori

Installation sebagaimana yang dimaklumkan di bahagian Finish itu tadi:

# rm -Rf installation

j. Setelah itu pergi semula ke page Joomla Installation dan tekan butang Site untuk masuk

ke main site Joomla. Sekiranya page seperti berikut dipaparkan maka pengujian untuk

menyemak web server yang dibangunkan menyokong perisian Joomla berjaya.

TEKAN

Page 81: Nota Kursus OSS Server Setup

78

5. Menguji masa capaian laman web menggunakan Apache Benchmark tools

a. Apache Benchmark atau Apachebench merupakan tools yang boleh digunakan untuk

menguji masa capaian sesuatu laman web dan mengetahui sejauh mana prestasi web

server yang dibangunkan.Ia juga boleh mengsimulasi seberapa banyak capaian

dilakukan serentak bagi menggambarkan keadaan sebenar.

b. Sebelum itu pada server yang dibangun menggunakan RPM Install, tambah baris berikut

pada fail /etc/hosts:

10.23.52.235 www.edaftar.com� Masukkan IP server dibangun dengan Yum Install

Kemudian jalankan contoh arahan Apachebench berikut bagi melihat masa capaian ke

laman web www.edaftar.com:

# ab -n 10 -c 2 http://www.edaftar.com/

Penerangan parameter:

-n = Bilangan request berturutan yang akan dihantar oleh Apachebench ke laman web

www.edaftar.com, contohnya 10 request.

-c = Bilangan concurrent request yang dihantar bagi setiap request n, dalam contoh ini

terdapat 2 concurrent request bagi setiap 10 request. Oleh itu jumlah keseluruhan

request yang dihantar ke laman web tersebut adalah 20.

Contoh hasil keputusan Apachebench adalah seperti berikut:

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Page 82: Nota Kursus OSS Server Setup

79

Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.edaftar.com (be patient).....done

Server Software: Apache/2.2.3

Server Hostname: www.edaftar.com

Server Port: 80

Document Path: /

Document Length: 43 bytes

Concurrency Level: 2

Time taken for tests: 0.16652 seconds

Complete requests: 10

Failed requests: 0

Write errors: 0

Total transferred: 2340 bytes

HTML transferred: 430 bytes

Requests per second: 600.53 [#/sec] (mean)

Time per request: 3.330 [ms] (mean)

Time per request: 1.665 [ms] (mean, across all concurrent requests)

Transfer rate: 120.11 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 0 0 0.9 0 2

Processing: 1 2 1.1 2 4

Waiting: 0 1 1.2 2 4

Total: 1 2 2.0 2 6

Percentage of the requests served within a certain time (ms)

50% 2

66% 2

75% 2

80% 6

90% 6

95% 6

98% 6

99% 6

100% 6 (longest request)

Jika dilihat hasil keputusan pada baris:

Time per request: 3.330 [ms] (mean)

Ini bermakna sekiranya terdapat 10 request dan 2 concurrent request, masa purata yang

diambil untuk mencapai laman web tersebut adalah 3.330milisaat.Malah daripada hasil

keputusan, kita boleh mengetahui web server dan versi yang digunakan serta port no.

yang digunakan.

Page 83: Nota Kursus OSS Server Setup

80

c. Kebiasaannya pentadbir sistem akan menggunakan Apachebench untuk membuat web

server penetration test. Bagi laman web yang dijangka akan menerima pelawat yang

banyak sekaligus, mereka akan menguji samada web server dan laman web tersebut

boleh atau tidak menerima kunjungan yang begitu banyak, mungkin sehingga 1000

request dan 20 concurrent request dalam masa yang sama. Apachebench membolehkan

kita membuat simulasi dan boleh memberi gambaran sejauh mana prestasi web server

kita apabila menerima kunjungan yang banyak. Kali ini cuba membuat ujian yang sama

dengan 1000 request dan 20 concurrent request.

# ab -n 1000 -c 20 http://www.edaftar.com/

Time per request: 10.520 [ms] (mean)

Daripada ujian tersebut, didapati masa capaian purata bagi 1000 request dan 20

concurrent request adalah 10.52 milisaat.

Kita juga boleh membuat ujian pada laman web lain seperti www.google.com,

www.tm.net.my untuk mengetahui prestasi laman web tersebut.

6. Menyemak statistik capaian laman web menggunakan Awstats

a. Awstats merupakan sebuah tools yang boleh digunakan untuk membuat analisa dan

laporan terhadap statistik pelawat dan capaian pada web server. Ia beroperasi dengan

membaca fail log capaian Apache Web Server iaitu /var/log/httpd/access_log. Untuk

membuat installation Awstats, ikut arahan berikut (gunakan server yang dibangun

menggunakan Yum Install):

# yum install awstats

Setelah installation tamat, buka fail /etc/httpd/conf.d/awstats.conf dan edit baris

berikut:

Allow from 127.0.01

kepada:

Allow from all

Simpan fail tersebut dan copy fail /etc/awstats/awstats.model.conf ke fail

/etc/awstats/awstats.[nama domain URL].conf, seperti contoh

/etc/awstats/awstats.www.edaftar.com.conf. Cari baris yang mengandungi perkataan

berikut:

SiteDomain="localhost.localdomain"

dan gantikan dengan URL laman web di server tersebut.

Page 84: Nota Kursus OSS Server Setup

81

SiteDomain="www.edaftar.com"

Cari pula baris berikut:

HostAliases="localhost 127.0.0.1"

Sekiranya domain URL tersebut mempunyai server aliases seperti yang telah ditetapkan

di Virtual Hosts Apache, gantikan dengan aliases tersebut seperti:

HostAliases="edaftar.com"

Sekiranya tiada, baris tersebut boleh dikomenkan sahaja. Simpan fail tersebut.

b. Statistik Awstats perlu dikemaskini setiap masa bagi menjana graf dan laporan statistik.

Secara default ia dikemaskini setiap 1 jam sekali dengan menggunakan cronjob. Untuk

mengemaskini statistik AwStats gunakan arahan berikut:

# /usr/share/awstats/tools/awstats_updateall.pl now-configdir="/etc/awstats"-

awstatsprog="/usr/share/awstats/wwwroot/cgi-bin/awstats.pl"

c. Restart semula service Apache dengan arahan:

# service httpd restart

Kemudian buka Internet Explorer dan masukkan URL berikut untuk melihat statistik dan

laporan capaian bagi laman web www.edaftar.com:

http://www.edaftar.com/awstats/awstats.pl?config=www.edaftar.com

Sekiranya laman web seperti berikut tertera bermakna installation Awstats telah

berjaya.

Page 85: Nota Kursus OSS Server Setup

82

d. Dengan menggunakan Awstats, pelbagai statistik boleh dilihat seperti Masa Capaian

mengikut harian, mingguan dan bulanan, pelawat berasal daripada Negara mana,

tempoh lawatan, Sistem Operasi yang digunakan pelawat, pelayar Internet yang

digunakan pelawat dan lain-lain.

7. Menyemak servis dan server yang up menggunakan Nmap

a. NMAP merupakan satu tools yang berguna bagi pentadbir system dan rangkaian untuk

menyemak IP Address yang aktif serta boleh membuat port scan bagi mengesan service

yang sedang dibuka kepada rangkaian. Selalunya ia digunakan untuk tujuan

troubleshooting bagi mengesan samada service di sesuatu server itu dibuka kepada

rangkaian atau tidak.Ia juga berguna bagi meningkatkan keselamatan sesuatu server.

b. Bagi menggunakan Nmap, install dahulu package tersebut dengan arahan berikut:

# yum install nmap

Setelah installation tamat, cuba jalankan arahan berikut:

# nmap localhost

Page 86: Nota Kursus OSS Server Setup

83

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2010-11-11 00:33 MYT

Interesting ports on localhost.localdomain (127.0.0.1):

Not shown: 1673 closed ports

PORT STATE SERVICE

22/tcp open ssh

25/tcp open smtp

80/tcp open http

111/tcp open rpcbind

631/tcp open ipp

734/tcp open unknown

3306/tcp open mysql

Nmap finished: 1 IP address (1 host up) scanned in 0.059 seconds

Berdasarkan result tersebut dapat diketahui port dan service mana yang telah dibuka

kepada rangkaian untuk membuat capaian ke server tersebut seperti port 22 (ssh), 25

(smtp), 80 (http), 3306 (mysql) dan sebagainya. Perhatikan apabila membuat Nmap

pada localhost, ia akan menunjukkan semua port yang dibuka untuk localhost itu sendiri

tetapi tidak semestinya ia dibuka kepada luar. Cuba jalankan arahan Nmap tetapi

menggunakan IP server tersebut:

# nmap 10.23.52.235

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2010-07-22 22:46 MYT

Interesting ports on 10.23.52.235:

Not shown: 1675 closed ports

PORT STATE SERVICE

22/tcp open ssh

80/tcp open http

111/tcp open rpcbind

734/tcp open unknown

3306/tcp open mysql

Nmap finished: 1 IP address (1 host up) scanned in 0.310 seconds

Daripada ujian tersebut didapati 2 port yang jika discan menggunakan localhost tiada

iaitu port 25 dan 734.Ia berkemungkinan ditutup oleh Firewall atau konfigurasi service

itu sendiri.

c. Terdapat pelbagai kegunaan Nmap yang biasa digunakan oleh Pentadbir Sistem dan

Rangkaian, antaranya adalah untuk membuat IP Range scanning untuk menyemak hos

yang aktif dalam sesuatu IP Range. Berikut adalah contoh arahan untuk scan IP Range di

antara 10.23.59.1 hingga 10.23.59.255.

Page 87: Nota Kursus OSS Server Setup

84

# nmap -sP 10.23.59.0/24

atau

# nmap -sP 10.23.59.1-255

Output daripada arahan tersebut akan dipaparkan IP Address bagi hos yang aktif serta

MAC Addressnya seperti contoh:

Host 10.23.59.1 appears to be up.

MAC Address: 00:18:6E:CA:72:D4 (3COM Europe)

Host 10.23.59.2 appears to be up.

MAC Address: 00:21:5D:CD:22:86 (Unknown)

d. Untuk mengetahui lebih mendalam mengenai hos yang discan seperti port yang dibuka

dan version service yang dibuka, guna arahan berikut:

# nmap -sV 172.16.1.8

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2010-07-22 23:13 MYT

Interesting ports on 10.23.52.235:

Not shown: 1675 closed ports

PORT STATE SERVICE VERSION

22/tcp open ssh OpenSSH 4.3 (protocol 2.0)

80/tcp open http Apache httpd 2.2.3 ((CentOS))

111/tcp open rpcbind 2 (rpc #100000)

734/tcp open status 1 (rpc #100024)

3306/tcp open mysql MySQL 5.1.52

Nmap finished: 1 IP address (1 host up) scanned in 12.343 seconds

e. Daripada hasil keputusan IP scan tersebut, didapati port 111 dan 734 dibuka. Kita akan

cuba tutup port tersebut daripada diakses daripada rangkaian dengan menggunakan

IPTables. Masukkan arahan seperti berikut di fail /etc/sysconfig/iptables dan masukkan

baris berikut di bawah baris:

-A FORWARD -j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j DROP

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 734 -j DROP

Simpan fail tersebut dan restart service IPTables. Sekarang jalankan semula arahan

berikut dan didapati STATE bagi port 111 dan 734 telah berubah daripada open ke

filtered.

# nmap -sV 172.16.1.8

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2010-07-22 23:39 MYT

Interesting ports on 172.16.1.8:

Page 88: Nota Kursus OSS Server Setup

85

Not shown: 1675 closed ports

PORT STATE SERVICE VERSION

22/tcp open ssh OpenSSH 4.3 (protocol 2.0)

80/tcp open http Apache httpd 2.2.3 ((CentOS))

111/tcp filtered rpcbind

734/tcp filtered unknown

3306/tcp open mysql MySQL 5.1.52

Nmap finished: 1 IP address (1 host up) scanned in 8.360 seconds

f. Terdapat pelbagai lagi cara menggunakan Nmap, untuk maklumat lanjut boleh merujuk

di laman web http://nmap.org/bennieston-tutorial/.

Page 89: Nota Kursus OSS Server Setup

86

SEKIAN, TERIMA KASIH