Professional Documents
Culture Documents
Server web adalah sebuah perangkat lunak server yang berfungsi menerima permintaan HTTP atau
HTTPS dari klien yang dikenal dengan browser web dan mengirimkan kembali hasilnya dalam bentuk
halaman-halaman web yang umumnya berbentuk dokumen HTML. Server web yang terkenal
diantaranya adalah Apache dan Microsoft Internet Information Service (IIS). Apache merupakan server
web antar-platform, sedangkan IIS hanya dapat beroperasi di sistem operasi Windows.
Server web juga dapat berarti komputer yang berfungsi seperti definisi di atas.
Streaming Protocol
Bagaimana cara sebuah media streaming dapat dikirimkan ke klien? Salah satu pendekatan adalah
dengan mengalirkan media dari sebuah web server standar yang menggunakan hypertext transport
protocol (HTTP). Protokol tersebut digunakan untuk mengirim dokumen dari sebuah web server.
Biasanya, klien menggunakan sebuah media player, seperti QuickTime, RealPlayer, atau Windows
Media Player, untuk memutar kembali media yang dialirkan oleh web server standar. Biasanya,
pertama-tama klien meminta sebuah metafile, yang berisi lokasi sebuah berkas streaming media.
Metafile tersebut dikirimkan ke web browser klien, dan browser akan membuka berkas yang dimaksud
dengan memilah media player yang sesuai dengan jenis media yang dispesifikasikan di metafile.
Masalah yang muncul jika pengiriman streaming media dari sebuah web server standar adalah web
server tidak dapat memelihara status koneksi dengan klien. Hal ini dapat terjadi karena HTTP
merupakan protokol yang stateless. Akibatnya, klien akan mengalami kesulitan pada saat ia melakukan
pause selama pengiriman streaming media masih berlangsung. Pelaksanaan pause akan menyebabkan
web server harus mengetahui status mana yang akan dimulai kembali ketika klien memutar ulang.
Strategi alternatif yang dapat dilakukan untuk menanggulangi hal diatas adalah dengan menggunakan
server streaming khusus yang didesain untuk men-streaming media, yaitu real time streaming protocol
(RTSP). RTSP didesain untuk melakukan komunikasi antara server yang melakukan streaming dengan
media player.
Keuntungan RTSP adalah bahwa protokol ini menyediakan koneksi yang memiliki status antara server
dan klien, yang dapat mempermudah klien ketika ingin melakukan pause atau mencari posisi random
dalam stream ketika memutar kembali data.
RTSP memiliki empat buah perintah. Perintah ini dikirim dari klien ke sebuah server streaming RTSP.
Keempat perintah tersebut adalah:
Play. Server mengirim sebuah stream ke sesi klien yang telah dibangun dari perintah setup
sebelumnya.
Pause. Server menunda pengiriman stream namun tetap menjaga sumber daya yang telah
dialokasikan.
Teardown. Server memutuskan koneksi dan membebas tugaskan sumber daya yang sebelumnya
telah digunakan.
Penjelajah web
Penjelajah web (bahasa Inggris: web browser), disebut juga sebagai perambah, adalah perangkat
lunak yang berfungsi menampilkan dan melakukan interaksi dengan dokumen-dokumen yang
disediakan oleh server web. Penjelajah web yang populer adalah Microsoft Internet Explorer dan
Mozilla Firefox. Penjelajah web adalah jenis agen pengguna yang paling sering digunakan. Web sendiri
adalah Kumpulan jaringan berisi dokumen dan tersambung satu dengan yang lain, yang dikenal sebagai
World Wide Web.
Tentu saja kata web server tidak asing lagi di sebagian besar telinga kita, yaitu sebuah tempat
untuk mempublikasikan informasi apa pun kepada publik melalui internet atau intranet tentang apa
saja, baik oleh individu, kelompok, lembaga pemerintahan, perusahaan, dan lain-lain. Web server
umumnya tidak berdiri sendiri, namun ada aplikasi yang mendukungnya, semacam PHP, OpenSSL,
dan lain sebagainya. Salah satu aplikasi yang sudah sangat populer adalah Apache HTTP Server.
Aplikasi ini mulai dirilis ke publik sejak tahun 1995.
Web server yang menggunakan aplikasi Apache di seluruh dunia saat ini berdasarkan survei Netcraft
Web Server Survey pada November 2006 saja sudah lebih dari 60% dari total 101,435,253 situs.
Proyek Apache HTTP Server ini merupakan proyek open-source yang dikembangkan oleh Apache
Software Foundation. Lembaga ini bertujuan mengembangkan Apache sebagai aplikasi web server
modern yang bisa dipergunakan di multi platform OS, khususnya Unix dan Windows.
Saya tidak akan membahas sejarah perkembangan Apache ini secara rinci. Untuk mengetahui lebih
lengkap perkembangannya silakan kunjungi About the Apache HTTP Server Project.
Dalam artikel ini, saya tidak hanya membahas Apache secara khusus saja, namun juga beberapa
aplikasi yang umum dipergunakan bersama aplikasi ini, seperti OpenSSL, MySQL, dan PHP.
1. Instalasi
2.1. Install MySQL
Sebelum menginstall Apache dan PHP, yang harus diinstall terlebih dahulu adalah MySQL dan
OpenSSL. Untuk menginstalasi kedua aplikasi ini di FreeBSD cukup mudah melalui ports.
$ cd /usr/ports/database/mysql51-server
$ sudo make install
$ sudo portupgrade -rR mysql51-server
Command terakhir adalah untuk mengupgrade versi MySQL ke versi terbaru.
Untuk mengaktifkan MySQL saat booting, buka file /etc/rc.conf dan tambahkan baris:
mysql_enable = YES
Copykan file konfigurasi MySQL:
$ sudo cp /usr/local/share/mysql/my-medium.cnf /var/db/mysql/my.cnf
$ sudo chgrp mysql /var/db/mysql/my.cnf
Kemudian jalankan command berikut untuk mengaktifkan daemon MySQL.
$ sudo /usr/local/etc/rc.d/mysql-server start
Bila berhasil, seharusnya Anda akan melihat baris berikut saat menjalankan command ps ax | grep
mysql:
prefix=/usr/local/apache2 \
enable-rewrite \
enable-dav \
enable-ssl \
with-ssl=/usr/local \
enable-vhost-alias \
with-included-apr
$ make
$ sudo make install
Keterangan dari masing-masing opsi di atas adalah:
prefix=[DIR]: Menginstall aplikasi ke target direktori yang ditentukan.
enable-rewrite: Mengaktifkan rule based URL manipulation melalui module mod_rewrite.
enable-dav: Mengaktifkan protocol WebDAV melalui module mod_dav. Dengan protocol WebDAV
ini memungkinkan membuat, memindah, menyalin, dan menghapus resource pada sebuah web server.
enable-ssl: Mengaktifkan module SSL/TLS.
with-ssl=[DIR]: Di mana library SSL/TLS diinstall.
enable-vhost-alias: Support dengan banyak virtual host.
with-included-apr: Install apr. APR atau Apache Portable Runtime pada Apache 2.2.x versi
merupakan source yang sudah menyatu dengan Apache Source.
2.4. Install PHP
Sebelum Anda menginstalasi PHP, saya sarankan untuk menginstall aplikasi-aplikasi via ports yang
diperlukan (recommended) PHP saat instalasinya. Aplikasi-aplikasi tersebut adalah:
- mcrypt (/usr/ports/security/mcrypt) dan libmcrypt (/usr/ports/security/libmcrypt)
- db4 (/usr/ports/databases/db4) dan gdbm (/usr/ports/databases/gdbm)
- gd (/usr/ports/graphics/gd)
- libxml2 (/usr/ports/textproc/libxml2)
Saya asumsikan pula, source PHP yang Anda download disimpan di /home/users.
$ cd /home/users
$ tar -jxvf php-5.2.0.tar.bz2
$ cd php-5.2.0
$ ./configure \
with-apxs2=/usr/local/apache2/bin/apxs \
with-mysql=/usr/local \
with-openssl=/usr/local \
with-config-file-path=/usr/local/apache2/conf \
with-png-dir=/usr/local/lib \
with-gettext=/usr/local/lib \
with-gd \
with-zlib \
with-xml \
with-mcrypt=/usr/local/lib \
enable-mbstring=all \
disable-short-tags
$ make
$ make install
Keterangan dari masing-masing opsi di atas adalah:
with-apxs2[=FILE]: Menyertakan shared Apache 2.0 Handler module.
with-mysql[=DIR]: Menyertakan dukungan MySQL. DIR adalah di mana binary MySQL diinstall.
with-openssl[=DIR]: Menyertakan dukungan OpenSSL.
with-config-file-path=PATH: Di mana file php.ini akan diletakkan.
with-png-dir[=DIR]: Menyertakan dukungan format file PNG.
with-gettext[=DIR]: Menyertakan dukungan GNU gettext.
with-gd[=DIR]: Menyertakan dukungan GD.
with-zlib[=DIR]: Menyertakan dukungan zlib.
with-libxml-dir[=DIR]: Menyertakan dukungan XML.
with-mcrypt[=DIR]: Menyertakan dukungan mcrypt atau Multi-cipher cryptographic library.
enable-mbstring: Mengaktifkan dukungan multibyte string.
disable-short-tags: Nonaktifkan penggunaan tag pendek <? pada script PHP.
Edit file /usr/local/apache2/conf/php.ini dan sesuaikan dengan kebutuhan Anda. Pada dasarnya
default file konfigurasi ini sudah cukup baik.
Karena PHP diinstall sebagai module pada Apache, kita perlu mengubah kepemilikan direktori PHP
yang hanya akan mengijinkan akses kepada user root dan www saja.
$ sudo chown -R root:www /usr/local/lib/php
$ sudo chmod -R g-w,o-rwx /usr/local/lib/php
Edit file /usr/local/apache2/conf/httpd.conf dan ubah baris-baris berikut menjadi:
<IfModule !mpm_netware_module>
User www
Group www
</IfModule>
ServerAdmin hostmaster@namadomain.comThis e-mail address is being protected from
spam bots, you need JavaScript enabled to view it
ServerName www.namadomain.com:80
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddHandler cgi-script .cgi
</IfModule>
Aktifkan juga baris-baris berikut dengan menghilangkan tanda # di awal barisnya:
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-userdir.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-dav.conf
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf
#!/bin/sh
#
# $FreeBSD: ports/www/apache2/files/apache.sh,v 1.12 2006/01/15 01:11:11 clement
Exp $
#
# PROVIDE: apache2
# REQUIRE: NETWORKING SERVERS
# BEFORE: DAEMON
# KEYWORD: FreeBSD shutdown
#
# Add the following lines to /etc/rc.conf to enable apache2:
# apache2_enable (bool):
# apache2_profiles (str):
# apache2_flags (str):
# apache2limits_args (str):
. /etc/rc.subr
name="apache2"
rcvar=`set_rcvar`
start_precmd="apache2_precmd"
restart_precmd="apache2_checkconfig"
reload_precmd="apache2_checkconfig"
reload_cmd="apache2_graceful"
graceful_cmd="apache2_graceful"
gracefulstop_cmd="apache2_gracefulstop"
configtest_cmd="apache2_checkconfig"
command="/usr/local/apache2/bin/httpd"
_pidprefix="/usr/local/apache2/logs/httpd"
pidfile="${_pidprefix}.pid"
required_files=/usr/local/apache2/conf/httpd.conf
[ -z "$apache2_enable" ]
&& apache2_enable="NO"
[ -z "$apache2_profiles" ]
&& apache2_profiles=""
[ -z "$apache2_flags" ]
&& apache2_flags=""
{profile}_configfile)"
exit 1
fi
required_files="${apache2_configfile}"
eval apache2_enable="\${apache2_${profile}_enable:-$
{apache2_enable}}"
eval apache2_flags="\${apache2_${profile}_flags:-${apache2_flags}}"
eval apache2_http_accept_enable="\${apache2_$
{profile}_http_accept_enable:-${apache2_http_accept_enable}}"
eval apache2limits_enable="\${apache2limits_${profile}_enable:-$
{apache2limits_enable}}"
eval apache2limits_args="\${apache2limits_${profile}_args:-$
{apache2limits_args}}"
apache2_flags="-f ${apache2_configfile} -c \"PidFile ${pidfile}\" $
{apache2_flags}"
else
echo "$0: extra argument ignored"
fi
else
if [ "x${apache2_profiles}" != "x" -a "x$1" != "x" ]; then
if [ "x$1" != "xrestart" ]; then
for profile in ${apache2_profiles}; do
echo "===> apache2 profile: ${profile}"
/usr/local/etc/rc.d/apache2.sh $1 ${profile}
retcode="$?"
if [ "0${retcode}" -ne 0 ]; then
failed="${profile} (${retcode}) $
{failed:-}"
else
success="${profile} ${success:-}"
fi
done
exit 0
else
restart_precmd=""
fi
fi
fi
if [ "${1}" != "stop" ] ; then \
if checkyesno apache2limits_enable
then
eval `/usr/bin/limits ${apache2limits_args}` 2>/dev/null
else
return 0
fi
}
extra_commands="reload graceful gracefulstop configtest"
run_rc_command "$1"