Facebook

(Mario Teguh)

A person who is looking for happiness outside of himself, will find that happiness belongs to other people.

Ustadz Imam

Rawat dan jagalah Qur'an,Maka ia akan menjagamu..

Angga Eka Prasetya

Wanita pertama yang paling berhak atas cinta suci anaknya adalah Ibu

Albert Einstein

Salah satu tujuan terciptanya waktu adalah agar semuanya tak terjadi sekaligus...

Powered By Blogger

Selasa, 16 April 2013

Modul 2- Membangun Web Server sederhana dengan Java

Nah,setelah banyak mempelajari routing dengan UML pada postingan lalu, sekarang saya coba berbagi tentang membuat Web server dengan Java Programminng. Konsep pembuatan web server dengan Java Pogramming ini tak jauh beda dengab Java Socket Programming namun bertindak sebagai server untuk melayani request.


/*masukkan source code di sini*/

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package webserver;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Webserver {

    
    public static String readLine(InputStream is) throws IOException
    {
        String request = "";
        char c;
        while(true)
        {
            c = (char)is.read();
            request+=c;
            if(c == '\n')
                break;
        }
        
        return request;
    }
    
    public static void main(String[] args) {
        try 
        {
            ServerSocket ss = new ServerSocket(9999);
            //while(true)
            //{
                Socket s = ss.accept();
                BufferedInputStream inputStream = new BufferedInputStream(s.getInputStream());
                BufferedOutputStream outputStream = new BufferedOutputStream(s.getOutputStream());
                
                String request;
                while(!(request = readLine(inputStream)).equals("\r\n"))
                    System.out.print(request);
                System.out.print(request);
                
                String response = "HTTP/1.0 200 OK\r\n" + "Content-Type: text/html\r\n" + "\r\n" ;
                String answer = "";
                
                BufferedReader br = new BufferedReader (new FileReader("E:\\Kuliah\\qaqa.html"));
                while((answer = br.readLine()) != null)
                {
                    response += answer;
                }
                
                
                outputStream.write(response.getBytes());
                outputStream.flush();                
                
                inputStream.close();
                outputStream.close();
                s.close();
            //}
        } 
        catch (IOException ex) 
        {
            Logger.getLogger(Webserver.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}


Modul 2 - Proxy Server : Squid

Disini kita akan coba bermain-maind dengan proxy server. Kita akan memakai Squid untuk Proxy Server Kita.
Cara Install Squid Proxy :

  1. Pertama-tama install terlebih dahulu squid melalui terminal atau melalui command prompt dengan cara :
    apt-get install squid
  2. Setelah selesai maka Squid langsung dapat di konfigurasikan dengan cara :
    nano /etc/squid/squid.conf
  3. Tetapi sebelum di edit terlebih dahulu backup dulu file aslinya agar kalau rusak bisa dikembalikan ke default :
    nano /etc/squid/squid.conf /etc/squid/squid.conf.bak
  4. Baru kemudian kita mulai bermain-main dengan konfigurasi script Squid :
    nano /etc/squid/squid.conf
Cara setting konfigurasi Squid Proxy :
Biasanya untuk mengatur kecepatan internet kita lakukan Filtering:
  1. Filtering : Ini merupakan bagian terpenting dari Squid, dengan ini kita bisa mngatur rule-rule, dari mulai siapa saja yang bisa mengakses internet sampai website apa yang diizinkan untuk di akses.Access List : Siapa saja yang dapat mengakses Internet
  • contoh perintah : acl host1 src 172.16.0.1
  • acl : merupakan perintah access list
  • user : nama user yang memiliki IP atau group
  • src : merupakan source ip yang digunakan, bisa menggunakan range jika ingin membuat group

         2. Filtering Waktu : Memberikan izin akses berdasarkan waktu dan hari
  • perintah : acl waktu-akses time MTWHFA 00:00-14:00
  • acl : perintah access list
  • waktu-akses : caption untuk perintah acl
  • time : perintah squid utk mendefinisikan waktu
  • MTWHFA : merupakan perintah squid untuk mendefinisikan waktu
  • M : Monday, T : Tuesday, etc…..
  • 00:00-14:00 : Merupakan waktu yang diperbolehkan untuk memberikan akses internet ke penggunaFiltering Website : Memfilter website apa saja yang tidak boleh diakses oleh pengguna.
  • misal kita melarang untuk mendownload file .pdf .mp3 dan .doc
  • acl file url_regex -i \.pdf$ \.doc$ \.mp3$
     3.Untuk membatasi kecepatan kita menggunakan delay pool
contoh:
delay_pool3
delay_class 1 1
                  delay_access 1 allow host1 waktu !weekend
                  delay_parameters 1 10000/10000
script di atas membatasi kecepatan user host1 menjadi max 10 KBps



4.Untuk membuat user lain dapat menggunakan proxy maka proxy harus di export terlebih dahulu dengan cara:
export http_proxy=ip_proxy:port_proxy

Modul 2 - Web server

Web server apache secara default sudah dapat digunakan dengan baik dan cukup stabil, namun ada baiknya kita meningkatkan kinerja apache tanpa harus menambah hardware baru seperti RAM dan CPU. Tips dan trik ini dilakukan untuk tuning (menyetel) kinerja apache menjadi lebih optimal. 


Konfigurasi optimasi Apache dengan asumsi guaranted RAM sebesar 8 MB.
Cara konfigurasinya :
1. Ketik free -m maka keluar seperti gambar dibawah ini :


2.Catat nilai yang dicatat sama used
3. Berapa tuh nilai apache yang ada di kamu. Kalau saya ada 8 mb
4. Kalikan sama 0.8 buat rata-rata AVAILABLE APACHE POOL
5. Bagi AVAILABLE APACHE POOL sama nilai RES tertinggi
6. Open httpd.conf . Kalau di saya sih: nano /etc/apache2/apache2.conf


7. Set MaxClients yang udah tadi dihitung

8. Set KeepAlive jadi Off. Sebenarnya mau OFF apa ON bisa aja sih. Eh ada beda sih, kalau OFF ntar     server akan menangani banyak request per detik. Tapi pasti bakal butuh banyak memori tuh. Jadi amannya di OFF in aja dah 9. Set Timeout jadi nilai normal. 

10. Set MaxKeepAliveRequest antara 70-200.

11. Set MinSpareServers 10-20% MaxClient

12. Set MaxSpareServers 10-20% MaxClient

13. Set StartServers sama dengan MaxSpareServers dan MinSpareServers

14. Set MaxRequestsPerChild antara 500-10000. 

15. Save konfigurasinya. Jangan lupa aktifkan apachenya lagi.
      Ketik: service apache2 start