Instalar varnish con Plesk 11 en linux (CentOS / Ubuntu / Debian)

Bueno, este manual es una guía para instalar el varnish en Plesk 11 por delante del apache. Con los pasos que se indican aquí no hace falta modificar cosas en la base de datos del plesk, resiste a actualizaciones de Plesk  y puede deshacerse cambiando una linea y ejecutando dos comandos.

[box type=»warning»] Como nota, hay que comprobar que no esté activado el servicio proxy-cache nginx en el Plesk para que este tutorial funcione[/box]

1.  Instalación de varnish

1.1. CentOS

Necesitamos EPEL

CentOS 6
rpm -ivh http://ftp.rediris.es/mirror/fedora-epel/6/i386/epel-release-6-8.noarch.rpm

 

CentOS 5
rpm -ivh http://ftp.cica.es/epel/5/i386/epel-release-5-4.noarch.rpm

 

Instalamos Varnish

yum install varnish

Os recomiendo desactivar el EPEL cuando no lo necesitéis, el Plesk 11 no lleva muy bien los repositorios adicionales a la hora de actualizar.

Una vez instalado lo podemos configurar editando el fichero /etc/sysconfig/varnish

vi /etc/sysconfig/varnish

 

Modificamos la configuración para que sea (en la parte que no esté comentada) para que el VARNISH_LISTEN_PORT sea 80 en lugar de 6081.

Aquí se puede configurar también el VARNISH_VCL_CONF por si queremos usar un fichero de configuración diferente (ya se comentará más adelante)

Para que arranque al inicio:

chkconfig varnish on

 1.2. Ubuntu/Debian

Instalamos varnish

apt-get install varnish

 

Una vez instalado lo podemos configurar editando el fichero /etc/default/varnish

vi /etc/default/varnish

 

Modificamos la configuración para que sea (en la parte que no esté comentada) para que el VARNISH_LISTEN_PORT sea 80 en lugar de 6081.

Aquí se puede configurar también el VARNISH_VCL_CONF por si queremos usar un fichero de configuración diferente (ya se comentará más adelante)

 

2.  Preparar configuración de Varnish, Apache y Plesk

2.1. Apache

CentOS

Editar el fichero /etc/httpd/conf/httpd.conf y cambiar donde pone Listen 80 por Listen 8080

 

Debian y Ubuntu

Editar el fichero /etc/apache2/ports.conf y cambiar donde pone Listen 80 por Listen 8080

 

2.2. Plesk  

En Plesk vamos a aprovechar una opción que tiene para usar plantillas personalizadas para los vhost, así no nos cargamos nada de Plesk, debería mantenerse en las actualizaciones y se puede deshacer con nada.

Los siguientes comandos crearán las plantillas personalizadas y las configurarán para que el Plesk ponga los vhost a escuchar en el 8080.

cd /usr/local/psa/admin/conf/templates
cp -a default custom
cd custom
find . -type f | xargs sed -r -i~ 's/\{?$VAR->server->webserver->httpPort\}?/8080/g'

 

 

3.  Configurar vcl de Varnish

Bien, ahora hay que configurar la vcl de varnish, podemos usar la que trae por defecto que es la /etc/varnish/default.vcl o crearnos una nueva y cambiarla en el fichero /etc/sysconfig/varnish (ver el apartado 2)

Hagamos lo que hagamos hay que hacer un cambio y es en la configuración del backend, por defecto varnish intenta conectar con un apache en 127.0.0.1 y en el puerto 80, deberemos poner la IP externa del servidor (Plesk genera los vhosts con la IP y no responden en otra) y el puerto 8080 que es donde vamos a poner el apache.

También podemos añadir configuraciones más específicas, al final de este manual se incluyen anexos con ejemplos de vcl para algunos cms como wordpress y joomla.

[box type=»info»] Si el Plesk tiene más de una IP sirviendo páginas habría que crear un backend para cada una en la VCL de varnish y luego redirigir a uno u otro dependiendo del host[/box]

4.  Aplicar los cambios

Para aplicar estos cambios tenemos que hacer una reconfiguración de Plesk, reiniciar apache y arrancar varnish.

