Instalación de un servidor web local para aplicaciones como Drupal, Joomla o Wordpress
Antes de empezar, aclaramos que esta guía no es para la instalación de un servidor web accesible a través de Internet. Los aspectos de seguridad, rendimiento y conectividad no están contemplados. Con esta guía se trata de poner en marcha un servidor web Apache en un PC con sistema operativo Ubuntu 1x. Con el que tendremos un estupendo entorno de trabajo donde poder probar Drupal, Wordpress, Joomla o otras aplicaciones web que utilicen entre otros lenguajes Php y MySQL. Para los sistemas operativos Mac OS X, Windows y Solaris tenemos el instalador XAMPP.
Para empezar con Ubuntu o cualquier otra distribución Gnu-Linux antes de todo, comprobaremos que todos nuestros paquetes de código estén actualizados. Lo podemos realizar desde la pantalla de terminal o con el gestor de actualizaciones. Des del terminal lo haremos del siguiente modo:
# sudo apt-get update
# sudo apt-get upgrade
Luego instalamos el grupo de paquetes de código "Essentials". Un bonito paquete que bastantes programas requieren en el servidor. También instalaremos Curl para poder ejecutar el archivo cron.php de Drupal.
# sudo apt-get install build-essential
# sudo apt-get install curl
Recomendamos instalar Synaptic, que ya no viene instalado en el Ubuntu 11, para poder controlar cómodamente las dependencias entre los diferentes paquetes de código y escoger las versiones que mas nos interesen de Php, MySQL, otros lenguajes de programación y aplicaciones que queramos. No recomendamos instalar el Drupal directamente con el Synaptic, ya que instala un servidor web Apache en una ubicación diferente a la de /var/www y con una configuración que nos puede resultar poco práctica para llevar el mantenimiento y actualizaciones de todo el software instalado.
# sudo apt-get install synaptic
Y para abrirlo des del terminal
# sudo synaptic
De esta manera con el Synaptic realizaremos búsquedas de los siguientes paquetes para instalarlos:
apache2 , apache2-threaded-dev, php5 , php5-dev, php-pear, php5-gd, mysql-server , phpmyadmin y postfix.
Los más valientes pueden seguir directamente con el terminal. Pero utilizando Synaptic nos informará de las dependencias entre paquetes de código:
libgssapi-krb5-2, libk5crypto3, libkrb5-3, libkrb5support0, apache2, apache2-mpm-prefork, apache2-threaded-dev, apache2-utils, apache2.2-bin, apache2.2-common, autoconf, automake, autotools-dev, comerr-dev, dbconfig-common, krb5-multidev, libapache2-mod-php5, libapr1, libapr1-dev, libaprutil1, libaprutil1-dbd-sqlite3, libaprutil1-dev, libaprutil1-ldap, libdbd-mysql-perl, libdbi-perl, libexpat1-dev, libgssrpc4, libhtml-template-perl, libkadm5clnt-mit8, libkadm5srv-mit8, libkdb5-5, libkrb5-dev, libldap2-dev, libltdl-dev, libmcrypt4, libmysql-java, libmysqlclient-dev, libnet-daemon-perl, libpcre3-dev, libpcrecpp0, libplrpc-perl, libpq-dev, libpq5, libsqlite3-dev, libssl-dev, libssl-doc, libtool, mysql-client-5.1, mysql-client-core-5.1, mysql-server, mysql-server-5.1, mysql-server-core-5.1, php-pear, php5, php5-cgi, php5-cli, php5-common , php5-curl , php5-dbg, php5-dev , php5-gd, php5-mcrypt, php5-mysql, phpmyadmin, postfix, shtool, uuid-dev y zlib1g-dev.
Una buena práctica es instalar las mismas versiones de los paquetes que en nuestro servidor en producción. De esta manera nos aseguramos que lo mismo que funciona en nuestro servidor local, va a funcionar luego en el servidor de producción. Aquí que cada uno escoja lo que más le convenga.
Tras la instalación de todos los paquetes el sistema nos preguntará que contraseña del usuario root para el acceso a base de datos. Luego la configuración del servidor de correo Postfix y con que servidor web queremos relacionarlo. Escogeremos Apache2.
URLs limpias
Para que Drupal pueda trabajar con URLs limpias hay que habilitar el módulo de PHP llamado mod_rewrite.
# sudo a2enmod rewrite
Habilitar la barra de progreso de tareas
Es la barra que aparece indicando el progreso de tareas como la actualización de la base de datos con update.php o si utilizamos los módulos de Drupal FileField y Upload. Muchos proveedores de alojamiento no incluyen este detalle que no es imprescindible, pero... que cada uno decida.
# sudo pecl install uploadprogress
# sudo sed -i '/; extension_dir directive above/ a\ extension=uploadprogress.so' /etc/php5/apache2/php.ini
Configurar la zona horaria.
# sudo dpkg-reconfigure tzdata
Habilitar archivos .htaccess
Drupal utiliza archivos de permiso de acceso .htaccess. Para decirle al servidor que los utilice debemos habilitar la propiedad AllowOverride.
# sudo sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/sites-available/default
Configuración server name
# sudo gedit /etc/apache2/httpd.conf
Tras abrirse la aplicación Gedit escribir en el archivo:
ServerName localhost
Guardar el archivo y reiniciar el Apache y la base de datos:
# service apache2 restart
# service mysql restart
Hasta aquí podemos decir que ya tenemos el servidor web Apache2 listo para ser utilizado como banco de pruebas para Drupal y otros gestores de contenidos. La carpeta donde estarán ubicados los archivos es /var/www con acceso solo para el usuario root. Para ver si todo ha ido bien, abrimos el navegador web y tecleamos localhost. Entonces deberá aparecer “It works!”. Escribiendo localhost/phpmyadmin accedemos al gestor de la base de datos MySQL. También podremos acceder desde otras maquinas de la red local, escribiendo en el navegador web la dirección IP del ordenador donde se halle instalado el servidor web; por ejemplo 192.168.1.101
Para descubrir cual puedes utilizar el terminal:
# ifconfig
Entre otros datos, en la ventana del terminal aparecerá algo parecido a inet addr:192.168.1.101
En el caso que trabajemos sin conexión a Internet deberemos indicar al navegador web que estamos trabajando sin conexión a Internet. En el Mozilla Firefox menú FILES > WORK OFFLINE
Trucos para aumentar el rendimiento del servidor web
Hay dos módulos del Apache que podemos deshabilitar.
# sudo a2dismod cgi
# sudo a2dismod autoindex
Para que Drupal pueda correr con más agilidad podemos incrementar algunos limites que vienen por defecto en el archivo /etc/php5/php.ini. Aumentaremos el límite de la memoria asignada al PHP hasta 128Mb y permitiremos subir archivos de hasta 128Mb:
# sudo sed -i 's/memory_limit = .*/memory_limit = 128M/' /etc/php5/apache2/php.ini
# sudo sed -i 's/upload_max_filesize = .*/upload_max_filesize = 128M/' /etc/php5/apache2/php.ini
# sudo sed -i 's/post_max_size = .*/post_max_size = 128M/' /etc/php5/apache2/php.ini
Instalar un acelerador de código.
# sudo pecl install apc
# sudo sed -i '/; extension_dir directive above/ a\ extension=apc.so' /etc/php5/apache2/php.ini
Habilitar mod_deflate para comprimir las hojas de estilo CSS y código Javascript. También el módulo mod_expires para poner en cache los archivos estáticos.
# sudo a2enmod expires
# sudo a2enmod deflate
# sudo sed -i 's/DEFLATE text\/html text\/plain text\/xml/DEFLATE text\/html text\/plain text\/xml text\/css text\/javascript application\/x-javascript/' /etc/apache2/mods-available/deflate.conf
También aumentaremos la memoria cache asignada a las consultas a la base de datos MySQL.
# sudo sed -i 's/query_cache_limit = 1M/query_cache_limit = 16M\ query_cache_type = 1/' /etc/mysql/my.cnf
Para aplicar los cambios reiniciar los distintos servicios.
# service apache2 restart
# service mysql restart

