Facebook Twitter
Showing posts with label Web Server. Show all posts
Showing posts with label Web Server. Show all posts
Comments

Java Web Server

Ngangur gini enaknya lanjutin blogging lagi deh
Kemarin kan kita sudah mencoba Web Server pada host UML yang kita buat, sekarang kita buat Web Server dari Java. But How??? These are some tricky ways to do that. Any body gonna have time for that, hehe...
1.       Pertama kita buat class baru pada project kita dengan nama JavaWebServer dan add this code chuy
package javawebserver;

public class JavaWebServer {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        // Kita instansiasi Web Server kita
        WebServer ws = new WebServer();
        ws.start();
    }
}

2.       Lanjut, kita buat class java baru lagi dengan nama WebServer
package javawebserver;

import java.awt.Desktop;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class WebServer {
    private FileInputStream web;

  /**
   * WebServer constructor.
   */
    protected void start() {
    ServerSocket s;

    System.out.println("Webserver starting up on port 8080");
    System.out.println("(press ctrl-c to exit)");
  
    //inisialisasi server dengan port 8080, kita pakai try catch utk menghandling apabila
    // kegagalan dalam membuka port tidak menuju undefined state.
    try {
      s = new ServerSocket(8080);
    } catch (Exception e) {
      System.out.println("Error: " + e);
      return;
    }

    System.out.println("Waiting for connection");
    for (;;) {
      try {
        
        //menerima koneksi
        Socket remote = s.accept();
      
        //mengirim pesan
        System.out.println("Connection, sending data.");
        BufferedReader in = new BufferedReader(new InputStreamReader(
            remote.getInputStream()));
        PrintWriter out = new PrintWriter(remote.getOutputStream());

        //membaca permintaan pengguna di kolom url
        String str = ".";
        while (!str.equals(""))
          str = in.readLine();
      
        // Membaca file dari input file dengandirektori ternentu, kita bisa ganti direktori
        //  tersebut dengan format apabila listing direktori menggunakan slash dobel.
        File file = new File("D:\\smt 4\\Pweb\\Pemrograman Web C & D\\contoh\\1.html");
  FileInputStream fis;

        fis = new FileInputStream(file);

   //isi dari permintaan pengguna
       
        out.println("HTTP/1.0 200 OK");
        out.println("Content-Type: text/html");
        out.println("Server: Bot");
        out.println("");
      //  out.println("<H1>Halo ITS!!!</H2>");
       
      
  

   int content;
   while ((content = fis.read()) != -1) {
    // Konversi ke karakter sebagai tag html dan dibaca oleh browser dalam bentuk
    //  tampilan html.
    out.print((char) content);
   }      
        out.flush();
        remote.close();
      } catch (Exception e) {
        System.out.println("Error: " + e);
      }
    }
  }
}

3.       Code udah jadi tuh. Sekarang kita run deh dan akses melalui browser dengan ketikkan URL ini pada alamat browser kita
localhost:8080
maka akan tampil website server dari file html yang dirujuk pada D:\smt 4\Pweb\Pemrograman Web C & D\contoh\1.html.

Not so difficult is it? You can do that.


Continue reading ...
Comments

Web Server: SSL self-signed-certificate

Nah, lanjut lagi nih, mumpung lagi God Mode

Sekrarang topic bahasannya sesuai kemauan ane, hehe, yakni melakukan konfigurasi Web Server agar dapat menggunakan SSL pada Apache HTTP Server kita…
Kata kuncinya studi kasus kali ini:  self-signed-certificate

Bingung kan, yaudah, hehe, let’s do with this

Singkat cerita Apache yang menjalankan https (port 443), memerlukan sertifikat keamanan untuk memastikan bahwa site yang diakses adalah aman. Untuk membuat SSl certificate yang self signed gunakan langkah berikut ini:

1.       Pada terminal, lakukan perintah berikut untuk menghidupkan SSL:
a2enmod ssl

2.       Buat folder sal pada apache dengan perintah
mkdir /etc/apache2/sal

3.       Dapatkan certificate dengan perintah dibawah ini :
openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key

4.       isi setingan seperti dibawah ini :
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New Jersey
Locality Name (eg, city) []:Absecon
Organization Name (eg, company) [Internet Widgits Pty Ltd]:SoftwareDev, LLC
Organizational Unit Name (eg, section) []:Web Services
Common Name (eg, YOUR name) []:archimedes.mydomain.com
Email Address []:support@mydomain.com


5.       lakukan restart pada apache : service apache2 restart

6.       untuk meng-enable ssl lakukan perintah : a2ensites default-ssl

