FTP Server

1. Pengertian FTP

File Transfer Protocol (FTP) adalah protokol yang berfungsi untuk tukar-menukar file dalam suatu network yang menggunakan TCP koneksi bukan UDP. Dalam FTP harus ada FTP Server dan FTP Client.

FTP Server adalah suatu server yang menjalankan software yang memberikan layanan tukar menukar file dengan selalu siap memberikan layanan FTP apabila mendapat request dari FTP client.

FTP Client adalah computer yang merequest koneksi ke FTP server untuk tukar menukar file. Jika terhubung dengan FTP server, maka client dapat men-download, meng-upload, merename, men-delete, dll sesuai dengan izin yang diberikan oleh FTP server.


1. Keamanan FTP

FTP sebenarnya tidak aman dalam mentransfer suatu file karena file dikirimkan tanpa di-enkripsi terlebih dahulu tetapi bila menggunakan SFTP (SSH FTP) yaitu FTP yang berbasis pada SSH atau menggunakan FTPS (FTP over SSL) sehingga data yang akan dikirim dienkripsi terlebih dahulu.

1. Mode Dalam FTP

FTP biasanya menggunakan dua buah port untuk koneksi yaitu port 20 dan port 21 dan berjalan exclusively melalui TCP bukan UDP. FTP server mendengar pada port 21 untuk incoming connection dari FTP client. Biasanya port 21 adalah command port dan port 20 adalah data port. Pada FTP server, terdapat 2 mode koneksi yaitu aktif mode (active mode) dan pasif mode (passive mode).

1. Active Mode
Pada aktif mode ini, server secara aktif terhubung dengan client. Untuk melakukan pengaturan aktif mode, client mengirimkan sebuah port command ke server, menentukan alamat dan nomor port dari client yang sedang mendengar. Bila suatu koneksi diperlukan, server memulai suatu koneksi ke client di alamat ini. Secara umum, server bertanggung jawab untuk menutup koneksi-koneksi ini.

2. Passive Mode

Pada pasif mode, client memulai koneksi dengan server dengan memecahkan permasalahan dalam firewall penyaring koneksi port data ke client menuju server. Pertama, client menghubungi server pada command port dan mengeluarkan perintah PASV. Server kemudian memberikan jawaban dengan port 2024, memberitahu client bahwa port tersebut sedang mendengarkan untuk koneksi data. Kemudian, client memulai koneksi data dari data port-nya ke data port yang telah ditentukan oleh server.

Contoh aplikasi FTP server :

- Proftpd
- Vsftpd
- Wuftpd
- IIS (didalamnya terdapat FTP Server)

Contoh aplikasi FTP client

- CuteFTP, Wget
- WsFTP
- GetRight
- AbsoluteFTP


1. Perintah FTP

Perintah-perintah FTP yang dikirimkan terdiri atas string teks sederhana. Sebagai contoh, untuk mendapatkan kembali file, client mengirimkan “RETR filename” di koneksi kendali ke FTP server. Untuk mentransfer file, client mengirimkan “STOR filename”. FTP server mengetahui setiap perintah pada setiap balasan FTP, dimana terdiri atas tiga digit. Digit pertama menandai adanya tanggapan yang baik, tidak baik, atau yang tidak sempurna. Jika satu kesalahan terjadi, maka digit kedua digunakan untuk mendeteksi kesalahan yang terjadi. Dengan cara yang sama, digit ketiga digunakan untuk lebih menspesifikasikan kesalahan yang terjadi. Digit pertama merupakan digit yang paling utama, dan kemungkinan nilai yang muncul adalah sebagai berikut :

• 1yz Positive Preliminary reply. Permintaan diketahui, namun balasan lain dari client tetap diharapkan

• 2yz Positive Completion reply. Permintaan sukses dilakukan, sehingga client dapat mengirim permintaan lain

• 3yz Positive Intermediate reply. Perintah telah diterima, namun masih membutuhkan informasi yang lain. Client diharuskan untuk mengirimkan balasan perintah lainnya

• 4yz Transient Negative reply. Perintah gagal, namun masih ada kesempatan untuk mencobanya lagi

• 5yz Permanent Negative Completion reply. Perintah gagal, namun tidak harus diulangi lagi

