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. Download
Aplikasi yang dipergunakan dalam artikel ini adalah Apache versi 2.2.3, MySQL versi 5.0.22, OpenSSL versi 0.9.8d, dan PHP versi 5.2.0.
Dari semua aplikasi di atas, hanya Apache dan PHP yang akan diinstall secara manual, sedang MySQL dan OpenSSL diinstall via ports. Jadi yang akan didownload secara manual hanya Apache dan PHP.
Apache versi terakhir dapat didownload di http://apache.the.net.id/httpd/httpd-2.2.3.tar.bz2. Versi terakhir Apache saat artikel ini ditulis adalah versi 2.2.3. Dan versi PHP terakhir saat ini adalah versi 5.2.0. PHP dapat didownload di http://id2.php.net/get/php-5.2.0.tar.bz2/from/a/mirror.
2. 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
$ sudo make install
$ sudo portupgrade -rR mysql51-server
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
$ sudo chgrp mysql /var/db/mysql/my.cnf
$ sudo /usr/local/etc/rc.d/mysql-server start
678 p0- I 0:00.01 /bin/sh /usr/local/bin/mysqld_safe –defaults-extra-file=/var/db/mysql/my.cnf –user=mysql –datadir=/var/db/mysql
701 p0- S 383:04.45 /usr/local/libexec/mysqld –defaults-extra-file=/var/db/mysql/my.cnf –basedir=/usr/local –datadir=/var/db/mysql
701 p0- S 383:04.45 /usr/local/libexec/mysqld –defaults-extra-file=/var/db/mysql/my.cnf –basedir=/usr/local –datadir=/var/db/mysql
$ sudo mysqladmin -u root password ‘password-root-mysql’
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 603704 to server version: 5.0.22
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> \q
Bye
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 603704 to server version: 5.0.22
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> \q
Bye
Langkah selanjutnya adalah menginstalasi OpenSSL, cara menginstalasi OpenSSL dalam hal ini menggunakan ports juga.
$ cd /usr/ports/security/openssl
$ sudo make install clean
$ sudo make install clean
$ sudo mkdir -p /usr/local/openssl/{certs,private}
$ cd /usr/local/openssl
$ sudo /usr/local/bin/openssl genrsa -out private/namadomain.com.key 1024
$ sudo /usr/local/bin/openssl genrsa -out private/namadomain.com.key 1024
$ sudo chown -R root:wheel private
$ sudo chmod -R 600 private
$ sudo chmod u+X private
$ sudo chmod -R 600 private
$ sudo chmod u+X private
$ /usr/local/bin/openssl req -new -key private/namadomain.com.key -out certs/namadomain.com.csr
Country Name (2 letter code) [GB]: ID
State or Province Name (full name) [Some-State]: Propinsi
Locality Name (eg, city) []: Kota
Organization Name (eg, company) [Internet Widgits Pty Ltd]: PT. Nama Usaha
Organizational Unit Name (eg, section) []: Bidang Usaha Perusahaan
Common Name (eg, your name or your server’s hostname) []: namadomain.com
Email Address []: postmaster@namadomain.com This e-mail address is being protected from spambots. You need JavaScript enabled to view it
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: masukkanpassword
An optional company name []:
Country Name (2 letter code) [GB]: ID
State or Province Name (full name) [Some-State]: Propinsi
Locality Name (eg, city) []: Kota
Organization Name (eg, company) [Internet Widgits Pty Ltd]: PT. Nama Usaha
Organizational Unit Name (eg, section) []: Bidang Usaha Perusahaan
Common Name (eg, your name or your server’s hostname) []: namadomain.com
Email Address []: postmaster@namadomain.com This e-mail address is being protected from spambots. You need JavaScript enabled to view it
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: masukkanpassword
An optional company name []:
$ sudo /usr/local/bin/openssl x509 -req -days 365 -in certs/namadomain.com.csr -out certs/namadomain.com.crt -signkey private/namadomain.com.key
2.3. Install Apache
Saya asumsikan, source Apache hasil download Anda disimpan di /home/users.
$ cd /home/users
$ tar -jxvf httpd-2.2.3.tar.bz2
$ cd httpd-2.2.3
$ ./configure \
--prefix=/usr/local/apache2 \
--enable-rewrite \
--enable-dav \
--enable-ssl \
--with-ssl=/usr/local \
--enable-vhost-alias \
--with-included-apr
$ make
$ sudo make install
$ tar -jxvf httpd-2.2.3.tar.bz2
$ cd httpd-2.2.3
$ ./configure \
--prefix=/usr/local/apache2 \
--enable-rewrite \
--enable-dav \
--enable-ssl \
--with-ssl=/usr/local \
--enable-vhost-alias \
--with-included-apr
$ make
$ sudo make install
--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
$ 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
–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
$ sudo chmod -R g-w,o-rwx /usr/local/lib/php
Code:
<IfModule !mpm_netware_module> User www Group www </IfModule> ServerAdmin hostmaster@namadomain.com This e-mail address is being protected from spambots. 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>
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
Selanjutnya ubah permission direktori Apache:
$ cd /usr/local
$ sudo chown -R root:wheel apache2
$ sudo chmod 755 apache2
$ sudo chmod -R 600 apache2/*
$ sudo chmod -R u+X apache2
$ cd apache2
$ cd apache2
$ sudo chmod -R u+x bin
$ sudo chgrp -R www cgi-bin
$ sudo chmod -R u+x,g+x cgi-bin
$ sudo chmod -R u+x,g+x cgi-bin
$ sudo chgrp -R www icons
$ sudo chmod -R g+rX icons
$ sudo chmod -R g+rX icons
$ sudo chgrp -R www logs
$ sudo chmod g+wX logs
$ sudo chmod g+wX logs
$ sudo chgrp -R www htdocs
$ sudo chmod -R g+rX htdocs
$ sudo chmod -R g+rX htdocs
Kemudian tambahkan dua baris berikut pada file /etc/rc.conf:
apache2_enable=”YES”
apache2_flags=”-DSSL”
Ubah permission file start up script menjadi:
$ sudo chmod 555 /usr/local/etc/rc.d/apache.sh
$ sudo /usr/local/etc/rc.d/apache.sh start
Periksa apakah daemon httpd sudah aktif dengan command ps ax:
$ ps ax | grep httpd
33549 ?? Ss 0:12.88 /usr/local/apache2/bin/httpd -DSSL
33550 ?? I 0:00.43 /usr/local/apache2/bin/httpd -DSSL
33551 ?? I 0:00.40 /usr/local/apache2/bin/httpd -DSSL
33552 ?? I 0:00.32 /usr/local/apache2/bin/httpd -DSSL
33549 ?? Ss 0:12.88 /usr/local/apache2/bin/httpd -DSSL
33550 ?? I 0:00.43 /usr/local/apache2/bin/httpd -DSSL
33551 ?? I 0:00.40 /usr/local/apache2/bin/httpd -DSSL
33552 ?? I 0:00.32 /usr/local/apache2/bin/httpd -DSSL
3. Referensi
1. http://www.bowe.id.au/michael/isp/we...rver.htm#MYSQL
2. http://httpd.apache.org/docs/2.2/
3. http://www.google.co.id
sumber : http://makassarhacker.com/vb/showthread.php?77-Membangun-Web-Server-di-FreeBSD
www.gosipku.co.cc