7.       edit script : nano /etc/apache2/sites-enabled/default-ssl dengan menganti certificate file pakai :
/etc/apache2/ssl/apache.pem 
/etc/apache2/ssl/apache.key

8.       Sebagai contoh kita lakukan cek dengan host(client) melalui perintah : lynx https://170.0.0.101/admin


screenshot By c8


Cukup HOT kan, udah kan ter-certified Web Server kita, lanjut lagi setelah ini kita konfigurasi yang lebih hot, :D

SEMANGAT!
Continue reading ...
Comments

Web Server: mod_userdir

Nah kemarin kan sudah jadi tuh web servernya, lanjut lagi nihh cerita kita..

Umumnya file yang diakses http://www.something.com adalah file index.html atau index.php di folder htdocs (kalau di apache windows) atau di /var/www/html (untuk apache server linux). Nah, ada kalanya kita sebagai pemilik web server tersebut berkeinginan untuk memberikan fasilitas kepada user yakni berupa homepage mereka.

Gimana caranya kah??? Poin pentingnya yakni kita perlu lakukan konfigurasi Web server agar memiliki fasilitas user dapat memiliki web pagenya sendiri (mod_userdir). Nah gimana itu mod_userdir? Bingung lagi kan, hehehe, so let’s check this out with step by step

Pada terminal, lakukan perintah berikut agar web server yg di konfigurasi multi fungsi:
a2enmod userdir

Kita membutuhkan user (siapa saja) yang kita buat dapat memiliki web page sendiri (misal nama web page-nya public.html). Kita perlu edit script userdir.conf yang ada pada apache dengan menambahkan direktori yang mengakses folder user yang akan langsung diarahkan ke web page-nya dengan perintah:
nano /etc/apache2/mods-enabled/userdir.conf
Kita ubah hingga menjadi seperti dibawah ini:
<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                                AllowOverride All
                                Options MultiViews Indexes SymLinksIfOwnerMatch
                                <Limit GET POST OPTIONS>
                                        Order allow,deny
                                        Allow from all
                                </Limit>
                                <LimitExcept GET POST OPTIONS>
                                        Order deny,allow
                                        Deny from all
                                </LimitExcept>
        </Directory>

Setelah selesai edit userdir.conf-nya, kita edit script php5.conf-nya untuk meng-enable php bila kita akses file php, di direktori user:
nano /etc/apache2/mods-available/php5.conf

Ubah menjadi seperti dibawah dengan memberikan comment dengan "#" di line berikut yang telah diisi tanda
<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
                SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
                SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    #<IfModule mod_userdir.c>
    #    <Directory /home/*/public_html>
    #        php_admin_value engine Off
    #    </Directory>
    #</IfModule>
</IfModule>

Nah, konfigurasi sudah jadi, selanjutnya kita cek kebenarannya ke TKP, pertama lakukan restart pache dengan perintah:
service apache2 restart

Konfigurasi user kan sudah dibuat, nah selnajutnya tambahkan user-nya di home kita, buat folder public_html di $user(root) dengan perintah:
mkdir /home/$USER/<folder user>(misal nama user-nya public_html)

Masuk ke folder dan tambahkan file html didalam dan kita edit dengan tag tag html as you want dengan perintah
nano index_html (nama html-nya index.html)

akses melalui host/client dengan perintah : lynx 170.0.0.101(IP server)/c8(folder user baru yang dibuat)

screenshot by me

Apa negara latin di Amerika Selatan? BeRhAZil, hehe, agak alay dikit, lanjut yang ke book berikutnya ya, tetap semangat!

Continue reading ...
Comments

Web Server : Konfigurasi Web Site port :80 dan :8080

Lanjut lagi nih, mau Inge-game DotA tapi masih mabuk kepayang  sama blogging, #HOAX, hehehe

Jadi sekarang kita buat host kita sebagai server dimana dapat menangani 2 buah website yang ditangani oleh web server ini yaitu ip_anda:80, ip_anda:8080.