/usr/local/psa/admin/bin/httpdmng --reconfigure-all
/etc/init.d/httpd restart   o /etc/init.d/apache2 restart   (centos o debain)
/etc/init.d/varnish start

Con eso ya debería empezar a servir las páginas el Varnish

5.  Quitar el varnish

Si queremos quitar el varnish basta con que cambiemos de nuevo la línea de Listen 8080 por Listen 80 en el fichero de apache y que borremos la carpeta /usr/local/psa/admin/conf/templates/custom con

 

rm –rf /usr/local/psa/admin/conf/templates/custom

o si solamente queremos deshabilitarlo temporalmente se puede renombrar con

mv /usr/local/psa/admin/conf/templates/custom /usr/local/psa/admin/conf/templates/custombkp

 

Luego desactivamos el arranque automático de varnish

chkconfig varnish off

 

lo detenemos

/etc/init.d/varnish stop

 

Y ejecutamos el reconfigure de plesk seguido de un restart de apache:

/usr/local/psa/admin/bin/httpdmng --reconfigure-all

En CentOS

/etc/init.d/httpd restart

 

o en Debian

/etc/init.d/apache2 restart   (centos o debain)

 

 

Y ahora si queremos podemos desintalar el varnish con yum o apt-get remove varnish

 

Sobre VCL

Dar con una vcl optimizada puede ser un problema, si tenemos el Plesk sirviendo solamente un tipo de CMS será como mejor se aproveche varnish ya que puedes ponerle una vcl configurada específicamente para él, por ejemplo, si lo usáis con wordpress hay una vcl que de momento me ha ido bastante bien en un par de sitios en http://ocaoimh.ie/2011/08/09/speed-up-wordpress-with-apache-and-varnish/ .Esto combinado con algún plugin de cache, tipo W3 Total Cache (este tiene soporte para purgar la cache de varnish) o WP Super Cache para que casi todo sea contenido estático y la página cargará más rápido, con menos uso de recursos y aguantando más conexiones.

6 pensamientos en “Instalar varnish con Plesk 11 en linux (CentOS / Ubuntu / Debian)

  1. Longhorn

    El problema viene con el fichero default.vcl de varnish, al poner la IP 127.0.0.1 sale la página de Apache por defecto y si en vez de esa IP se pone la del servidor, solo carga una de las webs alojadas con Plesk. ¿Como se puede solucionar esto?

    Responder
    1. Nelson Autor

      Si le pones la IP del servidor debería cargar las páginas que estén con esa IP en Plesk, el varnish pasa el nombre de dominio al apache y este carga el vhost de la forma normal, según desde qué dominio se acceda muestra uno u otro. ¿Tienes más de una IP? ¿Cuántas páginas están usando la IP que pones en el varnish?

      Responder
  2. Pedro

    Hola,

    He seguido las instrucciones y me ha ocurrido igual que a Longhorn, me sale la página por defecto de Apache. He intentado revertirlo pero no he podido, creo que voy a reinstalar todo.

    Responder
    1. Nelson Autor

      Hola,

      Si te aparece la página de apache seguramente los vhost y el apache no estén usando el mismo puerto. Puedes probar a ejecutar de nuevo el httpdmng –reconfigure-all y reinciiar el apache. Si te sigue pasando puedes revisar que la configuración del httpd.conf o ports.conf esté correcta y también la de vhosts, que puedes ver dentro de la carpeta de la suscripción en conf/last_httpd.conf o last_httpd_ip_default.conf o similar. En ambos casos deberían estar en el puerto 8080. También comprueba que no tengas el proxy reverse (nginx) activado en el plesk.

      Para deshacer los cambios basta con volver a cambiar el puerto del apache por el 80, eliminar la carpeta custom de las plantillas y ejecutar de nuvo el httpdmng –reconfigure-all y reinicio de apache.

      Responder
  3. Leire

    Hola, he seguido los pasos y me hace una redirección a l 7080 sin controlar, esto se ha arreglado modificando la base de datos y reconfigurando.
    mysql -uadmin -p$(cat /etc/psa/.psa.shadow) -D psa -e’replace into misc (param, val) values («http_port», 8080);’
    /usr/local/psa/admin/bin/httpdmng –reconfigure-all

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.