Contoh perintah FTP :

• Untuk mengubah direktori yang dikirimkan oleh client :
CWD namadirektori
Server akan merespon dengan :
250 CDW command successful
Sebagai balasan, dimulai dengan a ’2’, dimana urutan perintah diselesaikan.

• Bila ingin merubah salah satu direktori dan itu tidak ada, maka perintahnya :
CWD namadirektoriyanghilang
Server akan merespon dengan :
550 namadirektoriyanghilang : The system cannot find the file spesified
Balasannya ialah a ‘5’, berarti gagal dan tetap gagal jika diulangi (kecuali direktori hilang diciptakan di server).

• Sesi Perintah (Session Commands)
Untuk memulai sesi perintah FTP, maka perintah dari USER yang dikirimkan ke server adalah :
USER chafid
Server akan memberikan balasan :
331 Password required for javaftp
Client harus memberikan balasan dengan mengisi password :
PASS 123456
Server akan memberikan balasan :
230 User chafid logged in
Setelah login user dapat menggunakan perintah yang berhubungan dengan direktori dan file. Untuk mengakhiri, client mengirimkan perintah sebagai berikut :
QUIT
Server akan memberikan balasan :
221
Sesi akhirnya ditutup, sehingga perintah apapun yang dikirimkan sudah tidak diterima lagi.

1. Tujuan pembangunan FTP Server

• Sharing data

• Menyediakan indirect atau implicit remote computer

• Menyediakan tempat penyimpanan bagi user

• Menyediakan transfer data yang reliable dan efisien

1. Alat dan bahan

• PC dengan OS Windows 2000 Server kalau tidak ada bisa menggunakan Windows XP
• Master Windows 2000 Server untuk instalasi FTP
Windows NT Workstation 4.0 (1996)
Upgrade yang ditujukan pada sistem operasi desktop kelas bisnis ini memberikan kemudahan penggunaan dan pengaturan yang lebih sederhana, keluaran jaringan yang lebih besar, dan alat untuk pengembangan dan mengatur intranet. Windows NT Workstation 4.0 termasuk juga didalamnya berupa tampilan Windows 95 dengan peningkatan pada jaringan untuk lebih mudah dan lebih aman dalam mengakses internet dan intranet.
Dibandingkan dengan Windows NT, segala macam jenis komputer yang ada dapat mengoperasikan sistem operasi LINUX. Sehingga untuk menjalankan LINUX, pemakai tidak perlu mengorek isi kantong yang lebih untuk sebuah sistem berbasis Pentium II, AMD K6 atau bahkan Pentium III. Berbeda dengan Windows NT yang secara fisik memang lebih enak digunakan dan lebih interaktif, namun membutuhkan banyak persyaratan tertentu.
Sistem Operasi Persyaratan Minimum
Intel – Compatible RISC System
LINUX 386/16 MHz
4 Mb of RAM
20 Mb hard disk space
CDROM drive 16 Mb of RAM
100 Mb hard disk space
CDROM drive
Windows NT 486/33 MHz (NT 3.51 / 4.0)
Pentium 166 or higher (NT 5.0)
32 Mb of RAM (NT.4.0)
64 Mb of RAM (NT. 5.0)
125 Mb hard disk space (NT. 4.0)
400 Mb hard disk space (NT.5.0)
CDROM drive
VGA/SVGA compatible 16 Mb of RAM
160 Mb hard disk space
CDROM drive
VGA/SVGA compatible

