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.
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?
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?
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.
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.
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
Hola,¿Tenías desactivado el servicio de proxy-cache nginx en el Plesk?