Back in Time
Hoy hemos querido aprovechar el lanzamiento de la familia Ubuntu 16.04 Xenial Xerus LTS, para dedicarle un especial al tedioso asunto de la instalación del Proxy Squid-Cache en este SO.
El que no conoce la historia está condenado a repetirla
Cuando liberaron Ubuntu 10.04 LTS Lucid Lynx, hace ya 6 años (ver calendario de lanzamientos Ubuntu), Squid-Cache andaba por la versión 2x (para no entrar en detalles). En ese entonces, se instalaba con un simple:
sudo apt-get install squidPero cuando llegó la segunda LTS 12.04.x Precise Pangolin (Current v12.04.5), y Squid liberó la v3.1.19, algunos "ilustres miembros" de esta organización, se les ocurrió la "maravillosa idea", de cambiarle el nombre a directorios, servicio, logs, etc (en un intento por emular la mala costumbre de Gnome Desktop, que cambia todo a su antojo de la noche a la mañana, sin medir consecuencias... Por eso fue que crearon Mate desktop... Definitivamente la ignorancia es contagiosa).
El resumen, el mundo que conocíamos, donde todo se llamaba squid, ahora pasaba a ser squid3, y obviamente, los que utilizamos este proxy, sin derecho a protestar (porque es software libre) tuvimos que mordernos la lengua y reconfigurar todo. Este comportamiento se mantuvo hasta la versión 3.3.8, soportada en la LTS 14.04.x Trusty Tahr (Current v14.04.3).
Abril de 2016. Se libera la nueva LTS Ubuntu 16.04 Xenial Xerus, y con ésta, la versión de Squid 3.5.12 y nuevamente a este "grupo super maravilloso e inteligente", tal vez en medio de una borrachera, acompañada de algo más "potente", dijeron: "Ja... squid3 ya no es cool; y esta de moda lo retro. Mejor lo dejamos como estaba antes"; e hicieron un "back in time", y ahora las carpetas, repositorios, logs, servicios, cambiaron nuevamente de squid3 a squid.
Abril de 2016. Se libera la nueva LTS Ubuntu 16.04 Xenial Xerus, y con ésta, la versión de Squid 3.5.12 y nuevamente a este "grupo super maravilloso e inteligente", tal vez en medio de una borrachera, acompañada de algo más "potente", dijeron: "Ja... squid3 ya no es cool; y esta de moda lo retro. Mejor lo dejamos como estaba antes"; e hicieron un "back in time", y ahora las carpetas, repositorios, logs, servicios, cambiaron nuevamente de squid3 a squid.