Ditinjau dari sisi software itu sendiri bahwa kestabilan sebuah internet server sangat tergantung pada sistem operasi yang dipakai, dan dari hasil penelitian tingkat stabilitas yang dimiliki LINUX masih jauh lebih baik dibandingkan dengan Windows NT. Selain itu unjuk kerja LINUX juga lebih baik dan lebih cepat karena tidak terbebani oleh pemakaian GUI (Graphical User Interface).
Fleksibilitas LINUX juga menjadikannya dapat dioperasikan hanya dengan menggunakan perintah-perintah dasar, sedangkan Windows NT server harus dioperasikan dengan GUI. Dengan demikian NT tidak hanya memiliki beban tambahan namun juga meningkatkan potensi resiko terjadinya kesalahan pada sistem.
Sebenarnya yang paling menentukan unggulnya kinerja LINUX dibandingkan Windows NT adalah kenyataan bahwa Windows NT memang memiliki sisstem yang bersifat statis. Hal ini berbeda dengan LINUX yang jauh lebih dinamis. Sebagai contoh kebutuhan Windows NT server selalu bekerja dengan menggunakan fungsi kernel secara maksimal, sementara LINUX dapat bekerja hanya dengan fungsi-fungsi kernel minimal yang dibutukan. Sehingga penggunaan memori dan prosesor dapat dioptimalkan.
Tiada komentar »
Instalasi Apache, PHP dan MySQL
Agustus 6, 2008 • Disimpan dalam Uncategorized
06.04.2008 by admin in Software
PHP dan MySQL biasanya berhubungan dengan LAMP (Linux, Apache, MySQL, PHP). PHP developer umumnya menggunakan platform Windows untuk membangun apliksi PHP. Sama seperti LAMP, WAMP ( Windows, Apache, MySQL, PHP ) juga membungkus Apache, MySQL, PHP dalam satu bundle. Tipikal dengan LAMP dan WAMP, ada juga XAMP dan Dongkrak. Penjelasan mengenai LAMP, WAMP, XAMP, Dongkrak akan saya tulis secara terpisah. Di artikel ini, anda akan belajar cara menginstall Apache, PHP, dan MySQL dilingkungan Windows.
Download paket-paket berikut :

• Apache : www.apache.org
• PHP : www.php.net
• MySQL : www.mysql.com

Pastikan Anda mendapatkan update terbaru dari masing-masing paket.
Sekarang kita akan memulai instalasi satu persatu.

• Install Apache
• Install PHP
• Modifikasi Konfigurasi Apache
• Install MySQL
• Modifikasi Konfigurasi PHP.ini

Install Apache

Menginstall Apache akan lebih mudah jika Anda mendownload paket dalam bentuk Microsoft Installer ( .msi). Double click icon dan ikuti installation wizard yang ada. Klik next hingga Anda melihat window Server Information. Anda bisa mengisi dengan localhost untuk Network Domain dan Server Name. Untuk email Administrator Anda bisa mengisi dengan sembarang nilai.
Dalam artikel ini saya menggunakan Windows XP dengan Apache terinstall sebagai Service sehingga setiap Windows start maka Apache juga start secara otomatis.

Klik tombol Next dan pilih Typical installation. Klik Next sekali lagi dan pilih dimana Anda ingin menginstall Apache (Default lokasinya C:\Program Files\Apache Group). Klik tombol Next dan Install untuk mulai proses instalasi.
Ketik di browser http://localhost di address bar. Jika instalasi Anda sukses, Anda akan melihat seperti ini :

Secara default, document root pada Apache adalah direktori htdocs. Document root adalah tempat Anda meletakkan semua file PHP atau HTML untuk diproses oleh Apache ( sehingga bisa dilihat oleh web browser ). Tentu saja Anda bisa meletakkan di direktori lain yang Anda inginkan. File konfigurasi Apache disimpan di C:\Program Files\Apache Group\Apache2\conf\httpd.conf (kita asumsikan Anda menginstall Apache di C:\Program Files\Apache Group ). File ini berbentuk plain text sehingga Anda bisa menggunakan Notepad atau Text Editor yang lain untuk mengedit.
Contoh, jika Anda meletakkan file PHP atau HTML di C:\www cukup edit bagian berikut di httpd.conf :
DocumentRoot “C:/Program Files/Apache Group/Apache2/htdocs”
dan rubah menjadi :
DocumentRoot “C:/www”
Jangan lupa untuk merestart Apache setiap melakukan perubahan ( Start > Programs > Apache HTTP Server 2.0.50 > Control Apache Server > Restart ) untuk mengetahui hasilnya.
Konfigurasi yang lain yang perlu dirubah adalah directory index. Ini adalah file yang akan di load oleh Apache jika Anda melakukan request pada directory. Contoh jika Anda mengetik http://www.kopionline.com/
tanpa diikuti file lain, maka index.php otomatis akan ditunjukkan.
Anggaplah Anda ingin Apache menggunakan index.html, index.php atau main.php sebagai directory index maka Anda cukup merubah nilai DirectoryIndex seperti ini :
DirectoryIndex index.html index.php main.php
Sekarang, setiap kali Anda request directory seperti http://localhost/ Apache akan mencoba menemukan file index.html , jika tidak ada, Apache akan menggunakan index.php. Dan jika Apache tidak menemukan index.php maka main.php akan digunakan, dan begitu seterusnya.
Install PHP
Pertama, extract paket PHP Anda. Saya lebih suka mengextrac dalam satu direktori yang sama dengan paket Apache yang sudah terinstall ( C:\Program Files\Apache Group\Apache2 ). Buat direktori php. Copy file php.ini-dist di direktori PHP ke direktori windows ( C:\Windows atau C:\Winnt tergantung jenis Windows ) dan rename file menjadi php.ini. Ini adalah file konfigurasi PHP yang nantinya akan kita modifikasi.
Selanjutnya, pindah file php4ts.dll dari direktori PHP ke subdirektori sapi. Anda juga bisa menempatkan php4ts.dll ketempat lain seperti :

