Apin Is Me

5 July 2010

Service Squid di Ubuntu 10.04

Filed under: Jaringan,Proxy Squid — genkigama @ 3:46 pm
Tags: , , ,

Baru saja saya mencoba squid di Ubuntu 10.04 terbaru. Saat instalasi tidak terlihat perbedaan sampai juga pada konfigurasi juga masih lancar-lancar saja. Namun saya agak sedikit ada masalah saat mulai memulai service squid. Dalam versi Ubuntu sebelumnya saya hanya mengetikkan service squid start|restart|stop|reload|status, namun itu semua tidak berjalan mulus di Ubuntu 10.04. Ada error sebagai berikut :

apin@apin-laptop:~$ sudo service squid start
start: Job failed to start
apin@apin-laptop:~$ sudo service squid restart
restart: Unknown instance:
apin@apin-laptop:~$ sudo service squid stop
stop: Unknown instance:
apin@apin-laptop:~$ sudo service squid reload
stop: Unknown instance:
apin@apin-laptop:~$


Sempet bingung dibuatnya, ada apakah dengan squid yang ada di Lucid? Setelah googling beberapa saat ternyata si Lucid menggunakan Upstart terbaru, dan masih terdapat banyak bug disana sini. Sampai saat tulisan saya ini dibuat, bug ini belum ada perbaikan dari pihak yang berwenang. Akhirnya saya coba utak atik kanan kiri, saya coba ambil script dari /etc/init.d/squid dari Ubuntu yang lama. Lalu saya inject kan ke Lucid. Langsung saja jalankan perintah berikut

sudo gedit /etc/init.d/newsquid

Lalu pastekan isinya sebagai berikut :

#! /bin/sh
#
# squid         Startup script for the SQUID HTTP proxy-cache.
#
# Version:      @(#)squid.rc  2.20  01-Oct-2001  miquels@cistron.nl
#
### BEGIN INIT INFO
# Provides:          squid
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs $network
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Squid HTTP Proxy
### END INIT INFO

NAME=squid
DAEMON=/usr/sbin/squid
LIB=/usr/lib/squid
PIDFILE=/var/run/$NAME.pid
SQUID_ARGS="-D -YC"

[ ! -f /etc/default/squid ] || . /etc/default/squid

. /lib/lsb/init-functions

PATH=/bin:/usr/bin:/sbin:/usr/sbin

[ -x $DAEMON ] || exit 0

grepconf () {
        w="     " # space tab
        sq=/etc/squid/squid.conf
        # sed is cool.
        res=`sed -ne '
                s/^'$1'['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
                t end;
                d;
                :end q' < $sq`
        [ -n "$res" ] || res=$2
        echo "$res"
}

grepconf2 () {
        w="     " # space tab
        sq=/etc/squid/$NAME.conf
        # sed is cool.
        res=`sed -ne '
                s/^'$1'['"$w"']\+[^'"$w"']\+['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
                t end;
                d;
                :end q' < $sq`
        [ -n "$res" ] || res=$2
        echo "$res"
}

#
#       Try to increase the # of filedescriptors we can open.
#
maxfds () {
        [ -n "$SQUID_MAXFD" ] || return
        [ -f /proc/sys/fs/file-max ] || return 0
        global_file_max=`cat /proc/sys/fs/file-max`
        minimal_file_max=$(($SQUID_MAXFD + 4096))
        if [ "$global_file_max" -lt $minimal_file_max ]
        then
                echo $minimal_file_max > /proc/sys/fs/file-max
        fi
        ulimit -n $SQUID_MAXFD
}

start () {
        cdr=`grepconf2 cache_dir /var/spool/$NAME`
        ctp=`grepconf cache_dir ufs`

        case "$cdr" in
                [0-9]*)
                        log_failure_msg "squid: squid.conf contains 2.2.5 syntax
 - not starting!"
                        log_end_msg 1
                        exit 1
                        ;;
        esac

        #
    # Create spool dirs if they don't exist.
    #
        if [ -d "$cdr" -a ! -d "$cdr/00" ] || [ "$ctp" = "coss" -a ! -f "$cdr" ]
        then
                log_warning_msg "Creating squid cache structure"
                $DAEMON $SQUID_ARGS -z
        fi

        if [ "$CHUID" = "" ]; then
                CHUID=root
        fi

        maxfds
        umask 027
        start-stop-daemon --quiet --start \
                --pidfile $PIDFILE \
                --chuid $CHUID \
                --exec $DAEMON -- $SQUID_ARGS < /dev/null
        return $?
}

