28.8. Configure the /etc/rc.d/init.d/squid script file -/all configurations

Configure your /etc/rc.d/init.d/squid script file to start and stop the Squid Internet Object Cache. This script has been modified to setup swap cache for Squid in /cache instead of /var/spool/squid. Create the squid script file, touch /etc/rc.d/init.d/squid and add:


               #!/bin/bash
               # squid		This shell script takes care of starting and stopping
               #		Squid Internet Object Cache
               #
               # chkconfig: - 90 25
               # description: Squid - Internet Object Cache. Internet object caching is \
               # 	a way to store requested Internet objects (i.e., data available \
               # 	via the HTTP, FTP, and gopher protocols) on a system closer to the \
               #	requesting site than to the source. Web browsers can then use the \
               #	local Squid cache as a proxy HTTP server, reducing access time as \
               #	well as bandwidth consumption.
               # pidfile: /var/run/squid.pid
               # config: /etc/squid/squid.conf

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

               # Source function library.
               . /etc/rc.d/init.d/functions

               # Source networking configuration.
               . /etc/sysconfig/network

               # Check that networking is up.
               [ ${NETWORKING} = "no" ] && exit 0

               # check if the squid conf file is present
               [ -f /etc/squid/squid.conf ] || exit 0

               # determine the name of the squid binary
               [ -f /usr/sbin/squid ] && SQUID=squid
               [ -z "$SQUID" ] && exit 0

               # determine which one is the cache_swap directory
               CACHE_SWAP=`sed -e 's/#.*//g' /etc/squid/squid.conf | \
               grep cache_dir | sed -e 's/cache_dir//' | \
               cut -d ' ' -f 2`
               [ -z "$CACHE_SWAP" ] && CACHE_SWAP=/cache

               # default squid options
               # -D disables initial dns checks. If you most likely will not to have an
               #    internet connection when you start squid, uncomment this
               #SQUID_OPTS="-D"

               RETVAL=0
               case "$1" in
               start)
               echo -n "Starting $SQUID: "
               for adir in $CACHE_SWAP; do
               if [ ! -d $adir/00 ]; then 
               echo -n "init_cache_dir $adir... "
               $SQUID -z -F 2>/dev/null
               fi
               done
               $SQUID $SQUID_OPTS &
               RETVAL=$?
               echo $SQUID
               [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SQUID
               ;;

               stop)
               echo -n "Stopping $SQUID: "
               $SQUID -k shutdown &
               RETVAL=$?
               if [ $RETVAL -eq 0 ] ; then
               rm -f /var/lock/subsys/$SQUID
               while : ; do
               [ -f /var/run/squid.pid ] || break
               sleep 2 && echo -n "." 
               done
               echo "done"
               else
               echo
               fi
               ;;

               reload)
               $SQUID $SQUID_OPTS -k reconfigure 
               exit $?
               ;;

               restart)
               $0 stop
               $0 start
               ;;

               status)
               status $SQUID
               $SQUID -k check
               exit $?
               ;;

               probe)
               exit 0;
               ;;

               *)
               echo "Usage: $0 {start|stop|status|reload|restart}"
               exit 1
               esac

               exit $RETVAL
             

Now, make this script executable and change its default permissions:

                 [root@deep /]# chmod 700 /etc/rc.d/init.d/squid
               
Create the symbolic rc.d links for Squid with the command:

                 [root@deep /]# chkconfig --add squid
               

By default the squid script will not automatically start the proxy server on Red Hat Linux when you reboot the server. You can change it's default by executing the following command:

                 [root@deep /]# chkconfig --level 345 squid on
               
Start your new Squid Proxy Server manually with the following command:

                 [root@deep /]# /etc/rc.d/init.d/squid start
               

                 Starting squid: init_cache_dir ufs... squid