Anda di halaman 1dari 89

Nota Kursus

SERVER SETUP (PERISIAN OSS)

Disediakan Oleh:

MOHD SAFFUAN BIN SUNTONG


RAZALI BIN MOHAMAD
Bahagian Pengurusan Teknologi Maklumat
Perbendaharaan Malaysia
Isi Kandungan
Hari Isi Kandungan Modul Muka Tempoh
Surat (Jam)
1 Penyediaan Sistem Pengoperasian
Membuat pemasangan Sistem Pengoperasian server dengan 1 3 jam
menggunakan Centos Linux version 5.5. Topik yang terlibat:
a) Membuat hard disk partition. 4
b) Membuat konfigurasi rangkaian pada server. 7
c) Membuat pemasangan perisian dan aplikasi. 10
d) Membuat pemasangan aplikasi Firewall. 12
e) Mencipta pengguna server. 15
f) Menggunakan Desktop Linux. 16

Arahan Asas Linux


Mempelajari arahan-arahan asas Linux menggunakan terminal. Topik 3 jam
yang terlibat adalah:
a) Mengurus struktur direktori, file manipulation dan arahan 20
biasa lain.
b) Mengurus pengguna, kumpulan pengguna dan access right. 23
c) Membuat konfigurasi parameter server seperti nama server 26
dan rangkaian.
d) Menggunakan arahan tools tertentu untuk menyemak keadaan 28
server.
e) Membangunkan shell script ringkas dan penggunaan cronjob. 31

2 Penyediaan Web Server


Membuat pemasangan web server Apache 2 di server serta sokongan 3 jam
PHP. Topik yang terlibat:
a) Memasang dan mengkonfigurasi web server Apache dan PHP 34
menggunakan kaedah automatik Yum Install.
b) Memasang dan mengkonfigurasi web server Apache dan PHP 35
menggunakan kaedah semi-auto RPM Install.
c) Memasang dan mengkonfigurasi web server Apache, PHP dan 37
MySQL menggunakan kaedah manual Tarball.

Penyediaan Pangkalan Data


Membuat pemasangan pangkalan data MySQL di server. Topik yang 3 jam
terlibat:
a) Memasang pangkalan data MySQL menggunakan kaedah 42
automatik Yum Install.
b) Memasang pangkalan data MySQL menggunakan kaedah semi- 43
auto RPM Install.
c) Menggunakan arahan MySQL asas di terminal. 44
d) Membuat pemasangan PhpMyAdmin. 48
3 Konfigurasi Tambahan Pada Server
Melaksanakan konfigurasi tambahan pada web server Apache, PHP dan 3 jam
MySQL. Topik yang terlibat:
a) Melaksanakan konfigurasi Firewall Iptables. 52
b) Membuat konfigurasi virtual host pada web server Apache. 55
c) Membuat konfigurasi pada setting PHP. 56
d) Menambah komponen sokongan pada PHP. 58
e) Menambah sokongan penghantaran email menggunakan 61
Sendmail.
f) Membuat konfigurasi pada setting MySQL dan membuat 63
konfigurasi user privileges pada pangkalan data MySQL
menggunakan PhpMyAdmin.
g) Membuat konfigurasi Network Time Protocol (NTP) client. 68

Pengujian Web Server


Melaksanakan pengujian pada web server agar aplikasi dapat berjalan 3 jam
dengan baik. Antara yang diuji adalah:
a) Keupayaan memproses kod HTML. 70
b) Keupayaan memproses kod PHP. 71
c) Keupayaan memproses capaian di antara PHP dan pangkalan 73
data MySQL.
d) Keupayaan menyokong perisian sumber terbuka seperti 74
Joomla.
e) Menguji masa capaian laman web menggunakan Apache 78
Benchmark tools.
f) Menyemak statistik capaian laman web menggunakan Awstats. 80
g) Menyemak servis dan server yang up menggunakan Nmap. 82
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.

1
d. Pilih Next.

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

2
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.

3
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.

4
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 Jenis Saiz Nota
point/RAID/ Filesystem
Volume
sda1 /boot Ext3 100MB Kebiasaannya sistem akan mengambil
100MB sahaja bagi direktori boot.
sda2 VolGroup00 LVM Baki saiz Baki hard disk dijadikan LVM (Logical
partition Volume) dan digunakan oleh lain-lain
struktur direktori dan swap memory.

Bagi LVM pula, secara default akan dilaksanakan seperti berikut:

Volume Mount Jenis Saiz Nota


Group point/RAID Filesystem
/ Volume
VolGroup01 swap 2GB atau Beberapa volume space akan
lain diperuntukkan bagi dijadikan swap
memory. Kebiasaannya saiz swap
memory adalah 2x saiz fizikal memory
(RAM).
VolGroup02 / ext3 Baki saiz Direktori / merupakan root atau
volume permulaan kepada direktori lain seperti
group /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.

5
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.

6
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.

7
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.

8
4. Menyambung proses installation.
a. Pilih region Asia/Kuala_Lumpur dan Tekan Next.

b. Masukkan Root Password 2 kali dan tekan Next.

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

d. Tekan Next.

10
e. Tunggu sehingga proses installation tamat.

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