stop () {
        PID=`cat $PIDFILE 2>/dev/null`
        start-stop-daemon --stop --quiet --pidfile $PIDFILE --name squid
        #
        #       Now we have to wait until squid has _really_ stopped.
        #
        sleep 2
        if test -n "$PID" && kill -0 $PID 2>/dev/null
        then
                log_action_begin_msg " Waiting"
                cnt=0
                while kill -0 $PID 2>/dev/null
                do
                        cnt=`expr $cnt + 1`
                        if [ $cnt -gt 24 ]
                        then
                                log_action_end_msg 1
                                return 1
                        fi
                        sleep 5
                        log_action_cont_msg ""
                done
                log_action_end_msg 0
                return 0
        else
                return 0
        fi
}

case "$1" in
    start)
        log_daemon_msg "Starting Squid HTTP proxy" "squid"
        if start ; then
                log_end_msg $?
        else
                log_end_msg $?
        fi
        ;;
    stop)
        log_daemon_msg "Stopping Squid HTTP proxy" "squid"
        if stop ; then
                log_end_msg $?
        else
                log_end_msg $?
        fi
        ;;
    reload|force-reload)
        log_action_msg "Reloading Squid configuration files"
        $DAEMON -k reconfigure
        ;;
    restart)
        log_daemon_msg "Restarting Squid HTTP proxy" "squid"
        stop
        if start ; then
                log_end_msg $?
        else
                log_end_msg $?
        fi
        ;;
    status)
       status_of_proc -p "$PIDFILE" "$DAEMON" squid && exit 0 || exit $?
        ;;
    *)
        echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart|s
tatus}"
        exit 3
        ;;
esac

exit 0

Setelah disimpan jangan lupa tambahkan eksekusi untuk file yang baru dibuat tadi.

sudo chmod +x /etc/init.d/newsquid

Udah deh selesai, sekarang bisa jalanin squid seperti semula dengan perintah seperti pada Ubuntu sebelumnya, cuma yang sekarang namanya newsquid. Jadi tinggal panggil seperti ini :

sudo service newsquid start|stop|restart|status|reload

Ni contoh punya saya.

apin@apin-laptop:~$ sudo service newsquid start
 * Starting Squid HTTP proxy squid                                      [ OK ]
apin@apin-laptop:~$ sudo service newsquid reload
 * Reloading Squid configuration files
apin@apin-laptop:~$ sudo service newsquid restart
 * Restarting Squid HTTP proxy squid                                    [ OK ]
apin@apin-laptop:~$ sudo service newsquid status
 * squid is running
apin@apin-laptop:~$ sudo service newsquid stop
 * Stopping Squid HTTP proxy squid                                      [ OK ]
apin@apin-laptop:~$

Terima kasih.

10 Comments »

  1. makasih ya kk, sangat membantu ni tutor, squid saya jdi lancar dah, mo distop ato start, ternyata ada bug ya di service yang bru, keep up posting ya kk, sekali lagi makasih banget, masih newbie ni di linux…

    Comment by grass32 — 26 September 2010 @ 7:49 am | Reply

    • Terima kasih juga udah mampir ke tempat saya.

      Comment by genkigama — 26 September 2010 @ 8:17 am | Reply

  2. membantu sekali nih tutorialnya…ijin copas yah bang :D

    Comment by 4dhieee — 13 October 2010 @ 8:25 am | Reply

    • Terima kasih sudah mampir untuk memberi komen. Dan terima kasih untuk umpan baliknya.

      Comment by genkigama — 13 October 2010 @ 9:34 am | Reply

  3. mantab banget kakak yg satu neh, thanks ilmu2 nya mas, jangan lupa share2 lagi kalo ndak sibuk

    Comment by aris muse — 16 October 2010 @ 10:07 pm | Reply

  4. mas klo squid saya mau ngedirect web yang saya bikin di server bisa gk ?
    jadi client yang mau internetan harus login di server squid dulu gitu bisa gk ??
    mau tutornya dong . ..

    Comment by toekimien — 4 July 2011 @ 5:01 pm | Reply

  5. matur nwun…

    Comment by awik1212 — 29 November 2011 @ 6:52 pm | Reply


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Theme: Rubric. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.