27 diciembre, 2008 6 min to read

Preparando un servidor exclusivo para trabajo con Joomla!

Category : Joomla, Linux

Nuestro objetivo:

Contar con un servidor Web listo para trabajar con Joomla y WordPress, que aproveche al máximo los recursos físicos con que disponemos y pueda entregar comodidad a la hora de desarrollar directamente sobre el. Buscamos evitar los errores comunes que se producen en los hosting y entregar un performance adecuado a nuestras aplicaciones.
Nota: Debe quedar claro que al conseguir estos objetivos contaremos con un servidor listo para el trabajo con la mayoría de cms y aplicaciones php disponibles no solo Joomla y WordPress.

Lo primero, elegir un proveedor y una plataforma de trabajo.

La selección del proveedor de servicios es crucial para poder ofrecer un servicio adecuado. En unwebparatodos.net habíamos optado por contratar hosting por demanda, algo que imputaba altos costos a cada proyecto y no nos entregaba los resultados esperados, por lo que nos dimos a la tarea de buscar diversas opciones.
Nuestra segunda opción fue la adquisición de hosting de mayor capacidad de almacenamiento y paquetes reseller, pero nos topamos con que sin importar quien fuese el proveedor (probamos más de dos docenas de proveedores, entre los adquiridos por nosotros y los hosting que podíamos probar debido a que eran contratados por nuestros clientes) ninguno entregaba lo que requeríamos y las aplicaciones eventualmente fallaban y el cliente quedaba descontento, entramos a probar virtual private hosting, la verdad es que no nos quedaron muchas ganas de continuar con esta practica, contratamos con www.pandela.com, el resultado terrible, utilizamos la vm solo durante tres días, se colgaba, teniamos que solicitar nos habilitaran constantemente servicios que se caían inesperadamente (incluso ssh por lo que no podíamos subirlos nosotros), así que entramos a analizar nuestra propia infraestructura de servidores.
Analizamos innumerables proveedores, fue una tarea ardua de tres largos meses, entre las opciones que analizamos destacan http://www.netfirms.com https://www.theplanet.com http://www.ultrahosting.com y http://mediatemple.net
No se trata de las opciones más económicas del mercado, sino de las que muestran mejores prestaciones, soporte e infraestructura en relación con su precio.
Nuestra decisión fue la de contar con un sistema de backups en red por cada servidor que tenemos, así mismo buscar equilibrar la caga de cada server y disminuir el número de aplicaciones y procesos corriendo sobre los mismos.

Aspectos técnicos y sistema operativo

Apache2, php5 y mysql5 son aplicaciones multiplataforma capaces de entregar grandes prestaciones sobre diversos sistemas operativos, pero nuestra experiencia nos ha dejado claro que sobre Linux podemos aprovechar mejor las características de cada una de estas herramientas por lo que nuestra plataforma seleccionada fue Linux, sabíamos que podíamos optar FreeBSD que en este momento está bastante difundido como opción entre quienes ofrecen el servicio de server dedicado y sabemos de cierto que aprovecha mucho mejor los recursos que algunos sistemas Linux, sin embargo nuestros conocimientos y experiencia sería mejor aprovechados con Linux ya que nuestro personal suma 14 años de experiencia sobre este sistema operativo.

Elegir la distribución apropiada.

Esto es cuestión de gustos y ofertas, pero resultó que nuestro proveedor elegido ofrece una reducida cantidad de plataformas Linux a escoger, como opciones tuvimos CentOS, RedHat y OpenSUSE (abríamos preferido Debian, pero el azar nos jugó una buena pasada).
Hemos probado OpenSuse durante los últimos años en el Desktop y en nuestros servidores locales con excelentes resultados, pero en servidores de producción no la hemos probado lo suficiente lo que nos lleva a la siguiente alternativa, RedHat, fue mi primera distro Linux, tube que descargar paquete a paquete, montar un nfs y completar una instalación que tardó poco más de 2 semanas sobre un pentium de 200mhz 🙂 personalmente me trae muy buenos recuerdos, también hemos probado CentOS y sabemos que nada tiene que envidiar a una RedHat Enterprise, es más quien sepa algo del tema estará enterado que se trata de los mismos fuentes y demás (pero ese no es el tema ahora) así que optamos por utilizar CentOS 5 debido a su estabilidad, robustes y a ser una RedHat Enterprise con menores costos asociados.