11
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

12
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.

13
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.

14
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.

15
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.

16
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.

17
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.

18
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.

19
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

20
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

21
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
- f = simpan archive ke fail yang dinyatakan

22
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 Gabungkan direktori dir1 ke dalam satu fail dan compress fail
dir1/ tersebut dengan kaedah bzip. Penjelasan parameter:
- j = compression fail menggunakan kaedah bzip
tar -xvjf dir1.tar.bz2 Extract dan uncompressed fail dir1.tar.bz2 ke direktori
/home/abc/ /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] Buka fail yang dinyatakan menggunakan text editor vi/vim.
vim [nama fail] 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
encrypt.

23
b. Bagi menguruskan pengguna dan kumpulan pengguna boleh menggunakan arahan-
arahan berikut:

Arahan Kegunaan
useradd Untuk menambah pengguna baru. Parameter yang boleh
digunakan:
useradd -gusers -Gmgmt -d home directory
-s/bin/shell -pxxxx -s starting program (shell)
-d/home/roger -m roger -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 Untuk mengubah maklumat pengguna sedia ada. Parameter
usermod -Gothers roger 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 Padam pengguna sedia ada. Parameter yang boleh
userdel -r roger digunakan:
-r (remove home directory)
passwd Untuk mengubah kata laluan bagi pengguna semasa yang
passwd roger sedang login atau katalaluan pengguna lain (hanya boleh
dilakukan oleh pengguna root)
su Switch user – bagi menukar pengguna semasa yang sedang
su roger login di terminal/telnet ke pengguna lain. Arahan su sahaja
akan membuatkan penukaran ke pengguna root.
groupadd Untuk menambah kumpulan pengguna/group baru
groupadd bptm
groupmod Untuk membuat perubahan maklumat group.

groupmod -n btmbptm Arahan disebelah akan mengubah nama group bptm ke btm.
groudel Padam group sedia ada.
groupdel btm

24
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 Pemilik Saiz Fail Tarikh Fail Nama


Dir Pemilik Group Pengguna Fail Bersama dicipta/diubah Fail
/Fail lain (Group)
- 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.

25
Berikut adalah arahan yang boleh digunakan bagi mengubah permission sesuatu
fail/direktori:

Arahan Penerangan
chmod [permission Membuat perubahan pada permission sesuatu fail/direktori.
numeric] <nama fail>
Arahan seperti contoh di sebelah akan menyebabkan
chmod 777 abc.txt permission bagi fail abc.txt akan diubah ke rwxrwxrwx.
chown Membuat perubahan pada pemilik dan group bagi sesuatu
[username]:[group] fail/direktori.
<nama fail>
Arahan di sebalah akan menyebabkan fail abc.txt diubah
chown ali:bptm abc.txt 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.treasury.gov.my
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

26
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 treasury.gov.my
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.treasury.gov.my 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.treasury.gov.my
10.23.59.5 www2.treasury.gov.my

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

27
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

28
ps -ef Memaparkan imbasan senarai proses yang sedang berjalan di server.
ps –ef | more

ps –ef | grep
<proses>

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).

29
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
server. Pilih menu IP traffic monitor > eth0 untuk melihat network
traffic bagi network interface eth0. Komunikasi rangkaian di antara

30
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)”

31
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.

32
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

33
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

34
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

35
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

36
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/

37
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

38
# 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

39
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.

40
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.

41
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.

42
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

43
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.

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

44
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>

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];

45
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);

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 |
+--------------+---------+----------+--------+------------+

46
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];

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.

47
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

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.

48
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.

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

49
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.

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.

50
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:

# 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.

51
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

52
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.

53
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

54
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>

55
<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.

56
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 = Masa maksimum bagi suatu session (dalam saat). Secara
1440 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”);
?>

Simpan dan buka Internet Explorer, masukkan URL seperti berikut:


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

57
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>

58
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);

59
$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

60
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

61
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 di Perbendaharaan adalah mye.treasury.gov.my:

define(`SMART_HOST', `mye.treasury.gov.my')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 msaffuan.suntong@treasury.gov.my  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="msaffuan.suntong@treasury.gov.my";

// 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");


?>

62
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 No. default yang digunakan untuk server MySQL
port = 3306 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.

63
d. Buka terminal di server yang diinstall menggunakan Yum Install dan buka fail
/etc/httpd/conf.d/phpMyAdmin.conf. Cari bahagian berikut:

<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.

64
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.

65
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:

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.

66
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.

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

67
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.

68
# yum install ntp

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

69
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.treasury.gov.my/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.

70
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++;
}

71
//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.

72
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>

73
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:

74
<VirtualHost *:80>
ServerName joomla.abc.com
DocumentRoot /var/www/html/joomla
</VirtualHost>

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

75
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

76
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

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.

77
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:

78
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/
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

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

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

80
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.


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

81
Sekiranya laman web seperti berikut tertera bermakna installation Awstats telah
berjaya.

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

82
Setelah installation tamat, cuba jalankan arahan berikut:

# nmap localhost

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.

83
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.

# 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

84
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:
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/.

85
SEKIAN, TERIMA KASIH

86

Anda mungkin juga menyukai