Instalasi Lighttpd CGI BIN Dengan Mod Perl Di FreeBSD
Aplikasi CGI dapat dibaca dan ditulis ke semua bahasa komputer yang berasal dari STDIN dan ditulis ke STDOUT, terlepas dari apakah program tersebut ditafsirkan oleh shell Unix dan dikompilasi oleh C atau C++, atau kombinasi keduanya, misalnya Perl. Program CGI pertama ditulis dalam C dan perlu dikompilasi menjadi file biner yang dapat dieksekusi.
Oleh karena itu, direktori tempat program CGI yang dikompilasi dieksekusi diberi nama cgi-bin, dan direktori file sumber diberi nama cgi-src. Saat ini sebagian besar server dilengkapi dengan direktori yang telah dikonfigurasi sebelumnya untuk program CGI.
Interaksi antara browser dan server web diatur oleh HyperText Transfer Protocol (HTTP), yang sekarang menjadi standar Internet resmi. HTTP menggunakan model permintaan dan respons sederhana. Misalnya, klien membuat koneksi TCP ke server dan mengirimkan permintaan, server mengirimkan respons, dan koneksi ditutup. Permintaan dan respons tersebut berbentuk pesan yang ditulis dalam serangkaian baris teks sederhana.
Pesan permintaan dan respons HTTP memiliki dua bagian. Yang pertama adalah header, yang berisi informasi deskriptif tentang permintaan atau respons. Berbagai jenis header dan kemungkinan isinya ditentukan sepenuhnya oleh protokol HTTP.
Header diikuti oleh baris kosong, lalu badan pesan. Badan pesan adalah konten pesan yang sebenarnya, seperti halaman HTML atau gambar GIF.
1. Tentang Common Gateway Interface (CGI)
Common Gateway Interface atau disingkat CGI merupakan standar untuk menghubungkan berbagai program aplikasi ke halaman web. CGI ibarat program komputer yang bertindak sebagai perantara antara standar HTML yang membuat tampilan web dengan program lain, seperti basis data.
Hasil yang diperoleh dari proses pencarian dikirim kembali ke halaman web untuk ditampilkan dalam format HTML.
Pada awalnya CGI merupakan salah satu pendekatan yang digunakan untuk aplikasi pemrograman sisi server. Program CGI yang sering digunakan adalah C++ dan Perl. CGI merupakan bagian dari web server yang dapat berkomunikasi dengan program lain yang ada di server.
Dengan CGI, web server dapat memanggil program yang dibuat dari berbagai bahasa pemrograman (Common). Interaksi antara pengguna dengan berbagai aplikasi, misalnya basis data, dapat dijembatani oleh CGI (Gateway). Kemampuan CGI ini dapat digunakan untuk IIS Web Server.
Protokol HTTP membuat klien dan server saling memahami dengan mentransfer semua informasi di antara keduanya menggunakan header, di mana setiap header merupakan pasangan kunci-nilai. Saat Anda mengirimkan formulir, program CGI mencari header yang berisi informasi input, memproses data yang diterima, misalnya, meminta kata kunci yang diberikan melalui formulir ke database, dan saat siap untuk mengembalikan respons ke formulir.
Klien akan mengirimkan header khusus yang memberi tahu klien jenis informasi apa yang diharapkan, diikuti oleh informasi itu sendiri. Server dapat mengirimkan header tambahan, tetapi ini bersifat opsional. Lihat gambar di bawah ini.
CGI sering digunakan sebagai mekanisme untuk memperoleh informasi dari pengguna melalui pengisian formulir, akses ke basis data, atau pembuatan halaman dinamis. Meskipun pada prinsipnya mekanisme CGI tidak memiliki celah keamanan, program atau skrip yang dibuat sebagai CGI dapat memiliki celah keamanan atau tidak sengaja. Celah keamanan potensial yang dapat terjadi dengan CGI meliputi:
- Pengguna yang nakal dapat memasang skrip CGI sehingga dapat mengirimkan berkas kata sandi kepada pengunjung yang menjalankan CGI.
- Program CGI dipanggil berkali-kali sehingga server menjadi terbebani karena harus menjalankan beberapa program CGI yang menghabiskan memori dan siklus CPU dari server web.
2. Menginstal Perl Language
Karena kita akan mengaktifkan mod CGI BIN pada Lighttpd, yang pertama harus anda lakukan adalah menginstal bahasa Perl terlebih dahulu. Server FreeBSD memiliki sistem paket binernya sendiri. Ini akan memudahkan Anda untuk menginstal dan mengelola perangkat lunak. Dengan sistem paket ini Anda juga dapat mengelola instalasi modul Perl.
Ketik perintah berikut untuk menginstal Perl5.
root@ns5:~ # pkg install perl5.38-5.38.2_1
Perintah di atas akan menginstal Perl5 di server FreeBSD Anda, dan jalur biner ke Perl adalah /usr/local/bin/Perl.
Karena banyaknya versi Perl di repositori paket FreeBSD, Anda harus menentukan versi Perl di berkas /etc/make.conf.
root@ns5:~ # ee /etc/make.conf
DEFAULT_VERSIONS+= perl5=5.30
3. Mengaktifkan mod CGI on Lighttpd
Prinsip CGI dan cara menulis aplikasi CGI bukanlah fokus pembahasan ini. Namun, memahami konfigurasi CGI membantu memahami kode mod_cgi yang akan kita terapkan untuk mengonfigurasi lighttpd agar menjalankan proses CGI.
Sebelum Anda melanjutkan pembahasan artikel ini, agar lebih mudah mengonfigurasi mod CGI pada Lighttpd, sebaiknya Anda membaca artikel kami sebelumnya.
"Instalasi dan Konfigurasi FreeBSD Lighttpd Plus Mod OpenSSL".
Sebelum mengaktifkan mod CGI, pertama-tama kita instal beberapa aplikasi PHP yang dibutuhkan Lighttpd untuk mengaktifkan mod CGI. Ketik perintah ini untuk menginstal dependensi mod CGI.
root@ns5:~ # pkg install php82 mod_php82 php82-mysqli php82-xmlwriter
root@ns5:~ # pkg install php82-gd php82-phar php82-ctype php82-filter php82-iconv php82-curl php82-mysqli php82-pdo php82-tokenizer php82-mbstring php82-session php82-simplexml php82-xml php82-zlib php82-zip php82-dom php82-pdo_mysql php82-ctype
Oke, sekarang mari kita lanjutkan dengan mengaktifkan mod CGI. Buka file "/usr/local/etc/lighttpd/modules.conf", dan masukkan mod_cgi di dalam file tersebut.
server.modules = (
# "mod_rewrite",
"mod_access",
# "mod_auth",
# "mod_authn_file",
# "mod_redirect",
# "mod_setenv",
"mod_alias",
"mod_cgi",
"mod_fastcgi"
)
Sekarang modul CGI sudah aktif, kita akan menjalankan modul tersebut. Buka berkas "/usr/local/etc/lighttpd/conf.d/cgi.conf" dan hapus semua skrip di dalamnya, lalu ganti dengan skrip di bawah ini.
$HTTP["url"] =~ "/cgi-bin/" {
cgi.assign = ( ".pl" => "/usr/local/bin/perl",
".cgi" => "/usr/local/bin/perl",
".rb" => "/usr/bin/ruby",
".erb" => "/usr/bin/eruby",
".py" => "/usr/local/bin/python" )
}
Dokumen yang diakhiri dengan ".pl", ".cgi", dan ".py" akan dianggap sebagai program CGI. Penerjemah untuk program ini akan segera diikuti. Langkah selanjutnya adalah memulai ulang Lighttpd.
root@ns5:~ # service lighttpd restart
4. Menjalankan Lighttpd mod_cgi
Setelah Anda selesai mengonfigurasi semuanya, lakukan pengujian untuk melihat apakah konfigurasi di atas dapat berjalan di server web Lighttpd. Anda membuat folder "/usr/local/www/data/cgi-bin", lalu membuat file "arrays.pl".
root@ns5:~ # mkdir -p /usr/local/www/data/cgi-bin
root@ns5:~ # cd /usr/local/www/data/cgi-bin
root@ns5:/usr/local/www/data/cgi-bin # touch arrays.pl
root@ns5:/usr/local/www/data/cgi-bin # chown -R www:www /usr/local/www/data/cgi-bin
Pada berkas "/usr/local/www/data/cgi-bin/arrays.pl, Anda masukkan skrip berikut ini.
#!/usr/bin/perl
use strict;
use warnings;
# initializing arrays
my @places = ('Bangalore', 'Chennai', 'Coimbatore');
my @prime_numbers = (2, 3, 5, 7);
my @books;
$books[0] = 'Harry Potter';
$books[1] = 'Sherlock Holmes';
$books[2] = 'To Kill a Mocking Bird';
my @mixed_arr = ('Hello', 1, 'q', @places, $books[0]);
# ----- printing entire array -----
print "\@places: @places\n";
print "\@prime_numbers: @prime_numbers\n";
print "\@mixed_arr: @mixed_arr\n";
# use join to connect array items with preferred characters
print "My favorite books: ".join(', ', @books)."\n\n";
# ----- printing individual item -----
print "First item in \@places: $places[0]\n";
print "Last item in \@places: $places[-1]\n";
print "Third last item in \@mixed_arr: $mixed_arr[-3]\n";
# ----- printing array slice -----
print "2nd and 3rd item in \@prime_numbers: @prime_numbers[1..2]\n\n";
# ----- array size -----
print "Index of last item in \@places: $#places\n";
my $arr_size = @places;
print "Number of items in \@places: $arr_size\n\n";
# ----- manipulating array -----
# Add an item, same as $places[$#places + 1]
$places[3] = "Salem";
print "Manually add item: @places\n";
# Delete first item and shift left
shift(@places);
print "shift: @places\n";
# Delete last item
pop(@places);
print "pop: @places\n";
# Add an item at end of array
push(@places, "Mysore");
print "push: @places\n";
# Add an item at beginning of array
unshift(@places, "Hyderabad");
print "unshift: @places\n";
# change array size by assigning value to $#places
# Change no. of items to 2
$#places = 1;
print "\$#places = 1 @places\n";
# Change no. of items to 0
$#places = -1;
print "\$#places = -1 @places\n";
Buka peramban web Google Chrome, ketik "http://192.168.5.2/cgi-bin/arrays.pl", hasilnya seperti yang ditunjukkan pada gambar di bawah ini.
Kita lanjutkan dengan menguji file .cgi. Masih di folder "/usr/local/www/data/cgi-bin", buat file dengan nama "cgiperl.cgi".
root@ns5:/usr/local/www/data/cgi-bin # touch cgiperl.cgi
root@ns5:/usr/local/www/data/cgi-bin # chown -R www:www cgiperl.cgi
Ketikkan skrip berikut ini kedalam file "/usr/local/www/data/cgi-bin/cgiperl.cgi".
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print <<htmlcode;
<html>
<head>
<title>CGI Perl Example</title>
</head>
<body>
<h1>CGI Perl Example</h1>
<h3><p>Congratulations on successfully configuring the Perl mod on Apache24!</p><h3>
</body>
Anda membuka Google Chrome lagi, ketik "http://192.168.5.2/cgi-bin/cgiperl.cgi". Silakan lihat hasilnya.
Mengonfigurasi skrip CGI pada server web Lighttpd merupakan proses yang relatif sederhana yang dapat dilakukan dengan mengikuti panduan yang terdapat dalam artikel ini. Mengaktifkan dukungan CGI, membuat skrip CGI, mengonfigurasi Lighttpd untuk mengenali skrip, dan menguji skrip merupakan langkah-langkah penting dalam mengonfigurasi skrip CGI di Lighttpd.
Dengan langkah-langkah ini, Anda dapat membuat halaman web yang dinamis dan interaktif yang dapat digunakan untuk menyediakan informasi atau layanan kepada pengunjung situs web Anda.