• Direktori dimana apache.exe berada, yaitu ( C:\Program
Files\Apache Group\Apache2 \bin)

• Atau pada %SYSTEMROOT%\System32, %SYSTEMROOT%\system dan %SYSTEMROOT%
directory.Note: %SYSTEMROOT%\System32 hanya pada Windows NT/2000/XP)
• Atau pada semua %PATH%

Modifikasi Konfigurasi Apache
Apache belum mengenali instalasi PHP Anda. Anda harus menambahkan PHP pada konfigurasi Apache pada C:\Program Files\Apache Group\Apache2\conf\httpd.conf dan tambahkan baris-baris berikut :

LoadModule php4_module php/sapi/php4apache2.dll
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Baris pertama memberitahu Apache dimana me load dll yang dibutuhkan untuk menjalankan PHP dan baris kedua menunjukkan bahwa setiap file berekstensi .php akan diproses sebagai file PHP. Anda sebenarnya juga bisa mengubahnya ke apa saja yang Anda inginkan seperti .html atau bahkan .asp!. Baris ketiga ditambahkan agar Anda bisa melihat source code file PHP Anda di browser window(tentunya file dengan ekstensi .phps).
Sekarang restart Apache untuk melihat hasil perubahan yang Anda lakukan ( Start
> Programs > Apache HTTP Server 2.0.50 > Control Apache Server > Restart ) . Untuk mengetahui apakah konfigurasi Anda sudah benar buat file baru, beri nama test.php dan letakkan di direktori document root ( C:\Program Files\Apache Group\Apache2\htdocs ). Isi file tersebut seperti dibawah ini.

phpinfo() adalah fungsi PHP yang akan memberitahu Anda tentang segala hal mengenai PHP dan konfigurasi server yang telah Anda install. Ketik http://localhost/test.php pada browser address bar dan jika semunya benar, maka Anda akan melihat seperti ini :

