Membangun Web Server Menggunakan Nginx di Debian 5

Assalaamu'alaikum Warahmatullah Wabarakatuh

Alhamdulillah, Alhamdulillah, tak henti rasa syukur ini selalu dan selalu dipanjatkan kepada Allah Subhanahu Wa ta'ala yang telah melimpahkan rahmatnya hingga bisa menulis lagi dan bisa berbagi sedikit pengetahuan. Bagaimana kabar sobat semua? semoga selalu dalam keadaan baik juga. Aamiin.. Oke langsung saja, kali in saya ingin berbagi tentang salah satu pelajaran yang saya dapatkan ketika menjejak bangku SMK. Kebetulan saat itu sedang berada di kelas XII dan mendapat tugas kelompok membuat makalah (lebih tepatnya tutorial) mengenai sebuah server dengan berbagai macam service. Tapi disini saya tidak akan bahas semua, hanya satu service saja, yaitu WEB SERVER. Kebetulan juga pada saat itu kelompok kami mendapat.kan paket yang berbeda yaitu dengan menggunakan NGINX. Meski sudah populer, biasanya pelajar lebih mengenal paket apache daripada yang satu itu, oke langsung saja ya.

Membangun WEB SERVER menggunakan NGINX di Debian 5.05

A.      DASAR TEORI
Nginx (baca : engine x) merupakan server HTTP dan reverse proxy gratis berbasis open-source berkemampuan tinggi, yang dapat juga digunakan sebagai proxy IMAM/POP3. Nginx diciptakan oleh Igor Sysoev pada tahun 2002, dan dirilis untuk pertama kalinya secara umum pada tahun 2004diciptakan oleh Igor Sysoev pada tahun 2002, dan dirilis untuk pertama kalinya secara umum pada tahun 2004.

B.      BAHAN
Virtual debian 5.05
CD debian 5.05 atau file iso debian 5.05
Nginx-0.9.3.tar.gzip

C.      INSTALLASI
Karena di debian belum tersedia paket untuk nginx karena defaultnya web server untuk debian sendiri adalah apche2 maka kita harus mendownload paket nginx sendiri. Bisa langsung dari debian.nya bila terkoneksi internet atau bisa download di luar kemudian kita kopikan ke debiannya. Untuk praktek kali ini saya mencoba untuk mendownload paket nginx dari luar karena koneksi internet yang tidak memungkinkan. Langsung saja ya :
1.       Install paket yangdiperlukan sebelum mengompile nginx di debian yaitu :
apt-get install libc6 libpcre3 libpcre3-dev libpcrecpp0 libssl.0.9.8 libssl-dev zlib1g zlib1g-dev lsb-base
2.       Download paket nginx yang terupdate. Bisa didownload di www.nginx.org . Untuk kali ini yang terupdate adalah nginx-0.9.3.tar.gzip. kemudain taruh di /root atau dimana saja.
3.       Untar paket nginx tadi dengan command :
tar –xvzf nginx-0.9.3.tar.gzip
4.       Masuk ke folder hasil untar paketnya tadi:
cd /nginx-0.9.3 kemudian ls
5.     Konfigurasikan nginx-compilate, tapi sebelumnya pastikan bahwa telah ada paket gcc agar bisa konfigurasi serta compile paket. Jika belum ada paketnya, bisa diinstall dengan command : apt-get install build-essential setelah itu konfigurasikan nginx dengan command :
./configure –sbin-path=/usr/sbin –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –pid-path=/var/run/nginx.pid –lock-path=/var/lock/nginx.lock –http-log-path=/var/log/nginx/access.log –http-client-body-temp-path=/var/lib/nginx/body –htp-proxy-temp-path=/var/lib/nginx/proxy –http-fastcgi-temp-path=/var/lib/nginx/lib/fastcgi –with-debug –with-http_stub_status_module –with-http_flv_module –with-http_ssl_module –with-http_dav_module –with-ipv6

6.      Kompile dan install nginx dengan command :
make && make install
7.    Setelah terinstall tanpa ada error yang mucul, cek dengan command : nginx –v untuk melihat apakah nginx sudah benar-benar terinstall atau belum. Jika sudah maka  kita harus membuat script untuk menjalankan nginx yaitu dengan membuat script di /etc/init.d/nginx . Untuk scriptnya kita bisa cari di internet. Contoh saja untuk script init debian yang sopan adalah seperti ini :
#! /bin/sh
### BEGIN INIT INFO
# Provides :            nginx
# Required-Start :      $all
# Required-Stop :       $all
# Default-Start :       2 3 4 5
# Default-Stop :        0 1 6
# Short-Description :   starts the nginx web server
# Description :         starts nginx using start-stop-daemon
### END INIT INFO

