1 Ringkasan Teori
Alat pengolahan data ini terbagi kedalam
empat golongan yaitu :
1.
Alat manual
2.
Alat mekanik
3.
Alat mekanik elektronik
4.
Alat elektronik
A. OVERVIEW
Web server
merupakan sebuah server yang menggunakan protokol HTTP (Hyper Text Transfer
Protocol) untuk melayani transfer data. Dengan protokol HTTP, komunikasi antar
web server dengan clientnya (browser) dapat saling dimengerti dan lebih mudah.
HTTP menggunakan suatu jalur akses yang dinamakan port. Port adalah pembagian
akses berdasarkan nomor-nomor pada suatu host untuk masing-masing layanan yang
diberikan oleh host tersebut. HTTP biasanya menggunakan port 80 sebagai port
akses layanannya.
HTTP
didefinisikan dari beberapa RFC (Request For Comments) yang ada di Internic dan
sudah beberapa kali mengalami revisi (HTTP/09, HTTP/1.0, dan HTTP/1.1). HTTP
menggunakan metode penulisan (pemanggilan) yang disediakan oleh URI (Universal
Resource Identifier), antra lain penulisan URL untuk menyatakan lokasi resource
yang akan diambil (contohnya : http://www.google.com:80/index.html).
Jenis koneksi yang dilakukan oleh HTTP adalah connectionless, artinya hanya
hubungan satu arah dari client ke server. Ini menjadi salah satu keuntungan
penggunaan HTTP sebagai protocol internet karena tidak memerlukan proses
handshake seperti halnya connection mode.
Keuntungan lain
penggunaan HTTP sebagai protocol web adalah HTTP menggunakan Internet Media
Types (dulu dikenal dengan sebutan MIME Content Types) sebagai pendefinisian
tipe-tipe data tertentu yang dikirimkan pada header datanya sehingga sisi klien
akan tahu jenis data apa yang akan dikirimkan setelah header ini. Dengan
demikian software pada klien akan dapat segera membuka program yang bersesuaian
dengan data yang dikirimkan.
B. DEFINISI
Web server adalah software yang
bertanggungjawab untuk menerima request http dari client, yakni browser
misalnya mozilla firefox, google chrome, Internet Explorer atau opera dan
memberikan respon berupa konten data html atau objek lainnya (misalnya gambar,
mp3, video dll).
C. JENIS-JENIS WEBSERVER
Saat ini terdapat banyak pilihan jenis web server yang bisa
digunakan baik yang tersedia secara free atau gratis maupun yang berbayar.
Beberapa diantaranya adalah sebagai berikut :
a.
IIS,
Internet Information Services adalah web server yang dikembangkan oleh
Microsoft merupakan bagian terintegrasi dari sistem operasi server yang
dikeluarkan oleh Microsoft. Versi IIS terbaru yang berjalan pada sistem operasi
Windows 2008 R2 dan Windows 7 adalah versi 7.5.
b.
Lighthttp,
“lighty” sebuah web server yang dibuat oleh Jan Kneschke. Pada awalnya dibuat
untuk mengatasi masalah “c10k” (Concurrent ten thousand connection). Sebuah
masalah yang dihadapi dalam optimisasi sebuah webserver untuk mengatasi sepuluh
ribu koneksi dalam waktu bersamaan
c.
Nginx,
dibaca engine-x adalah web server yang dibuat oleh Igor Sysoev memiliki fitur
tingkat stabilitas dan perfomansi yang tinggi, serta konsumsi resource yang
rendah
d.
Apache,
Web server yang paling populer saat ini. Statistik yang dibuat oleh netcraft
(netcraft.com) menunjukan dominasi penggunaan apache dibandingkan dengan
webserver lainnya.
e.
Contoh
webserver lainnya antara lain : Cherokee, tornado, xitami, dll
Pada Exercise workbook ini akan dibahas mengenai Apache Web
server yang merupakan software web server paling populer saat ini
D. APACHE
WEBSERVER
Apache
merupakan pengembangan dari webserver NCSA (National Center for Supercomputing
Applications) HTTP daemon (httpd). NCSA server merupakan webserver awal yang
cukup populer, dan source codenya dimiliki publik. Pada tahun 1994 proses
pengembangan NCSA berhenti karena pengembang utama, Rob McCool meninggalkan
NSCA. Kemudian Sekelompok web administrator yang telah memodifikasi source code
NCSA dan melakukan patch terhadap versi NCSA sebelumnya berkumpul untuk mengkoordinasikan hasil patch ataupun
penambahan fitur yang dilakukan oleh masing-masing dari mereka dan menyatukan
perubahan source code tersebut.
Pada April
1995 kemudian mereka merelease apache untuk pertama kalinya ke publik yakni
versi 0.6.2, disusul kemudian versi 0.8.8 pada bulan Agustus, dan apache versi
1.0 pada bulan Desember yang menempatkan Apache sebagai webserver no 1 yang
paling banyak digunakan di Internet.
Mengapa disebut
“Apache”?
Apache adalah “A
PatCHy server” pada awalnya merupakan pengembangan dari kode yang sudah ada
dan dilakukan “patch” yang berulang kali
|
E. FITUR
APACHE
Fitur
utama yang menjadikan Apache sebagai web server yang lebih unggul dibandingkan
dengan webserver lainnya adalah pada kecepatan, kemudahan konfigurasi,
stabilitas dan kaya akan fitur lainnya. Penelitian perbandingan menunjukan
apache lebih cepat dibandingkan dengan webserver lainnya, termasuk web server
komersil. Apache mudah dikonfigurasi dan
dikonfigurasi ulang, konfigurasi berbentuk berkas teks dengan bahasa inggris
yang sederhana. Untuk mengkonfigurasi ulang webserver yang berjalan cukup
dengan merubah konfigurasi yang sedang berjalan kemudian melakukan restart
terhadapanya.
Mengenai
stabilitas, kemampuan apache melebihi para kompetitornya. Situs yang menerima
hit sampai jutaan menunjukan tidak ada masalah. Apache dikenal memiliki bugs
yang lebih sedikit dibandingkan dengan web server lainnya. Apache yang bersifat
opensource memungkinkan user melakukan kontribusi terhadap pengembangan Apache.
Selain fitur yang sudah disebutkan di atas, beberapa fitur lainnya adalah :
a.
Apache
mudah di tambahkan modul lain dengan menggunakan fitur Dynamic Shared
Objects(DSO). Dengan adanya fitur ini, penambahan modul dapat dilakukan tanpa
harus melakukan proses kompilasi ulang karena bisa di load/unload pada saat
apache berjalan, sama seperti shared library yang secara dinamis bisa di
load/unload
b.
Apache
menggunakan database biner untuk otentikasi user untuk web yang dilindungi
menggunakan password. Dengan format ini
apache dapat mendukung sejumlah user tanpa harus terbebani oleh proses
otentikasi user
c.
Apache
mendukung virtual host, atau dikenal dengan multi-homed servers, yakni sebuah
fitur yang memboleh satu mesin/server untuk melayani layanan web untuk banyak
domain (banyak IP)
d.
Apache
membolehkan administrator untuk mendefinisikan banyak berkas directory index
untuk halaman default. Sehingga, ketika sebuah client melakukan request
terhadap sebuah URL, server dapat memberikan halaman index.html, index.htm,
index.php, index.cgi, dll
e.
Apache
mendukung server logging dengan berbagai format dan tingkat detail dari log
tersebut. Apache dapat dikonfigurasi untuk menghasilkan unique identifier yang
membedakan antara satu hit dengan hit lainnya.
f.
Apache
dapat secara otomatis melakukan proses penyesuaian kemampuan web client yang
melakukan koneksi, sebuah proses “content negotiation”. Ketika sebuah web
client rusak, yang mana apache dapat menentukan kerusakannya misalnya
penggunaan http yang tidak standar atau tidak support terhadap spesifikasi html
tertentu, maka apache akan mengirimkan halaman web yang sudah dimodifikasi agar
dapat memberikan tampilan terbaik untuk informasi yang diminta berdasarkan apa
yang bisa diproses oleh klien tersebut
F. CARA
KERJA APACHE
Agar dapat
memahami apache, melakukan konfigurasi dan melakukan optimasi sesuai dengan
kebutuhan maka ada baiknya memahami terlebih dahulu cara kerja sebuah web
server secara umum.
Web Server
(Apache)
|
Web Client
( Browser )
|
Permintaan Data
|
Pengiriman Data
|
Port 80
|
Pada
gambar diatas menunjukan proses umum ketika sebuah web browser (mozilla, IE,
Opera, chrome dll) melakukan permintaan halaman web, dan kemudian Apache web
server melakukan respon terhadap permintaan tersebut.
Web client
(browser) pertama-tama akan melakukan DNS lookup pada nama server (domain) yang
tertera di URL browser, untuk mendapatkan IP address dari domain tersebut.
Setelah mendapatkan IP address domain pada URL kemudian akan melakukan koneksi
ke port 80 pada IP address tersebut (atau port lainnya jika menggunakan port
yang tidak standar), ketika sudah terbentuk koneksi client akan mengirimkan
permintaan HTTP GET untuk dokumen yang ada pada URL (file html, gambar, mp3,
atau script).
Ketika
server menerima permintaan tersebut, kemudian akan menerjemahkan dokumen URL
kedalam nama file yang ada di sistem lokal. Misalnya dokumen URL http://localhost/~budhi/index.html menjadi
/home/budhi/public_html/index.html.
Setelah itu apache akan melakukan evaluasi apakah dokumen yang diminta
tersebut memiliki akses kontrol atau tidak? Jika memiliki akan meminta username
dan password atau langsung melakukan reject, tergantung dari access control
yang disetting. Apabila URL yang diminta
adalah sebuah direktori (ditandai dengan tanda / di akhir), apache akan mencari
halaman index dari directory tersebut, dan mengirimkannya kepada client. Bila
halaman index directory tidak ditemukan apache akan mengirimkan list dari
sebuah directory dalam format HTML atau mengirimkan pesan error, tergantung
konfigurasi server apakah membolehkan list dari sebuah directory atau tidak.
Pada beberapa kasus, dokumen dapat berupa file script misalnya script PHP atau
cgi atau yang lainnya (misalnya python script). Pada kasus ini maka, apache
akan mengeksekusi script tersebut (jika diperbolehkan) dan mengirimkan hasilnya
pada klien. Setelah apache mengirimkan
dokumen yang diminta, dan klien sudah menerimanya, klien akan menutup koneksi
dan apache akan menuliskan log untuk permintaan dokumen dari klien tersebut.
Beberapa
halaman tertentu yang dibuat dengan bahasa pemrograman istimewa seperti java
applets, dokumen yang dikirimkan akan di eksekusi disisi client bukan di sisi
server.
G. INSTALASI
DAN KONFIGURASI APACHE
Instalasi
Instalasi
Apache dapat dilakukan lewat beberapa cara, tergantung dari jenis sistem
operasi yang digunakan. Misalnya untuk sistem operasi ubuntu dan debian bisa
menggunakan manajemen paket apt-get , sedangkan untuk centos, fedora dan redhat
bisa menggunakan manajemen paket yum, untuk SuSE bisa menggunakan manajemen
paket YaST.
Perintah
instalasi Apache2 menggunakan Ubuntu :
#sudo apt-get
install Apache2
|
Setelah
proses instalasi selesai, Apache akan meletakan file konfigurasi pada direktori
/etc/apach2. Pada direktori tersebut akan disimpan file/directory konfigurasi
lainnya yakni :
a.
Apache2.conf
merupakan konfigurasi utama dari apache, berisi pengaturan umum apache2
b.
Conf.d
berisi file-file konfigurasi yang diterapkan secara umum pada apache2. Paket
lain yang menggunakan apache2 untuk melayani konten boleh menambahkan
file/symlinks ke direktori ini
c.
Envvars
: file dimana lingkungan variable apache2 di atur
d.
Httpd.conf
adalah konfigurasi apache2 sebelumnya, dinamai seperti http daemon. File ini
dapat digunakan untuk konfigurasi spesifik user yang mempengaruhi secara
keseluruhan pengaturan apache2
e.
Mods-available
direktori ini berisi file konfigurasi modul-module yang di load, meskipun tidak
semua modul memiliki konfigurasi yang spesifik
f.
Mods-enabled
: menyimpan file symlinks di /etc/apache2/mod-available. Ketika sebuah modul
dikonfiguasi dengan file yang di symlinks akan di aktifkan pada restart
selanjutnya
g.
Ports.conf
: berisi pada TCP port berapa apache akan berfungsi
h.
Sites-available
: direktori ini berisi mengenai konfigurasi apache2 untuk virtual host
i.
Sites-enabled
: samapa seperti mod-enable, sites-enable berisi file symlinks ke
/etc/apache/sites-available. Ketika file konfigurasi site-available di symlink,
site tersebut akan diaktifkan pada restart selanjutnya.
Konfigurasi dasar
1.
Virtual
Host, Apache2 dilengkapi dengan konfigurasi virtual-host yang sederhana. Secara
default, terdapat satu settingan default virtual host (Virtual Host directive)
yang dapat dimodifikasi sesuai dengan kebutuhan untuk satu buat host tunggal
atau sebagai template untuk virtual host tambahan jika server akan digunakan
untuk lebih dari satu situs. Default virtual host akan dijadikan sebagai situs
default, situs akan memakai default virtual host ini jika pada URL tidak
ditemukan directive ServerName yang
sesuai. Untuk modifikasi virtual host edit file
/etc/apache2/site-availabe/default. Jika ingin menambahkan situs baru cukup
dengan melakukan copy paste dari file default tersebut pada direktori yang sama
misalnya dengan menjalan perintah:
sudo cp
/etc/apache2/sites-available/default /etc/apache2/sites-available/sitebaru edit file baru tersebut dengan
parameter directive yang akan dijelaskan kemudian.
2.
ServerAdmin
directive adalah parameter email address yang akan digunakan untuk pemberitahuan
siapa pengelola web server tersebut atau dengan kata lain siapa webmasternya.
ServerAdmin memiliki parameter default webmaster@localhost, sebaiknya digunakan
email address pengelola yang resmi.
3.
Listen
directive adalah parameter yang menunjukan penggunaan port dan IP address yang
digunakan oleh web server tersebut. Jika IP address tidak di setting, maka
secara default apache akan berfungsi untuk semua IP address yang ada pada semua
interface webserver tersebut. Default port yang digunakan oleh apache adalah
80, bisa diubah dengan port lainnya selama port tersebut tidak digunakan oleh
aplikasi lainnya (sebaiknya menggunakan port diatas 1024 jika ingin menggunakan
port non standard). Settingan port berada pada file /etc/apache2/ports.conf
4.
ServerName
directive adalah parameter pilihan, yang menunjukan FQDN dari situs yang
dikelola oleh web server tersebut. Default virtual host tidak memiliki
ServerName directive sehingga akan merespon semua request yang tidak cocok
dengan ServerName directive yang ada pada virtual host lainnya. Jika kita sudah
memiliki nama domain, maka ServerName directive diletakan pada virtual host
untuk domain tersebut. Selain itu apache2 juga membolehkan penggunaan
ServerAlias directive yang akan menghandle semua request untuk semua URL yang
berakhiran tertentu. Misalnya sebuah domain jasait.com ingin agar semua request
ke www.jasait.com , jasait.com, blog.jasait.com dan semua yang berakhiran
.jasait.com merujuk pada suatu virtual host yang sama maka cukup dengan
menambahkan directive :
SeverAlias *.jasait.com
5.
DocumentRoot
directive adalah parameter yang menunjukan lokasi dimana apache2 harus mencari
file website suatu situs. Nilai defaultnya adalah /var/www. Tidak ada situs
yang dikonfigurasi pada /var/www, namun apabila directive RedirectMatch pada
file /etc/apache2/apache2.conf diaktifkan maka request akan di redirect ke
/var/www/apache2-default yang mana situs apache2 default menanti. Sesuaikan
settingan DocumentRoot ini ke lokasi tempat file situs berada
Setelah membahas
mengenai pengaturan directive pada apache diatas, apakah yang dimaksud dengan directive
tersebut ?
Jawab : directive
adalah
|
Untuk
mengaktifkan VirtualHost menggunakan utilitas a2ensite dan merestart apache
jalankan perintah berikut :
Sudo a2ensite mynewsite
(atau nama virtual host baru yang dibuat)
Sudo service
apache2 restart
|
Untuk
menonaktifkan VirtualHost yang sudah dijalankan :
Sudo a2dissite
mynewsite (atau nama virtual host baru yang dibuat)
Sudo service
apache2 restart
|
Konfigurasi Default
Untuk
setiap directive yang tidak di atur pada virtual host maka akan digunakan
pengaturan default. Pengaturan default tersebut diantaranya adalah :
1.
DirectoryIndex
adalah halaman default yang akan diberikan oleh server ketika ada request dari
client terhadap index dari sebuah directory web yang ditandai dengan tanda
slash (/) pada akhir nama directory. Misalkan ada ketika user melakukan request
halaman http://blog.jasait.com/freebsd/, maka klien akan mendapatkan
halaman dari DirectoryIndex jika ada, menghasilkan listing sebuah direktori
jika opsi Indexes diaktifkan atau permision denied jika tidak ada file index
atau opsi Indexes tidak diaktifkan. Nilai default dari DirectoryIndex ini dapat
ditemukan pada file /etc/apache2/mods-available/dir.conf, nilai-nilai default
tersebut diantaranya adalah : index.html. index.cgi, index.pl, index.php,
index.xhtml, index.htm ketika apache menemukan file-file tersebut pada sebuah
directory maka akan ditampilkan berdasarkan urutan prioritasnya.
2.
ErrorDocument
directive dapat digunakan untuk melakukan pengaturan error pada apache2.
Misalnya jika klien melakukan request terhadap sumberdaya yang tidak ada maka
eror 404 akan ditampilkan dengan memberikan halaman page
/usr/share/apache2/error/HTTP_NOT_FOUND.html.var. File tersebut tidak berada
pada DocumentRoot akan tetapi memiliki directive alias pada
/etc/apache2/apache2.conf yang meredirect permintaan ke direktori /errro pada
/usr/share/apache2/error/. Untuk menampilkan nilai default dari ErrorDocument
directives gunakan perintah berikut :
grep
ErrorDocument /etc/apache2/apache2.conf
3.
Secara
default server akan menyimpan file log akses apache di
/var/log/apache2/access.log. pengaturan log dapat dirubah secara terpisah pada
pengaturan virtual host masing-masing situs. Demikian juga dengan directive
ErrorLog, secara default error log akan disimpan di /var/log/apache2/error.log.
Level log dapat diatur dengan melakukan setting pada LogLevel directive yang
bernilai ‘warn’ secara default.
4.
Beberapa
opsi dilakukan pengaturan perdirektori, bukan perserver. Bentuk pengaturan
direktori memiliki sintaks sebagai berikut :
<Directory
/var/www/mynewsite>
….
(pengaturan opsi disini)
</Directory>
Adapun
opsi-opsi tersebut adalah :
ExecCGI
– membolehkan eksekusi file script CGI, script CGI tidak akan di eksekusi jika
tidak ada opsi ini
Includes
– membolehkan server-side includes yang membolehkan sebuah file HTML
menginclude file lain
IncludesNOEXEC
– membolehkan serverside includes tapi tidak boleh menjalankan script CGI
Indexes
– membolehkan penampilan list dari sebuah direktori (untuk alasan keamanan
sebaiknya tidak diaktifkan
Multiview
– mendukung content-negotiated multiviews (secara default di disable untuk
alasan keamanan)
SymLinksIfOwnerMatch
– membolehkan symbolic links jika target file dimiliki oleh owner yang sama
Httpd settings
Lockfile –
kecuali log file disimpan di sebuah NFS server, sebaiknya parameter ini
disimpan pada local disk
PidFile –
ini adalah directive untuk pengaturan process ID (pid) file ini harus bisa
dibaca oleh root, sebaiknya nilainya tidak usah diganti
User –
user directive adalah pengaturan user apa yang akan digunakan untuk menerima
request dari client. Hindarkan penggunaan user root sebagai penerima request
dari client/untuk menjalankan daemon apache2
Module tambahan Apache2
Apache2
bersifat modular. Oleh karenanya hanya fungsi dasar yang disertakan dalam
server utama. Fitur tambahan dapat digunakan lewat modul tambahan yang dapat di
load kedalam apache2. Secara default, beberapa modul dasar ditambahkan pada
server saat kompilasi. Jika pada saat kompilasi apache digunakan dinamik load
modul, maka modul-modul lain dapat di kompilasi secara terpisah, dan
ditambahkan kapan saja dengan menggunakan directive LoadModule. Jika tidak
(tidak menambahkan fitur dinamik load modul) maka apache2 harus di kompilasi
ulang untuk menambahkan/menghapus suatu modul.
Ubuntu
(dan beberapa varian Linux lainnya) mengkompil apache2 agar membolehkan dynamic
loading modules. Untuk mengaktifkan sebuah module bisa menggunakan sintaks
block <IfModule>.
Misalnya
ingin menambahkan modul autentikasi mysql :
Pertama
jalankan perintah : sudo apt-get install libapache2-mod-auth-mysql untuk
menginstall modulnya
Kemudian
jalan perintah utilitas a2enmod untuk mengaktifkan modul :
Sudo a2enmod
auth_mysql
Sudo service
apache2 restart
|
Dengan
cara yang sama
Dengan
cara yang sama untuk mendisable module :
Sudo a2dismod
auth_mysql
Sudo service
apache2 restart
|
HTTPS
Salah satu
fitur penting apache2 lainnya adalah mod_ssl yakni sebuah modul yang membuat
apache dapat melakukan proses enkripsi dalam pertukaran data antara server dan
client (browser). Prefix https digunakan pada saat memasukan alamat URL untuk
suatu website dengan ssl yang aktif. Mod_ssl terdapat pada paket
apache2-common, untuk mengaktifkannya jalankan perintah :
Sudo a2enmod ssl
Terdapat
konfigurasi default https pada file /etc/apache2/sites-available/default-ssl.
Agar apache2 dapat memberikan layanan HTTPS, sebuah certificate dan key
diperlukan. Konfigurasi https default akan menggunakan certificate dan key
untuk membuat paket ssl-cert. untuk
mengkonfigurasi apache2 dengan https jalankan perintah berikut :
Sudo a2enmod
default-ssl
Sudo service
apache2 restart
|
Install Bahasa Pemrograman Script
PHP5
Untuk
melakukan instalasi PHP5 dapat dilakukan dengan menjalankan perintah :
Sudo apt-get install php5
libapache2-mod-php5
Agar PHP5
bisa dijalankan lewat command-line maka diperlukan paket PHP yang lain yakni
PHP-cli untuk menginstallnya jalankan perintah :
Sudo apt-get install php5-cli
Untuk
menggunakan PHP5 tanpa module apache bisa menggunakan paket PHP-cgi untuk
instalasi gunakan perintah :
Sudo apt-get install php5-cgi
Untuk
menggunakan mysql atau postgresql sebagai databasenya jalankan perintah berikut
:
Sudo apt-get install php5-mysql
Sudo apt-get install php5-pgsql
Demikian
juga jiga ingin menambakan ekstensi php lainnya, misalnya extensi gd atau xml
dapat ditambahkan dengan perintah :
Sudo apt-get install php5-gd
Sudo apt-get install php5-xml
H. TROUBLESHOOTING
APACHE
2 Studi Kasus
Pada bagian ini
dijelaskan kasus yang berkaitan dengan topik yang disampaikan beserta penyelesaian
(solusi) kasus tersebut. Melalui studi kasus yang disajikan, diharapkan
mahasiswa mempunyai gambaran yang lebih kongkret terkait topik yang
disampaikan. Dengan memberikan solusi sesuai dengan kasus yang disampaikan,
diharapkan mahasiswa mempunyai (alternatif) solusi yang sudah diuji
kebenarannya.
Team dosen
pengajar bertanggung jawab untuk melakukan validasi solusi yang disampaikan
pada bagian studi kasus. Solusi yang dimaksud, dituliskan pada bagian 4
Pembahasan.
Studi kasus yang
disampaikan diperbolehkan untuk dikerjakan secara individu atau berkelompok,
sesuai dengan sasaran yang ingin dicapai. Yang harus diperhatikan adalah
pencantuman cara pengerjaan soal-soal yang diberikan kepada mahasiswa.
Komentar
Posting Komentar