Construyendo un entorno de producción

Las maquinas elegidas tienen excelentes prestaciones y nuestro plan es utilizarlas en la medida en que podamos garantizar un buen servicio y disponibilidad (como lo diría algún colega planeamos sub-utilizarlas). Ahora solo resta instalar el software necesario para hacer funcionar nuestras instalaciones Joomla.

La Seguridad

Todos en el equipo de UnWebParaTodos hemos sido freelancer, por eso sabemos mucho de las chapuzadas que cometen proveedores de hosting y empresas de diseño que mantienen servidores, cosas como mantener TODAS las instalaciones de aplicaciones Web sobre una misma carpeta y confiando solo en que el cliente no sepa trastear con el server para que así no dañe nada. Personalmente he visto chapuzadas tan grandes como el tener todas las instalaciones Joomla sobre la misma carpeta mezclando todo lo relacionado con Web sin distinción de permisos ni cuotas ni espacios de usuario y lo peor sobre servidores Windows. Nosotros hemos querido pasar por encima de este tipo de problemas y proveer a nuestros clientes un entorno seguro y fiable, donde podamos controlar lo que suceda con las aplicaciones en pro del beneficio mutuo.
Apache2 deja de lado algunas características de apache 1.3 como era el uso de “User” y “Group” en la configuración de virtualhost, por lo que es necesario recurrir a mpm-prefork o mpm-itk ya que soluciones como suexec y suphp disminuyen en gran medida el rendimiento de las aplicaciones y limitan sus capacidades la otra opción es crear jaulas chroot por cada usuario, pero esto es simplemente inmanejable. Nosotros optamos por el uso de mpm-itk como nuestra principal opción ya que nos permite correr procesos apache por cada usuario que mantengamos en el server (cada usuario corre su propio proceso con sus propios permisos de acceso) sin tener que mezclar las sesiones ni cambiar los permisos de acceso de los archivos y así evitamos el común problema de asignar permisos 777 a archivos y directorios y la incomodidad de verificar constantemente el propietario de archivos debido a que algunos eran creados a través de la aplicación Web y su propietario era apache mientras que los archivos creados a través del ftp pertenecían al usuario en cuestión.
(otros pasos cruciales para la seguridad de las aplicaciones son el montaje de un firewall, que bien puede correr por cuenta propia o por la del proveedor, pero esto no hace parte de este post).

Aplicaciones

Contar con httpd-itk no fue sencillo, puede verse algo de información en http://mpm-itk.sesse.net, conseguir información del tema en castellano tampoco es tarea fácil, personalmente seguí este tutorial de itk.
Al completar la instalación de mpm-itk es necesario incluir algunas aplicaciones extra que se instalarán con tu gestor de paquetes predilecto (en nuestro caso y para CentOS yum)
yum install w3m w3m-img lynx mysql-server php-mysql php-mcrypt php-mbstring  php-gd php-xml php-xmlrpc libdbi-dbd-mysql
Tambien resultará muy útil Instalar phpmyadmin, puede instalarse manualmente descargando phpMyAdmin-2.11.9.4-all-languages.zip y su posterior configuración es bastante sencilla.
Con esto ya contamos con un excelente sistema para gestionar sitios Joomla o WordPress, lo siguiente es crear una cuenta por usuario (dominio) y configurar cada virtualhost, puede encontrarse información detallada en el archivo httpd.conf de apache.
Extras: Panel de control y Servidor FTP
El uso de un panel de control tipo cPanel es poco recomendable por tratarse de un servidor dedicado a Webs con Joomla y WordPress, si fuese un servidor dedicado a hosting de Webs de proposito general estaría bien, pero en este caso buscamos dar un soporte personalizado y garantizar el funcionamiento de cada sitio presente. En cuando al servidor FTP, tanto los usuarios como los desarrolladores siempre agradecerán el poder disponer de una cuenta FTP para gestionar los archivos.