Cara membuat 2 web server dengan cara lakukan perintah :
nano /etc/apache2/sites-enabled/000-default
lakukan konfigurasi script menjadi seperti berikut :
<VirtualHost *:80 >
        ServerAdmin webmaster@localhost

        DocumentRoot /home/admin
        <Directory />
                Options FollowSymLinks
                AllowOverride All
                Allow from all
        </Directory>
        <Directory /home/admin/example>
        DirectoryIndex example.html
        </Directory>
        <Directory /home/admin/>
                Options Indexes FollowSymLinks MultiViews
                ErrorDocument 403 /example/example.html
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:8080>
        ServerAdmin webserver@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride AuthConfig
                Require valid-user
                AuthType basic
                AuthName "Basic Auth"
                AuthUserFile /usr/lib/cgi-bin/.htusers
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride AuthConfig
                Require valid-user
                AuthType basic
                AuthName "Basic Auth"
                AuthUserFile /usr/lib/cgi-bin/.htusers
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Jadi kita mengkonfigurasi pada website dengan port :80  dengan subdirektori /admin yang mana sebenarnya file-filenya terletak di /home/admin, berbeda dengan file-file lain yang terletak di /var/www. Konfigurasi direktori sudah terlihat langsung di script.

Ketika mengakses port :8080 user harus menginputkan username dan password (menggunakan .htaccess). Kita perlu menambahkan code Auth... untuk proses authentification saat membuka port 8080 tersebut.

Semua website tidak boleh menampilkan list direktori. Jadi jika tidak ada file index (index.html, index.php, default.asp) maka daftar file dan subdirektori yang ada tidak akan tampil. Ketika kita mengakses ip_anda:80/example maka akan diarahkan ke ip_anda:80/example/example.html. Disini pada file .htaccess kita konfigurasi dengan perintah
nano .htaccess
dan menambhakan code
Options -Indexes


Jalankan di terminal :
htpasswd -c /usr/lib/cgi-bin/
setting password .htaccess

Kalau ada error ditengah jalan dan ingin tahu karena apa, pakai perintah :
tail /var/log/apache2/error.log

setiap melakukan perubahan dalam konfigurasi semua yang terdapat dalam apache, lakukan restart apache dengan perintah :
service apache2 restart


Saat mengakses port 80: misal dengan perintah dengan tidak menampilkan driektoriyang ada, listing direktori telah di-disable
lynx 170.0.0.101:80




Saat akses port 8080
lynx https:/170.0.0.101


Sudah lumayan banyak kan, itu baru web site pada web server masih ada yang HOT lainnya, dijamin ini HOT beneran, pantengin terus yaa..
Continue reading ...
Comments

Web Server > Lanjutan UML

Nah, tadi kan UML udah, tapi belum selesai itu, kita belum routing, #seriusduludah capek ni dating ma komputer
Web server merupakan software yang memberikan layanan data yang berfungsi menerima permintaan HTTP atau HTTPS dari klien yang dikenal dengan browser web dan mengirimkan kembali hasilnya dalam bentuk halaman - halaman web yang umumnya berbentuk dokumen HTML









1.       Kita konfigurasi topologinya agar router dan klien saling terkoneksi
Pada router kita konfigurasi di interface-nya dengan perintah
nano /etc/network/interfaces
dan kita tambahkan kode seperti berikut:
auto eth0
iface eth0 inet static
        address 10.151.76.34 (tuntap kita+2)
        netmask 255.255.255.252 (default)
        gateway 10.151.76.33 (tuntap kita+1)

auto eth1
iface eth1 inet static
        address 170.0.0.1 (IP digit terakhir terserah kita)
        netmask 255.255.255.0 (default)

2.       Pada tiap host juga kita konfigurasi interface-nya dnegan perintah
nano /etc/network/interfaces
dan kita tambahkan kode seperti berikut (contoh salah satu host):
auto lo eth0
iface lo inet loopback
iface eth0 inet static
        address 170.0.0.101 (IP host ini, host yang lain gunakan IP dengan kode terkahirnya yg berbeda)
        netmask 255.255.255.0
        gateway 170.0.0.1

3.       Setelah semua terkonfigurasi, lakukan beberapa perintah berikut untuk forwarding dan routing koneksi ke host
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

4.       Untuk melakukan tes koneksi lakukan ping (misal dengan perintah ping its.ac.id maka akan muncul dokumentasi apakah koneksi kita berjalan apa tidak, bila berjalan maka setting kita berhasil, kalau tidak ulang cek tabling IP yang dilakukan di router dan host apakah sudah benar apa belum).Kita juga bisa melakukan install (seperti apache, mySQL, dan phpMyAdmin dengan perintah apt-get install <sesuai aplikasinya>) namun sebelumnya dianjurkan untuk update dahulu dengan perintah apt-get update)

5.       Berhasil sudah

6.       Sudah berhasil, hehe

Itu tapi kan masih sederhana ya, untuh yang lebih HOT lagi (tentang Web Server-nya, bukan yang hot-hot yang lain), lihat artikel selanjutnya, bruakakakaka..

SALAM SUPER DARI BAPAK DIA
Continue reading ...