Antes de...
Primero que todo, purgue su squid (o squid3) y elimine cualquier carpeta y archivos relacionados (/var/log/squid3, /var/spool/squid3, /usr/lib/squid3, /usr/share/squid3, etc). Y el archivo de configuración (squid.conf), guárdelo en la carpeta Home (home/tu_usuario/squid.conf).
Cree el siguiente log:
Primero que todo, purgue su squid (o squid3) y elimine cualquier carpeta y archivos relacionados (/var/log/squid3, /var/spool/squid3, /usr/lib/squid3, /usr/share/squid3, etc). Y el archivo de configuración (squid.conf), guárdelo en la carpeta Home (home/tu_usuario/squid.conf).
Cree el siguiente log:
sudo touch /var/log/squidalert.logY también un script en la ruta /etc/init.d/squidreload.sh y agréguele solamente la siguiente información en la cabecera:
#!/bin/bash ### BEGIN INIT INFO # Provides: squidreload # Required-Start: $syslog # Required-Stop: $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start Squid daemon # Description: Enable service provided by daemon. ### END INIT INFOAhora, guarde el script (squidinstall.sh) de instalación en Home (puede llamarlo como se le de la gana), dele permisos y ejecútelo:
sudo chmod +x squidinstall.sh && sudo ./squidinstall.shContenido del script (squidinstall.sh) de instalación:
#!/bin/bash # Script de instalacion de Squid-Cache # Para Ubuntu 14.04 y 16.04 LTS function is_squid(){ is_trusty=`lsb_release -sc | grep trusty` if [ "$is_trusty" ]; then echo "Instalando y Configurando Squid..." apt -y install squid3 squidclient squid-cgi squid-langpack cp -f /etc/squid3/squid.conf{,.bak} cp -f squid.conf /etc/squid3 service squid3 stop && sleep 2 rm -rf /var/spool/squid3/* && sleep 2 squid3 -z && sleep 2 service squid3 start crontab -l | { cat; echo "@weekly squid3 -k rotate"; } | crontab - crontab -l | { cat; echo "*/10 * * * * /etc/init.d/squidreload.sh"; } | crontab - echo '# Squid3 service date=`date +%d/%m/%Y" "%H:%M:%S` if [[ `ps -A | grep squid3` != "" ]];then echo -e "\nONLINE" else echo -e "\n" service squid3 start && sleep 3 && squid3 -k reconfigure echo "" >> /var/log/squidalert.log fi'>> /etc/init.d/squidreload.sh else echo "Instalando y Configurando Squid..." apt -y install squid squidclient squid-cgi squid-langpack cp -f /etc/squid/squid.conf{,.bak} find squid/squid.conf -type f -print0 | xargs -0 -I "{}" sed -i "s:squid3:squid:g" "{}" cp -f squid/{squid,cachemgr}.conf /etc/squid service squid stop && sleep 2 rm -rf /var/spool/squid/* && sleep 2 squid -z && sleep 2 service squid start crontab -l | { cat; echo "@weekly squid -k rotate"; } | crontab - crontab -l | { cat; echo "*/10 * * * * /etc/init.d/squidreload.sh"; } | crontab - echo '# Squid service date=`date +%d/%m/%Y" "%H:%M:%S` if [[ `ps -A | grep squid` != "" ]];then echo -e "\nONLINE" else echo -e "\n" service squid start && sleep 3 && squid -k reconfigure echo "" >> /var/log/squidalert.log fi'>> /etc/init.d/squidreload.sh fi } is_squidQué hace el script?
Primero detecta la versión de Ubuntu; si es la 14.04.x, instala Squid3 y sus dependencias y si es 16.04 instala squid, no sin antes revisar su archivo de configuración (squid.conf) y cambiar todas las referencias de squid3 a squid. Luego detiene el servicio, elimina los directorios antiguos de la cache y la reconstruye, y finalmente inyecta al cron la rotación de logs semanal.
Como ñapa, adiciona al script squidreload.sh (que creamos anteriormente en /etc/init.d) la información de inicio de squid, el cual también corre en el cron cada 10 minutos (el tiempo se puede ajustar a las necesidades del usuario) y si detecta que squid se ha detenido, lo inicia nuevamente.
Nota: Si usa cachemgr.conf, debe agregar al script el archivo de configuración para que también lo copie. Tenga en cuenta que en squid3, este archivo se maneja en dos directorios.
Meteduras de pata:
Si su squid.conf no esta bien configurado y no incluye parámetros de cache_mem, cache_dir y demás relacionados, al correr el script le saldrá el siguiente error y se detendrá:
Y si no elimina todo (Antes de...) o trata de hacer un mix (squid y squid3), es posible que le salgan problemas como este:
Nota aclaratoria de la publicación: En este post nos hemos referido exclusivamente a versiones de Squid soportadas oficialmente por las LTS mencionadas, desde repositorios oficiales de Ubuntu y no a aquellas versiones que los usuarios instalan de otras fuentes.
Nota de actualización de versión: Si quiere trabajar con squid 3.5.12, actualice a Ubuntu 16.04 LTS Xenial Xerus con sudo do-release-upgrade -d
Como ñapa, adiciona al script squidreload.sh (que creamos anteriormente en /etc/init.d) la información de inicio de squid, el cual también corre en el cron cada 10 minutos (el tiempo se puede ajustar a las necesidades del usuario) y si detecta que squid se ha detenido, lo inicia nuevamente.
Nota: Si usa cachemgr.conf, debe agregar al script el archivo de configuración para que también lo copie. Tenga en cuenta que en squid3, este archivo se maneja en dos directorios.
Meteduras de pata:
Si su squid.conf no esta bien configurado y no incluye parámetros de cache_mem, cache_dir y demás relacionados, al correr el script le saldrá el siguiente error y se detendrá:
Y si no elimina todo (Antes de...) o trata de hacer un mix (squid y squid3), es posible que le salgan problemas como este:
Nota aclaratoria de la publicación: En este post nos hemos referido exclusivamente a versiones de Squid soportadas oficialmente por las LTS mencionadas, desde repositorios oficiales de Ubuntu y no a aquellas versiones que los usuarios instalan de otras fuentes.
Nota de actualización de versión: Si quiere trabajar con squid 3.5.12, actualice a Ubuntu 16.04 LTS Xenial Xerus con sudo do-release-upgrade -d
Post a Comment