Pages

Kamis, 10 Februari 2011

Web Server dengan Apache, MySQl, PHP, OpenSSL, phpMyAdmin

Web Server dengan FreeBSD, Apache, MySQL, dan PHP
Pertama-tama kita mulai dengan mengintstall ketiga aplikasi diatas ke FreeBSD kita. Saya memilih menggunakan ports untuk melakukan proses instalasi ini. Yang perlu diperhatikan dalam proses instalasi ini adalah urutan dari aplikasi yang diinstall.
Yang penting Apache harus diinstal sebelum PHP, karena apabila kita menginstall PHP dahulu, maka ada konfigurasi tambahan yang harus dilakukan pada Apache nantinya. Urutan MySQL tidak menjadi masalah.
Kemudian apabila kita hendak menginstall menggunakan ports, ada baiknya kita melakukan konfigurasi make.conf seperti yang sudah saya tulis sebelumnya. Lebih baik lagi bila kita mengupdate ports collection kita dengan cvsup.
Apabila kedua hal diatas sudah dilakukan, yang perlu kita lakukan tinggal pergi ke direktori dimana ports yang kita inginkan berada, yaitu pertama-tama kita coba install MySQL.
cd /usr/ports/
make search name=mysql
diketahui MySQL versi terbaru pada OS kita dalah mysql51 dan berada pada direktori /usr/port/databases/mysql51-server
cd /usr/ports/databases/mysql51-server
make install clean
Setelah proses instalasi yang panjang selesai, lakukanlah setting user untuk mysql, caranya :
mysqladmin -u root -p password
–> ganti dengan password pilihan anda, password ini bisa tidak sama dengan password root anda.
Untuk mengakses database anda di mysql, gunakan perintah
mysql -u root -p
tekan enter kemudian masukkan password yang telah diset sebelumnya. Apabila anda sudah berada pada mysql server, maka akan terlihat awalan CLI anda berubah jadi :
mysql>
Untuk membuat database, gunakan perintah berikkut setelah masuk ke mysql server.
mysql> create database YM;
Kita bisa lihat pada direktori /var/db/mysql telah ada direktori baru bernama YM, itulah tempat database kita.
Oke, MySQL sudah terinstal, selanjutnya kita akan melakukan instalasi Apache. Dengan proses yang sama, pergilah ke direktori tempat Apache berada.
cd /usr/ports/www/apache22
make install clean
Lagi lagi setelah proses instalasi yang lumayan lama kita harus melakukan konfigurasi terhadap Apache supaya berjalan dengan baik, caranya editlah file /usr/local/etc/apache22/httpd.conf
Carilah baris-baris berikut pada httpd.conf, dan ganti seperti dibawah ini :
Listen ipaddres:port
Listen 167.205.79.158:80
Berguna supaya Apache hanya listen pada port dan IP yang disebutkan, apabila ingin menggunakan port lain, gunakanlah port dalam range 1024 dan 65535 yang belum digunakan oleh servis lain.
User www
Group www
Berguna untuk meminimalisir celah keamanan, karena apabila Apache dijalankan oleh root, maka akan sangat berbahaya, karena priviledges yang dimiliki oleh root.
ServerName 167.205.79.158:80
Berguna apabila kita memiliki DNS server yang berfungsi dengan baik, apabila tidak ada,maka di comment saja, atau cukup isikan IP address server kita.
ServerAdmin satria.bramana@comlabs.itb.ac.id
Kemana e-mail harus dikirimkan apabila ada masalah dengan web server kita.
DocumentRoot “/usr/local/www/data”
Secara default, semua dokumen yang akan ditampilkan oleh web server kita haruslah diletakkan disini, tetapi bisa saja menggunakan simbolic link. Karena apache22 berbeda dengan versi sebelumnya dalam penempatan document root yang berada pada /usr/local/www/apache22/data maka kita harus menyesuaikannya.
DirectoryIndex index.php index.html index.htm
Apabila ada user yang hendak mengakses web server kita, maka yang akan ditampilkan adalah konten yang terdapat pada file-file diatas, yang tentunya harus berada pada direktori yang sama dengan DocumentRoot.
Demikianlah konfigurasi minimum yang saya lakukan untuk web server saya, apabila anda mengikutinya dan ingin mengetesnya, buka saja browser dan masukkan IP address server anda, maka akan keluar tulisan standard yang ada pada index.html, yaitu : It Works!
Selanjutnya tinggal instalasi PHP supaya web server kita bisa menjalankan script-script PHP. Instalasinya sama saja dengan MySQL dan Apache :
cd /usr/ports/lang/php5
make config –> centang opsi Apache
make install clean
Karena pada dasarnya php termasuk suatu modul pada Apache, maka apabila kita ingin Apache kita bisa menjalankan script PHP, setelah diinstal kita harus mengatur konfigurasi pada Apache supaya me-load PHP. Masukkan baris ini pada httpd.conf :
LoadModule php5_module libexec/apache/libphp5.so
Nah, bila kita sudah menginstal Apache terlebih dahulu, maka kita tidak perlu melakukan hal ini lagi ^__^.
Kemudian kita juga perlu merubah settingan berikut ini pada httpd.conf :
DirectoryIndex index.php index.html index.htm
Ini dimaksudkan supaya Apache bisa menampilkan halaman awal berformat PHP (index.php) bila ada.
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Supaya Apache bisa membaca script-script php
cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
File konfigurasi untuk PHP sendiri harus berada dalam format php.ini, tetapi tidak perlu dirubah2, karena sudah cukup bagus.
Kemudian tinggal kita restart saja Apache dengan menggunakan perintah
apachectl restart
Untuk mengetes php, kita buat file pada /usr/local/www/data yang bernama tes.php
kemudian isikan dengan syntax php berikut ini :
<? phpinfo(); ?>
Bila PHP sudah terinstall dengan baik, maka bila kita buka browser kita dan ketikkan http://domainserveranda.com/tes.php maka akan tampil informasi tentang server kita. Tetapi apabila PHP belum terinstall dengan baik, maka yang akan tampil hanya script yang kita tuliskan tadi. Apabila hal ini terjadi, maka cek ulang konfigurasi apache yang telah dilakukan, atau install ulang saja PHP nya ^__^
* virtual hosts *
Ketika kita menyediakan sebuah mesin (web server) untuk tempat hosting. Terkadang ada saatnya kita harus menyediakan tempat untuk lebih dari satu website yang akan diletakkan di web server kita. Sebagian besar permasalahan virtual hosts ini sangat erat hubungannya dengan domain name dari website yang ada di web server kita.
Ada dua kemungkinan yang menyebabkan virtual hosts dibutuhkan, yang pertama kita ingin mengubah domain dari webserver kita, karena domain kita yang lama telah habis masa berlakunya, atau karena alasan lain. Yang kedua bila kita menyediakan tempat untuk hosting dari banyak pihak di web server kita, dimana tiap pihak ingin memiliki domain name yang berbeda-beda.
Misalkan saja, ada 3 departemen dalam kantor kita yang ingin hosting website di web server kita, sebut saja departemen SDM, Maintenance, dan SarPras.
Untuk mengaplikasikan hal ini kita tinggal menambahkan beberapa baris saja di file httpd.conf kita, seperti :
NameVirtualHost 167.205.79.158
<VirtualHost 167.205.79.158>
DocumentRoot /usr/local/www/data/sdm
ServerName sdm.comlabs.itb.ac.id
ErrorLog /var/log/freebsddiary-error.log
TransferLog /var/log/freebsddiary-access.log
</VirtualHost>

