Blog

Installation de Squid 3.3.x sur debian Wheezy depuis les sources

Écrit le 25 06 2013 par Kévin MET _

Dans ce tutoriel, nous allons voir comment compiler squid 3.3.x sur une debian Wheezy. Cela peut paraitre simple mais j'ai eu quelques soucis lors de la compilation et je préfère donc faire un tuto dans le cas ou j'aurais oublié la marche à suivre. Et si jamais cela peut servir à d'autres, c'est tant mieux !

Les options de compilation que je vais indiqué sont relatif à mon cas personnel. Brièvement, je voulais mettre en place un reverse proxy https-to-http. Je ferais un autre tutoriel concernant la partie configuration de squid. Mais pourquoi compiler alors qu'on pourrait utiliser le paquet Debian me direz vous ? Tout simplement car le paquet Debian est compilé sans le support SSL (bouhhhh M. le mainteneur!!!). On pourrait donc télécharger les sources du paquet et rajouter le support SSL puis reconstruire le paquet. On pourrait... Mais comme on aime bien mettre les mains dans le cambouis et qu'on veut utiliser la dernière version de Squid et pas un vieux coucou de 2010 on va partir des sources disponibles sur http://www.squid-cache.org/Versions/v3/3.3/

On va donc commencer par se mettre dans un répertoire et télécharger les sources de Squid. Au moment ou j'écris cet article, la dernière version stable est la 3.3.5 fraichement sortie le 20 mai 2013. On dézippe et on va dans le dossier.


# mkdir install
# cd install
# wget www.squid-cache.org/Versions/v3/3.3/squid-3.3.5.tar.gz
# tar xvzf squid-3.3.5.tar.gz
# cd squid-3.3.5/

On installe ensuite les dépendances pour pouvoir compiler squid.


# aptitude build-dep squid3
# aptitude install build-essential libtool libssl-dev libcrypto++-dev devscripts fakeroot

Pour les options de compilation, j'ai fait un config.nice (même si il n'y pas de config.nice qui est généré lors du ./configure. On active le SSL et pas mal d'autres options dont vous pouvez consulter le détail en faisant ./configure --help. On met un prefix sur /opt/squid-3.3.4-1


#! /bin/sh
#
# Created by kevin MET

'./configure' \
'--prefix=/opt/squid-3.3.5-1' \
'--enable-ssl' \
'--enable-ssl-crtd' \
'--with-openssl' \
'--disable-eui' \
'--disable-snmp' \
'--disable-wccp' \
'--disable-wccpv2' \
'--disable-http-violations' \
'--disable-translation' \
'--disable-auto-locale' \
'--disable-htcp' \
'--disable-internal-dns' \
'--with-default-user=proxy' \
'--enable-disk-io' \
'--enable-storeio=ufs,aufs,diskd,rock' \
'--enable-icmp' \
'--enable-follow-x-forwarded-for' \
'--enable-removal-policies=heap,lru' \
'--enable-delay-pools' \
'--with-logdir=/var/log/squid/' \
'--with-pidfile=/var/run/squid.pid' \
'--with-filedescriptors=8192' \
"$@"

Le fichier est également hébergé sur mon dépôt github : config.nice. Si je fais des mises à jours elle seront répercutées uniquement sur github. Je vous conseille donc de faire votre copier/coller à partir de cette source.

Pour faire simple, il suffit donc de faire :


# wget https://raw.githubusercontent.com/nierdz/admintools/master/squid/config.nice

Il faut ensuite rendre le script exécutable et le lancer :


# chmod +x config.nice
# ./config.nice

Il faut ensuite lancer la compilation puis, si tout se passe bien, l'installation


# make
# make install

Dans notre cas, Squid est installé dans le répertoire /opt. On va donc créer un lien symbolique pour simplifier le prefix d'installation.


# ln -s /opt/squid-3.3.5-1 /opt/squid

Il suffit ensuite de télécharger ce script d'init dans le dossier /etc/init.d et lui donner les bons droits :


# cd /etc/init.d/
# wget https://raw.githubusercontent.com/nierdz/admintools/master/squid/squid
# chmod 755 squid

#! /bin/sh
#
# Squid init script for Debian Wheezy and manual installation
#
# Version: 1.0
#
# Author: kevin MET https://www.mnt-tech.fr/
#
### BEGIN INIT INFO
# Provides:          squid
# Required-Start:    $network $remote_fs $syslog
# Required-Stop:     $network $remote_fs $syslog
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Squid HTTP Proxy version 3.3
### END INIT INFO

NAME=squid
DESC="Squid 3.3"
DAEMON=/opt/squid/sbin/squid
PIDFILE=/var/run/$NAME.pid
CONFIG=/opt/squid/etc/squid.conf
DAEMON_ARGS="-YC -f $CONFIG"

. /lib/init/vars.sh

. /lib/lsb/init-functions

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/squid/sbin

[ -x $DAEMON ] || exit 0

ulimit -n 65535

do_start () {
	# Create cache dir
	$DAEMON -z -f $CONFIG
	umask 027
	ulimit -n 65535
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS || return 2
}

do_stop () {
	$DAEMON -k shutdown
        log_action_begin_msg " Waiting"
        COUNT=0
	# Wait 60 seconds before squid is totally shutdown
        while [ -f $PIDFILE ]
        do
                sleep 3
                log_action_cont_msg "."
                COUNT=`echo $COUNT + 1 | bc`
                if (($COUNT > 20))
                then
                        log_action_end_msg 1
                        return 1
                fi
        done
        log_action_end_msg 0
        return 0
}

do_reload() {
        start-stop-daemon --stop --signal 1 --quiet --name $NAME
        return 0
}


case "$1" in
    start)
	log_daemon_msg "Starting $DESC" "$NAME"
	if do_start ; then
		log_end_msg $?
	else
		log_end_msg $?
	fi
	;;
    stop)
	log_daemon_msg "Stopping $DESC" "$NAME"
	if do_stop ; then
		log_end_msg $?
	else
		log_end_msg $?
	fi
	;;
    reload|force-reload)
	log_action_msg "Reloading $DESC configuration files"
	start-stop-daemon --stop --signal 1 \
		--pidfile $PIDFILE --quiet --exec $DAEMON
	log_action_end_msg 0
	;;
    restart)
	log_daemon_msg "Restarting $DESC" "$NAME"
	do_stop
	if do_start ; then
		log_end_msg $?
	else
		log_end_msg $?
	fi
	;;
    status)
	status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
	;;
    *)
	echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart|status}"
	exit 3
	;;
esac

exit 0

Pour la configuration en reverse proxy https-to-http, je ferai un autre tutoriel. C'est fini pour l'installation.

♥ Partage sur tes réseaux sociaux ♥
Kévin MET
Kévin MET

Auteur de ce blog et gérant de la société MNT-TECH, je publie sur ce blog lorsque le temps me le permet et lorsqu'un sujet qui me parait intéressant n'a pas encore été abordé en français. Toutes les informations techniques présentes sur cette page peuvent être réutilisées moyennant le fait de citer la source.