Install MySQL
Pertama extract paket Anda (misalnya mysql-4.0.18-win.zip ) ke temporary directory, kemudian jalankan setup.exe. Klik tombol next hingga proses instalasi selesai. Secara default MySQL akan diisntall di C:\mysql.
Buka DOS window dan pindah ke direktori C:\mysql\bin dan ketik mysqld-nt –console , Anda akan melihat pesan sebagai berikut :
C:\mysql\bin>mysqld-nt –consoleInnoDB: The first specified data file .\ibdata1 did not exist:
InnoDB: a new database to be created!
040807 10:54:09 InnoDB: Setting file .\ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait…
040807 10:54:11 InnoDB: Log file .\ib_logfile0 did not exist: new to be
created
InnoDB: Setting log file .\ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait…
040807 10:54:12 InnoDB: Log file .\ib_logfile1 did not exist: new
to be created
InnoDB: Setting log file .\ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait…
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
040807 10:54:31 InnoDB: Started
mysqld-nt: ready for connections.
Version: ‘4.0.18-nt’ socket: ” port: 3306
Sekarang coba buka DOS window lain dan ketik C:\mysql\bin\mysql
jika instalasi Anda sukses, Anda akan melihat MySQL client sedang running :
C:\mysql\bin>mysqlWelcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.0.18-nt
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql>
Ketik exit pada console mysql> untuk keluar dari MySQL client.
Bagaimana install MySQL sebagai Service Windows? Prosesnya sederhana, cukup ketik mysqld-nt –install dan net start mysql untuk menjalankan service. Sebelumnya shutdown MySQL server dulu menggunakan mysqladmin -u root shutdown
C:\mysql\bin>mysqladmin -u root shutdown
C:\mysql\bin>mysqld-nt –install
Service successfully installed.
C:\mysql\bin>net start mysql
The MySQL service was started successfully.
C:\mysql\bin>mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.0.18-nt
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql>
Modifikasi file komfigurasi PHP ( php.ini )
PHP menyimpan semua konfigurasi dalam satu file yang disebut php.ini.Anda bisa mencari file ini pada direktori tempat PHP Anda diinstall. Beberapa perubahan kdang diperlukan misalnya untuk menggunakan PHP extension.
Beberapa perubahan yang diperlukan antara lain :
1. register_globals
2. error_reporting and display_errors
3. extension and extension_path
4. session.save_path
5. max_execution_time
register_globals
Sebelum PHP 4.2.0 default value untuk register_globals adalah On dan setelah 4.2.0 menjadi Off. Alasan utamanya tentu adalah source code yang aman apabila register_globals bernilai Off pada php.ini.
error_reporting and display_errors
Set value nya menjadi error_reporting = E_ALL selama pross development. Cuman saya lebih sering menggunakan E_ERROR, jadi hanya error yang krusial saja yang akan ditampilkan :p
Alasan menggunakan E_ALL selama pengambangan agar Anda bisa melihat semua Bugs(kesalahan)dalam code Anda. PHP akan mengeluarkan pesan error setiap code Anda salah dan pesan peringatan ( misalnya jika Anda mencoba menggunakan variable yang tidak diinisialisasi dulu).
Catatan, Anda bisa mengubah value nya menjadi E_NONE setelah development.
Jangan lupa untuk memberi nilai On pada bagian display_erros agar setting error_reporting = E_ALL juga berfungsi
extension dan extension_path
PHP4 punya sekitar 51 extensions seperti GD library ( untuk membuat dan memanipulasi grafik), CURL, PostgreSQL support dll. Extensions ini tidak secara otomatis berfungsi. Jika Anda membutuhkan extension tententu maka Anda juga harus menspesifikasi dimana extension tersebut dan menghilangkan tanda comment di extension yang ingin Anda gunakan pada file konfigurasi PHP.
Nilai extension_path harus diset sesuai dengan direktori dimana extension diinstal yang biasanya PHP_INSTALL_DIR/extensions, PHP_INSTALL_DIR adalah direktori instalasi PHP Anda. Contoh jika Anda menginstall PHP di C:\Program Files\Apache Group\Apache2\php maka extensions path adalah :
extension_path = C:/Program Files/Apache Group/Apache2/php/extensions/
Jangan lupa menambahakan slash agar berfungsi dengan benar
Setelah Anda menspesifikasi extension_path Anda juga harus menghilangkan tanda comment di extension yang ingin Anda gunakan pada file konfigurasi PHP pada extension yang digunakan. Comment diawalai dengan tanda semicolon (;). Contoh jika Anda ingin menggunakan GD library hiangkan tanda semicolon pada awal ;extension=php_gd2.dll menjadi extension=php_gd2.dll
session.save_path
Konfigurasi ini akan memberitahu PHP dimana menyimpan session data. Ubahlah sesuai keinginan Anda. Di Windows Anda bisa mengubah nilainya menjadi session.save_path = c:/windows/temp/
max_execution_time
Nilai default max_execution_time adalah 30 ( dalam detik ).
Jika script Anda butuh waktu lebih untuk proses maka Anda bisa merubah nilai max_execution_time lebih tinggi sesuai kebutuhan Anda
PHP memiliki fungsi untuk memodifikasi konfigurasi pada runtime,yaitu ini_set(). Setting file konfigurasi PHP menggunakan fungsi ini tidak permanent, ketika sebuah script selesai dieksekusi, maka setting ini juga hilang.

0 komentar:

Posting Komentar