<VirtualHost 167.205.79.158>
DocumentRoot /usr/local/www/data/sarpras
ServerName sarpras.comlabs.itb.ac.id
ErrorLog /var/log/freebsddiary.yi.org-error.log
TransferLog /var/log/freebsddiary.yi.org-access.log
</VirtualHost>

<VirtualHost 167.205.79.158>
DocumentRoot /usr/local/www/data/maintenance
ServerName maintenance.comlabs.itb.ac.id
ErrorLog /var/log/freebsddiary.yi.org-error.log
TransferLog /var/log/freebsddiary.yi.org-access.log
</VirtualHost>
Sederhana saja bukan? Perlu diingat agar semua file milik tiap departemen haruslah diletakkan di DocumentRoot setiap departemen masing-masing.
* https or Secure Socket Layer (SSL) *
Ketika kita membutuhkan enkripsi untuk website yang mengirimkan informasi penting seperti username dan password kita untuk mengakses sesuatu, maka kita harus menambahkan sebuah fitur pada Web Server Apache kita. Fitur ini biasa disebut dengan SSL. Ketika saya memutuskan untuk menginstall apache versi 2.2, maka saya menemukan bahwa sebuah package secara otomatis ikut terinstall pada sistem saya, package itu adalah openssl-0.9.8g. Open ssl adalah salah satu dari program freeware yang mendukung ssl, oleh karena itu saya memutuskan untuk menggunakan program ini. Hal pertama yang perlu dilakukan untuk mengaktifkan SSL adalah membuat certificate untuk web server kita. Untuk aman nya, kita akan membuat certificate ini pada home directory root untuk nantinya dicopy ke directory yang benar, sehingga kita memiliki backup file apabila ada kesalahan dalam certificate kita. Pada directory /root ketikkan perintah ini :
openssl genrsa -des3 -out server.key 1024
Kemudian openssl akan menanyakan phrase key, masukkan sesuai keinginan anda, tapi jangan sampai lupa karena akan ditanyakan lagi setelah ini dan setiap kali openssl dijalankan. Selanjutnya, ketikkan perintah :
openssl req -new -key server.key -out server.csr
Dimana setelah mengetikkan perintah ini kita akan ditanyai bermacam-macam pertanyaan tentang web server kita. Jawab saja sebisanya :p
Kemudian tibalah saatnya untuk menandatangani certificate yang sudah kita buat, caranya gunakan perintah ini :
openssl x509 -req -days 365 -in /root/server.csr -signkey /root/server.key -out /root/server.crt
Oke, certificate yang dibuat sudah aktif selama 365 hari, dan bisa kita ganti apabila kita menghendakinya. Sekarang kita tinggal menaruh 2 file yang sudah kita buat tadi ke directory /usr/local/etc/apache22 caranya gunakan perintah :
cp /root/server.key /usr/local/etc/apache22
cp /root/server.crt /usr/local/etc/apache22
Kemudian kita harus mengeset permission untuk kedua file tersebut supaya hanya bisa dibaca oleh pemiliknya, yaitu root. Caranya gunakan perintah :
chmod 0400 /usr/local/etc/apache22/server.key
chmod 0400 /usr/local/etc/apache22/server.crt
Selanjutnya kita harus mengatur file konfigurasi apache yang mengatur tentang SSL. File ini adalah
/usr/local/etc/apache22/extra/httpd-ssl.conf
Yang harus diubah adalah bagian Server Certificate, dimana kita harus memasukkan path yang benar dengan file server.crt yang telah kita copy ke directory /usr/local/etc/apache22 tadi. Jangan lupa untuk meng-uncomment line ini, sehingga menjadi :
SSLCertificateFile “/usr/local/etc/apache22/server.crt”
Terakhir kita harus mengedit file httpd.conf agar membaca konfigurasi yang sudah kita lakukan pada file httpd-ssl.conf. Bagian yang mengatur tentang SSL ini ada di akhir file httpd.conf, tinggal di uncomment saja, sehingga menjadi :
Include etc/apache22/extra/httpd-ssl.conf
Kemudian untuk menjalankan openSSL, kita tinggal merestart saja apache22 kita, karena openSSL ini adalah suatu fitur built-in pada apache22.
Demikianlah, kita telah selesai membuat Web Server yang mensupport database MySQL, bahasa PHP, dan enkripsi https menggunakan OpenSSL. Terimakasih ^__^
Apabila terdapat error berikut ini saat menjalankan apache :
Failed to enable the ‘httpready’ Accept Filter
maka dapat diatasi dengan dua cara, antara lain :
pertama secara default ternyata FreeBSD belum load httpready dalam kernel nya jadi harus di load donk
cara load nya ada dua cara :
1. Dengan mengetikan kldload accf_http kelemahannya setiap kali abis restart harus ketik itu sebelum jalanin apache
2. Dengan merubah loader.conf yang ada di folder /boot/default supaya otomatis load accf_http setiap kali restart caranya:
Buka file loader.conf dengan editor kesayangan anda contoh nya pico jadi command nya pico /boot/default/loader.conf
kemudian cari entri berikut ini
accf_data_load=”NO” # Wait for data accept filter
accf_http_load=”NO” # Wait for full HTTP request accept filter
dan ganti NO dengan YES kemudian save.
setelah di simpan silahkan restart box anda dan sekarang apache pun bisa di load tanpa ada pesan error Failed to enable the ‘httpready’ Accept Filter.
Untuk memberikan fitur web-based database management kepada user yang tidak suka mengatur database yang ada pada web mereka dengan command-line, kita bisa menginstall phpMyAdmin di server kita. Langkah-langkahnya :
cd /usr/ports/databases/phpmyadmin
make install clean
phpMyAdmin akan terinstall di direktori /usr/local/www/phpMyAdmin
supaya kita bisa membukanya dari web, pindahkan lah direktori phpmyadmin beserta seluruh isinya ke Document Root anda.
secara default, apache akan meletakkan DocumentRoot anda di /usr/local/www/apache22/data jadi,
mv /usr/local/www/phpMyAdmin /usr/local/www/apache22/data
apachectl restart
selanjutnya kita harus mengkonfigurasi phpmyadmin sesuai dengan kebutuhan kita, caranya kita bisa memanfaatkan script php yang sudah disediakan. Tapi sebelum itu kita perlu melakukan beberapa persiapan, yaitu :
cd /usr/local/www/apache22/data/phpMyAdmin
mkdir config
chmod 777 config
kemudian baru dengan web browser anda, bukalah :
http://ip-address-server-anda/phpMyAdmin/scripts/setup.php
yang bisa anda lakukan pada halaman web ini adalah :
1. Memberlakukan authentikasi untuk user yang ingin membuka halaman web ini, caranya :
pada menu authentication type, pilih “http”
2. Mengatur password yang digunakan oleh user root untuk membuka halaman web ini, caranya :
isikan password pada kolom dibawah kolom yang bertuliskan “root”
3. Save Konfigurasi anda
Dengan tetap berada di direktori /usr/local/www/apache22/data/phpMyAdmin, lakukan :
cp config/config.inc.php .
Kemudian hapus direktori config dan set permission untuk file konfigurasi kita :
rm -rf config
chmod 444 config.inc.php
 Sekian......!!!!

0 komentar:

Posting Komentar