DAEMON=/usr/sbin/nginx
NAME=nginx
DESC=nginx

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
        . /etc/default/nginx
fi
set -e
case "$1" in
 start)
        echo -n "Starting $DESC:"
        start-stop-daemon --start --quiet --pidfile /var/run/SNAME.pid \
                --exec $DAEMON -- $DAEMON_OPTS || true
        echo "$NAME."
        ;;
 stop)
        echo -n "Stopping $DESC:"
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
                --exec $DAEMON || true
        echo "$NAME."
        ;;
 restart|force-reload)
        echo -n "Restarting $DESC:"
        start-stop-daemon --stop --quiet --pidfile \
                /var/run/$NAME.pid --exec $DAEMON || true
        echo "$NAME."
        ;;
 reload)
        echo -n "Reloading $DESC configuration:"
        start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \
        echo "$NAME."
        ;;
 configtest)
        echo -n "Testing $DESC configuration:"
        if nginx -t > /dev/null 2>&1
        then
        echo "$NAME."
        else
         exit $?
        fi
        ;;
 *)
        echo "Usage: $NAME {start|stop|restart|reload|force-reload|configtest}" >&2
        exit 1
        ;;
esac
exit 0
8.       Buat skrip tersebut executable dengan cara :
Chmod +x /etc/init.d/nginx
Kemudian jika ingin memulai nginx secara otomatis saat boot maka :
Update-rc.d nginx defaults
9.       Selanjutnya adalah tinggal mengkonfigurasi untuk file /etc/nginx/nginx.conf tapi sebelumnya kita bisa mengecek apakah installasi nginx tersebut berhasil atau belum melalui browser client dengan mengetikkan IP web server yang baru saja kita install. Jika installasi berhasil maka akan muncul kalimat "Welcome to Nginx".

D.      KONFIGURASI
1.       Default
/etc/nginx/nginx.conf
Defaultnya :
#user  www-data;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay         on;

    gzip  on;
 
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}
Tampilan defaultnya adalah muncul kalimat “Welcome to Nginx”
2.       Joomla
a.       Install paket mysql
apt-get install mysql-server mysql-client
b.      Install paket php5 à install sebagai fastcgi di nginx
apt-get install php5-cgi php5-mysql
c.       Buat script /etc/init.d/php-fastcgi
d.      Jalankan php-fastcgi
e.      Edit file /etc/nginx/nginx.conf
Tambahkan :

Error_log /var/log/nginx/error.log
Pid /var/run/nginx.pid

Include /etc/nginx/sites-enabled/*; 
f.        Buat direktori /etc/nginx/sites-available dan /etc/nginx/sites-enabled
g.       Buat file /etc/nginx/sites-available/default yang berisi konfigurasi virtual host untuk default
h.      Masukkan joomla yang sudah diekstrak ke /var/www/nginx-default/joomla

E.       HASIL
1.       Hasil tampilan awal sebelum diubah-ubah
2.       Tampilan setelah diubah ke joomla



Bagaimana sobat semua? sepertinya cukup itu dulu yang dapat saya bagi, semoga kedepannya bisa lebih banyak lagi yang bisa dibagi. Terus Belajar. Terus Berkarya. Terus Bergerak Mari Tuntaskan Perubahan untuk Kebangkitan Indonesia..

Wassalaamu'alaikum Warahmatullah Wabarakatuh


NB: Untuk debian versi 6 ada tutorial baru nih.. lebih mudah :) DISINI

Komentar

  1. Thanks buat infonya gan, sangat membantu sekali bagi saya yang sedang belajar web server.

    BalasHapus
  2. Balasan
    1. terimakasih telah mampir. untuk instalasi maupun konfigurasi nginx di debian 5 memang masih rumit. tapi semakin berkembangnya versi debian, instalasi dan konfigurasi menjadi semakin mudah layaknya instalasi dan konfigurasi apache. Coba cek postingan saya tentang instalasi dan konfigurasi nginx di debian 6 (squeeze), jauh lebih mudah. :) begitu juga dengan debian 7..
      coba cek disini http://goresan-tanpa-makna.blogspot.com/2015/03/membangun-web-server-nginx-di-debian-6.html

      Hapus

Posting Komentar

Postingan populer dari blog ini

Switch Manageable dan Non Manageable (Unmanageable)

Konfigurasi DHCP di Linux Red Hat 9.0

OSPF (Open Shortest Path First)