Configurando Servidores Ubuntu

Embed Size (px)

Citation preview

Configurando Servidores Ubuntu, Apache y MySQL para DrupalBy Carlos Miranda Levy - Posted on 08 Abril 2010 Crear sitios webs, espacios virtuales colaborativos y comunidades interactivas en lnea requiere de plataformas dinmicas capaces de crecer y escalar para poder responder el trfico creciente que han de recibir si son exitosas. Recientemente hemos migrado nuevamente la red de portales y redes sociales de CIVILA, Ciudades Virtuales Latinas a una nueva plataforma y como una forma de agradecer la abundante cantidad de recursos, ayuda y documentacin en lnea que hemos encontrado y que nos ha permitido tener xito, hemos documentado los pasos especficos a seguir para configurar una plataforma de aplicaciones web estable, gil y escalable.

Por qu Ubuntu, Apache mpm worker y fcgid?Luego de varias pruebas, consultas e investigaciones sobre las mejores opciones y combinaciones para soportar la plataforma Drupal sobre la cual desarrollando nuestras iniciativas desde el 2004, decidimos basar nuestra plataforma en la distribucin Ubuntu de Linux, Apache con mpm worker y fcgid y la base de datos MySQL, colocando todo en servidores en nube. Esta seleccin de componentes y arquitectura brinda la combinacin ideal de rendimiento, flexibilidad y estabilidad que buscamos. Realizadas la introduccin y las aclaraciones de lugar, procedamos a seguir los pasos para configurar un servidor Ubuntu con Apache mpm worker y fcgid, PHP5 y un servidor MySQL para la base de datos. Ntese que si bien las instrucciones fueron formuladas originalmente para Ubuntu 9.10 64bit, y las capturas de pantallas y ejemplos corresponden dicha versin, las mismas han sido probadas y funcionan correctamente para Ubuntu 10.04 LTS Server Edition 64bit, el cual fue lanzado el ltimo da de la elaboracin de esta gua.

Acceso Remoto a Servidores y Clientes ShellPara poder acceder y configurar servidores remotos (como los que se contratan y albergan en centros de hosting o data centers), la alternativa ms flexible y conveniente es usar un cliente de acceso al shell de los servidores.

Putty en Windows 7

Los usuarios de Linux y Mac pueden seguir las instrucciones ac presentada susando la aplicacin Terminal (que se encuentra en el men de Accesorios), mientras que los usuarios de Windows necesitarn una aplicacin como el excelente cliente gratuito Putty para realizarlas.

Alternativamente, los usuarios de Windows pueden instalar Linux en sus sistemas Windows, usando soluciones como Wubi o Sun Virtualbox. Todos los ejemplos de estas instrucciones los realic en Ubuntu ejecutndose en Windows 7 a travs de Virtualbox.

Preparando y Actualizando el Servidor UbuntuAntes de proceder con la instalacin de cualquier aplicacin, es importante asegurarnos de que las funcionalidades bsicas necesarias del sistema estn actualizadas y debidamente configuradas para evitar mensajes de error y posibles complicaciones luego. Ubuntu, y Linux en general, trabaja bajo una arquitectura con funcionalidad bsica y mnima que puede ser extendida con la instalacin de "paquetes" que se pueden descargar en forma flexible de bibliotecas o repositorios de cdigo. Cada distribucin de Linux tiene sus propias herramientas para administrar, instalar, configurar y desinstalar paquetes. La distribucin de Linux Debian, de la cual Ubuntu es una variante, cuenta con las herramientas Advanced Packaging Tool o APT para instalar y desinstalar paquetes mediante y el Debian Package Management System o DPKG. A lo largo de esta gua En los pasos a continuacin, usaremos la instruccin apt-get install nombre-del-paquete para descargar e instalar paquetes y dpkg-reconfigure nombre-delpaquete para configurarlos cuando sea necesario. En adicin, usaremos apt-get update para verificar las versiones de los paquetes disponibles en los repositorios y apt-get upgrade para actualizar los paquetes instalados a las versiones ms recientes de los mismos. Primero nos aseguramos de habilitar el soporte de idiomas, en nuestro caso, ingls y espaol.apt-get install locales apt-get install language-pack-en-base apt-get install language-pack-es-base dpkg-reconfigure locales

Luego configuramos la zona horaria del servidor.dpkg-reconfigure tzdata

Completamente opcional y slo necesario si vamos a construir paquetes Debian est el paquete build-essential, que instala los compiladores C y C++ y componentes asociados entre otras cosas.apt-get install build-essential

Finalmente nos aseguramos de que los paquetes instalados en nuestra distribucin de Ubuntu estn al da.apt-get update apt-get upgrade

Fortaleciendo la Seguridad del Servidor Ubuntu y su AccesoLa seguridad de un servidor y los controles de acceso al mismo son temas de vital importancia que no deben subestimarse, postergarse o tratados en forma genrica. Si bien cada servidor e instalacin es nica, hay varias simples medidas que podemos tomar para hacer que nuestros servidores sean ms seguros y minimizar el riesgo de ataques de ciber-piratas y reducir la frecuencia y posibilidad de los mismos.

Usuario Root y Usuario AdministrativoLo primero que debemos hacer al configurar el servidor, en caso de que no lo hayamos instalado nosotros mismos y sea contratado en una empresa de servicios, es cambiar la contrasea del usuario principal o root. Para ello usamos el comando...passwd

Debemos usar una contrasea compleja, que no pueda ser descifrada por personas o robots en un milln de intentos, pero que a la vez no la olvidemos y no necesitemos anotarla en un papelito. Nunca deja de sorprender al revisar los registros de cualquier (s, cualquier) servidor, la cantidad de ataques que recibe al da por usuarios y robots malintencionados que buscan descifrar la clave del usuario root. Si lo deseamos, existen varios programas de ayuda que nos permiten almacenar claves en forma segura en nuestro computador o en una memoria usb.

Una norma de seguridad prctica es nunca usar el usuario root para administrar el servidor, y preservarlo como medida ltima de seguridad y acceso en caso de que se corrompan las informaciones de usuarios de acceso y adems forzando a que sea necesario confirmar acciones administrativas que puedan tener consecuencias severas. Para ello, se recomienda crear un usuario administrativo, al cual otorgaremos permisos especiales y la posibilidad de escalar sus permisos a los del usuario root en una forma segura y sin comprometer la seguridad del sistema. Si fueramos a llamar dicho usuario con el nombre de usuario-admin, lo crearamos con el comando...adduser

usuario-admin

Una vez creado, adicionamos dicho usuario al grupo de usuarios con posibilidad de escalar sus permisos a los del super usuario root, hacindolo miembro del grupo sudo (del ingls "super user do" o "super usuario hace").usermod -a -G sudo

usuario-admin

En versiones previas al Ubuntu Lucid 10.04 LTS, era necesario luego de adicionar nuestro usuario al grupo sudo, adicionar los permisos de los miembros de dicho grupo. En las versiones ms recientes de Ubuntu, dichos permisos ya estn especificados en el archivo de configuracin por lo que ya los veremos adicionados al seguir los pasos siguientes:

Editamos la configuracin de sudo para otorgar permisos plenos a los usuarios de dicho grupo al escalar:visudo

Esto abre el archivo de configuracin del grupo sudo, al final del cual debemos colocar las lneas siguientes para permitir a los usuarios miembros del grupo sudo escalar sus permisos a los del super usuario:## Permisos plenos al escalar con sudo %sudo ALL=(ALL) ALL

Nota: Esta captura de pantalla corresponde a Ubuntu 9.10. En Ubuntu 10.04 las lneas sobre NOPASSWORD no estn incluidas, pero eso es irrelevante. En todo caso, la lnea %sudo ALL=(ALL) ALL, que es la que nos interesa ya viene incluida en Ubuntu 10.04.

Una vez realizada la adicin, terminamos la edicin del archivo pulsando Ctrl-X y confirmando que deseamos guardar los cambios con la tecla Y. Ya contamos con un usuario administrativo que podemos y debemos usar para acceder y administrar el servidor sin necesidad de hacerlo como el super usuario root.

Fortaleciendo la Seguridad del Acceso ShellPoder acceder a nuestros servidores y administrarlos en forma remota desde cualquier lugar a travs del shell es una gran ventaja, pero esto implica potenciales riesgos de seguridad e invita ataques de ciber-piratas que intentarn descifrar dicho acceso. Tres medidas preventivas bsicas reducen el riesgo y nos protegen de los ataques de ciber-piratas y robots malintencionados que buscan penetrar en nuestro sistema:

Usar pares de llaves pblica y privada para autenticar el acceso a los servidores en vez de la tradicional combinacin de usuario y contrasea, la cual puede ser interceptada por un ciberespa o descifrada por un robot ciber-pirata. No permitir el acceso del usuario root, ya que lo primera que los ciber-piratas y robots intentarn es descifrar su contrasea. Cambiar el puerto en el que se realizan las conexiones shell del tradicional puerto 22 a cualquier puerto entre 1025 y 65536. Esto hace ms difcil el ataque, ya que primero debe descifrarse cul puerto est configurado para el acceso shell.

Generando Par de Llaves Pblica y Privada de AccesoSiguiendo tres simples pasos en nuestro computador local (no en el servidor), podemos generar las llaves y almacenarlas en nuestro computador de acceso y en el servidor remoto. Los pasos siguientes deben realizarse en la aplicacin Terminal desde Linux o Mac en nuestro computador local, NO EN EL SERVIDOR. Si usas Windows, puedes considerar usar la aplicacin PuttyGen para generar las llaves y usarlas con el cliente shell Putty sin necesidad de seguir estos pasos. Lo primero que haremos ser verificar la existencia del directorio en el cual almacenaremos las llaves generadas. Dicho directorio es muy probable que ya exista si hemos accedido antes al servidor va shell desde el ordenador en que estamos. En dicho caso, el comando nos responder con un mensaje de error indicando que el directorio existe, lo cual no es problema alguno y es lo que deseamos.mkdir ~/.ssh

Una vez nos aseguramos que el directorio .ssh exista bajo el directorio home de nuestro usuario actual, procedemos a generar el par de llaves.ssh-keygen -t rsa

Si no cambiamos el nombre y directorio para las llaves, el comando anterior generar una llave privada (id_rsa) y una pblica (id_rsa.pub) en el directorio /.ssh dentro del directorio home de nuestro computador.

Ahora que tenemos el par, la llave privada debe permanecer en nuestro computador, pero la llave pblica debe ser colocada en el servidor para que pueda completarse el proceso de autenticacin al acceder al mismo.scp ~/.ssh/id_rsa.pub usuario-admin@ip-o-nombre-servidor:/home/usuario-admin/

Ya est lista la parte de la configuracin a realizar en nuestro computador. Ahora vamos a completar los pasos necesarios para la configuracin necesaria en el servidor. Lo primero es acceder al servidor...ssh usuario-admin@nombre-o-ip-del-servidor

Luego creamos un directorio especial para albergar las llaves pblicas de nuestro usuario administrativo en el servidor. Este directorio lo creamos debajo del directorio /home de nuestro usuario administrativo.mkdir /home/usuario-admin/.ssh

Y copiamos a dicho directorio la llave pblica que subimos anteriormente desde nuestro computador.mv /home/usuario-admin/id_rsa.pub /home/usuario-admin/.ssh/authorized_keys

Una vez listo el directorio y el archivo de llaves autorizadas, debemos ajustar los permisos y propiedad de los mismos.chown -R usuario-admin:usuario-admin /home/usuario-admin/.ssh chmod 700 /home/usuario-admin/.ssh chmod 600 /home/usuario-admin/.ssh/authorized_keys

Finalmente, debemos modificar el archivo de configuracin para el acceso shell en el servidor...sudo nano /etc/ssh/sshd_config

En dicho archivo, editaremos las siguientes lneas y si faltase alguna, la adicionaremos al final.Port 12345 Protocol 2 PermitRootLogin no X11Forwarding no UseDNS no AllowUsers usuario-admin

Port ##### es un valor aleatorio cualquiera desde 1025 hasta 65536. Cambiarlo dificulta los ataques genricos de ciber-piratas y robots. Debemos recordar este nmero porque lo necesitaremos en futuros accesos al servidor va shell. Protocol 2 indica que usaremos la versin 2 del protocolo ssh. PermitRootLogin no rechazar cualquier intento de acceso del usuario root, opcin favorita de los ciber-piratas. AllowUsers nombre-de-usuario permite indicar los usuarios a ser considerados para acceso y autenticacin. El resto es rechazado de inmediato sin evaluar sus credenciales.

Si deseamos eliminar la autenticacin va usuario y password y usar solamente la autenticacin con el par de llaves, debemos tambin modificar las lneas siguientes:PasswordAuthentication no UsePAM no

Una vez realizados los cambios deseados, salimos pulsando Ctrl-X y confirmando que desamos grabar pulsando Y. Finalmente, reiniciamos el servicio de ssh para que los cambios entren en efecto.sudo /etc/init.d/ssh restart

Debemos tener en cuenta que el comando ssh para acceder al servidor desde Terminal ahora debe indicar el puerto especificado en la forma...ssh usuario-admin@ip-o-nombre-servidor -p12345

En mi experiencia, ha sido necesario reiniciar el servidor para que los cambios entren en funcionamiento, en particular en lo que a autenticar con el par de llaves se refiere.

Activar y Configurar FirewallLa opcin ms comn y frecuente para proteger el servidor es usar iptables. Sin embargo, sus reglas pueden resultar confusas para muchos usuarios e innecesariamente detalladas para una configuracin bsica de servidor web, acceso ftp y shell y base de datos MySQL. Uncomplicated Firewall (UFW) es una alternativa ms simple de instalar, configurar y administrar que a la vez sirve de interfaz para iptables. Para instalar Uncomplicated Firewall (UFW), indicar en la ventana shell del servidor:sudo apt-get install ufw

Para "abrir" o permitir acceso al puerto shell 12345, el puerto 80 (web), el puerto 443 (web seguro o https), el puerto 21 (ftp) y el puerto 3306 (MySQL), escribimos:sudo sudo sudo sudo sudo ufw ufw ufw ufw ufw allow allow allow allow allow

12345/tcp80/tcp 443/tcp 21 3306/tcp

Una vez definidas nuestras reglas, activamos el firewall:sudo ufw enable

Y listo, ya tenemos el firewall configurado y activado, incluso en forma permanente cuando se reinicia el servidor. Podemos verificar su estado en cualquier momento escribiendo:sudo ufw status

Instalar y Configurar el Servidor Web ApachePara una infraestructura flexible, escalable y de alto rendimiento, usaremos el servidor web Apache2, configurado con mpm worker, PHP5 y fcgid. Preparacin Previa Es recomendable antes de proceder a instalar Apache y PHP, asegurarnos de que nuestro sistema y sus paquetes estn actualizados y contamos con la informacin local de idioma. Si ests siguiendo las instrucciones desde el principio de esta gua, este paso no es necesario, ya que fue lo primero que hicimos en la seccin "Preparando el Sistema".sudo sudo sudo sudo sudo sudo apt-get install locales apt-get install language-pack-en-base apt-get install language-pack-es-base dpkg-reconfigure locales apt-get update apt-get upgrade

Apache mpm worker y PHP5 como fcgid Una vez estamos seguros de que nuestro sistema est al da, podemos descargar e instalar Apache con los paquetes que necesitaremos para optimizar Drupal y tener un rendimiento ptimo y escalable.sudo apt-get install apache2-mpm-worker libapache2-mod-fcgid

El sistema nos mostrar un resumen de los paquetes a instalar y descargar, pidiendo nuestra confirmacin con una Y. Luego proceder con la instalacin y terminar activando Apache 2 con mpm worker y habilitando el mdulo fcgid. Si queremos estar seguros, podemos habilitar el mdulo:sudo a2enmod fcgid

Correccin para Ubuntu 10.04 Nota, los repositorios de Ubuntu 10.04 incluyen la versin 1:2.3.4-2 del paquete libapache2-modfcgid, la cual causa que los archivos subidos va php y aplicaciones que lo usan (como Drupal) se corrompan al ser transferidos. Para evitar esto, debemos revertir el paquete a la versin 1:2.2-1, haciendo lo siguiente (ver ms detalles en Solving File Upload Corruption issues with Ubuntu 10.04):

Primero descargamos la versin 1:2.2-1 de libapache2-mod-fcgid de uno de los repositorios o fuentes confiables enlazados en http://packages.ubuntu.com/karmic/libapache2-mod-fcgid . En el caso de nuestro ejemplo, ejecutando Ubuntu 64bit desde Singapur, el enlace ms cercano era Korea, por lo que hicimos:wget http://kr.archive.ubuntu.com/ubuntu/pool/universe/liba/libapache2mod-fcgid/libapache2-mod-fcgid_2.2-1_amd64.deb

Luego lo instalamos:sudo dpkg -i libapache2-mod-fcgid_2.2-1_amd64.deb

Finalmente, "aguantamos" esta versin del paquete para que no sea actualizada como parte de los procesos de mantenimiento y actualizacin que hacemos:sudo -s echo libapache2-mod-fcgid hold | dpkg --set-selections exit

Es todo, puedes re-cargar y reiniciar Apache:sudo /etc/init.d/apache2 reload sudo apache2ctl graceful

Para confirmar la versin actual de libapache2-mod-fcgid instalada, escribimos:sudo dpkg -s libapache2-mod-fcgid

Y podemos probar que dicha versin se mantendr an cuando hagamos actualizaciones. Veremos un mensaje al hacer la actualizacin informando que el paquete ser ignorado para actualizar:sudo apt-get update sudo apt-get upgrade sudo dpkg -s libapache2-mod-fcgid

Personalizacin y ConfiguracinSi bien no es crtico, es buena prctica (y algo que nos facilita el trabajo) darle un nombre real a nuestro servidor. Es buena idea configurar un FQDN para identificarlo (por ejemplo servidor1.midominio.com), as no tenemos que perder tiempo recordando su ip y adems la configuracin se mantiene si cambiamos el ip asignado a la mquina.sudo nano /etc/apache2/apache2.conf

En este archivo, buscamos la directiva ServerName, y si no existe, la adicionamos al final con el nombre que deseamos para el servidor.ServerName nombre-para-el-servidor

Cerramos el archivo con Ctrl-X y confirmamos que deseamos grabar con Y.

Podemos restringir la informacin que divulga el servidor sobre su configuracin para eliminar riesgos haciendo cambios en el archivo de seguridad de Apache:sudo nano /etc/apache2/conf.d/security

En dicho archivo, editamos los valores de ServerTokens y ServerSignature, cambindolos a:ServerTokens Prod ServerSignature Off

Nuevamente, cerramos el archivo con Ctrl-X y confirmamos que deseamos grabar con Y. Finalmente, reiniciamos el servicio Apache para que este cambio tome efecto.sudo apache2ctl graceful

En mi experiencia, puede hacer falta reiniciar el servidor completamente para que los cambios entren en accin. Ahora podemos verificar nuestro servidor funcionando, navegando al ip, o si le asignamos un FQDN a dicho ip, navegando a dicha direccin web.

Ya casi estamos listos para habilitar y activar sitios web interactivos.

Instalar y Configurar PHP5Instalado Apache, podemos proceder a instalar PHP, el lenguaje de programacin que nos permite construir aplicaciones en lnea, sitios web interactivos y plataformas de contenido dinmico y colaborativo en lnea. Junto con el mdulo bsico de PHP, descargaremos varios mdulos complementarios que amplan su funcionalidad y que necesitaremos en el futuro para varias prestaciones de nuestras pginas interactivas.sudo apt-get install php5-cgi php5-curl php5-gd php5-mysql php5-sqlite php5-xsl php5-imagick php5-mcrypt php5-mhash php5-memcache php5-xmlrpc

El sistema nos presentar un desglose de los paquetes a instalar, incluyendo paquetes adicionales requeridos por los paquetes que especificamos explcitamente. Para continuar, debemos confirmar presionando Y y Enter.

Si ests familiarizado con la instalacin de php5 o comparas con otras instrucciones y te preguntas dnde est el mdulo php5-mysqli, lo que pasa es que dicho mdulo ahora viene incluido en el mdulo php5-mysql. Ten en cuenta que en la instruccin anterior no incluimos el mdulo estndar php5 ya que usaremos el php5-cgi. Una vez finalizada la instalacin del PHP, debemos reiniciar Apache para que lo reconozca y active dentro del servidor web. Pero no lo haremos an, ya que primero haremos algunos ajustes necesarios para configurar adecuadamente php y fcgid en Apache en la seccin siguiente.sudo /etc/init.d/apache2 reload

Configurando Apache y PHP con FCGIDDebemos adicionar directivas especiales para la configuracin del php como fcgid, las cuales podemos colocar en un archivo separado para que Apache las cargue al iniciar. Para crear dicho archivo, escribimos...sudo nano /etc/apache2/conf.d/php-fcgid.conf

Y en el interior del mismo colocamos las siguientes instrucciones, segn sugiere Khalid Baheyeldin de 2bits.com:

Si es un servidor de bajo trfico y capacidad...

AddHandler fcgid-script .fcgi .php # Where to look for the php.ini file? DefaultInitEnv PHPRC "/etc/php5/cgi" # Maximum requests a process handles before it is terminated MaxRequestsPerProcess 1000 # Maximum number of PHP processes MaxProcessCount 5 # Number of seconds of idle time before a process is terminated IPCCommTimeout 240 IdleTimeout 240 #Or use this if you use the file above FCGIWrapper /usr/bin/php-cgi .php ServerLimit StartServers MinSpareThreads MaxSpareThreads ThreadsPerChild MaxClients MaxRequestsPerChild 500 3 3 10 10 300 1000

Si es un servidor con abundante memoria y que soportar una carga significativa de trfico,

AddHandler fcgid-script .fcgi .php # Where to look for the php.ini file? DefaultInitEnv PHPRC "/etc/php5/cgi" # Where is the PHP executable FCGIWrapper /usr/bin/php-cgi .php # Maximum requests a process handles before it is terminated MaxRequestsPerProcess 1500 # Maximum number of PHP processes. MaxProcessCount 35 # Number of seconds of idle time before a process is terminated IPCCommTimeout 240 IdleTimeout 240 # Large site ServerLimit ThreadLimit StartServers MinSpareThreads MaxSpareThreads ThreadsPerChild MaxClients MaxRequestsPerChild 2048 100 10 30 100 64 2048 5000

Salimos del archivo con Ctrl-X y confirmamos que deseamos guardarlo con Y. Finalmente, debemos adicionar la directiva ExecCGI en la lnea de Options de las secciones del sitio que deseamos usar con FCGID. En este caso, lo haremos para el sitio default que comprobamos en el paso anterior que est activo.sudo nano /etc/apache2/sites-available/default

Y buscamos las lneas Options dentro de y adicionamos ExecCGI a las mismas. Aprovechamos tambin para asegurarnos de que dentro de de diga AllowOverride All, adicionndolo o cambiando el None por All si es necesario. La lnea AllowOverride All permite una mayor facilidad en la configuracin de Drupal y su buen buen funcionamiento, permitiendo que Apache lea los archivos .htaccess en cada directorio.

(...) DocumentRoot /var/www Options FollowSymLinks ExecCGI AllowOverride All Options Indexes FollowSymLinks MultiViews ExecCGI AllowOverride All Order allow,deny allow from all (...)

Salimos con Ctrl-X y confirmamos que deseamos grabar los cambios con Y. Ahora debemos recargar Apache para que los cambios surtan efecto. Debemos fijarnos en la pantalla por si se despliega algn error o aviso del sistema.sudo /etc/init.d/apache2 reload

Para probar que todo funciona, creamos un archivo php en el sitio default y combrobamos que se ejecute correctamente. Por ejemplo, creemos un archivo llamado infodelservidor.php que ejecute la funcion phpinfo() y nos muestre informacin del mismo:sudo nano /var/www/infodelservidor.php

En su contenido, coloquemos...

Cerremos con Ctrl-X y confirmemos que deseamos guardar los cambios con Y. Ahora podemos navegar a nuestro servidor en cualquier explorador de Internet y ver el archivo en ejecucin en http://dominio-o-ip-del-servidor/infodelservidor.php, donde adems podemos comprobar que se usa fcgid en Server API y que la configuracin de PHP cargada es la correspondiente a cgi...

Configurando PHP para Alto Trfico y Carga de Archivos en DrupalPara evitar problemas y errores de memoria y capacidad de subida de archivos por parte de los usuarios, debemos aumentar los valores de algunas variables relevantes en el archivo php.ini que controla la configuracin de PHP5. Esto incluye ampliar los valores de las variables: memory_limit: la cantidad mxima de memoria que puede consumir un script de PHP. upload_max_filesize: el tamao mximo de los archivos que pueden cargar los usuarios. post_max_size: la memoria mxima a ser usada por un envo de contenidos.

De acuerdo a nuestra instalacin, el archivo php.ini se encuentra en el directorio /etc/php5/cgi, por lo que podemos editarlo desde all con:sudo nano /etc/php5/cgi/php.ini

Una vez dentro del archivo php.ini, buscamos las instrucciones que deseamos cambiar y les asignamos valores mayores a los que tienen por defecto, colocando por ejemplo:memory_limit = 256 upload_max_filesize = 64M post_max_size = 128M

Una vez hechos los cambios, pulsamos Ctrl-X y confirmamos que queremos guardar con Y.

Alternativamente a editar manualmente el php.ini, podemos tambin usar los comandos siguientes para hacer la actualizacin de los valores de dichas directrices en forma automtica y sin necesidad de editar el archivo y encontrar las directrices en el mismo: sudo sed -i 's/memory_limit = .*/memory_limit = 256M/' /etc/php5/cgi/php.ini sudo sed -i 's/upload_max_filesize = .*/upload_max_filesize = 64M/' /etc/php5/cgi/php.ini sudo sed -i 's/post_max_size = .*/post_max_size = 128M/' /etc/php5/cgi/php.ini

Mdulos y Sitios Web en Apache y UbuntuSi seguimos los pasos anteriores para instalar Apache en Ubuntu usando apt-get install apache2, el sistema ha sido instalado en el directorio /etc/apache2. Podemos ver los componentes bsicos del sistema, dirigindonos al directorio /etc/apache2 y ejecutando el comando ls.cd /etc/apache2 ls

Ac podemos ver 4 directorios esenciales para el manejo de Apache en Ubuntu: mods-available, mods-enabled, sites-available y sites-enabled.

Mdulos y Sites Disponibles y Habilitados en UbuntuUbuntu ofrece una forma bastante cmoda de manejar, activar y desactivar sitios webs sites y mdulos de Apache. Bsicamente, todos los sitios webs en este servidor se encuentran en un directorio llamado sitesavailable (que significa en ingls, sitios-disponibles), bajo /etc/apache2.

De la misma forma, todos los mdulos disponibles se encuentran en un directorio llamado modsavailable (que significa en ingls, mdulos-disponibles), tambin bajo /etc/apache2.

Los mdulos activos se encuentran listados en el directorio mods-enabled (que significa en ingls mdulos habilitados) y los sitios web activos en el directorio sites-enabled (que significa a su vez sitios habilitados).

Cuando adicionamos un mdulo con apt-get install, se coloca automticamente en /etc/apache2/mods-available. Si lo adicionamos manualmente, debemos colocarlo all. Cualquier cambio en los mdulos o en sus archivos de configuracin, lo debemos realizar siempre all. En forma similar, cuando queremos crear un sitio web en el servidor, lo hacemos en /etc/apache2/sites-available. Es all tambin donde debemos hacer los cambios en la configuracin de los sitios. En los directorios mods-enabled y sites-enabled apenas hay enlaces (symlinks) para los mdulos y sitios web activos. Dichos enlaces (symlinks) apuntan a los archivos fsicos de los mdulos y sitios web en los directorios mods-available y sites-available.

En resumen...

Creamos y configuramos los sitios web en /etc/apache2/sites-available. Descargamos e instalamos los mdulos Apache en /etc/apache2/mods-available. Activamos y desactivamos los sitios web con a2ensite y a2dissite. Activamos y desactivamos mdulos Apache con a2enmod y a2dismod.

En las pginas siguientes exploramos y explicamos en detalle estas instrucciones con ejemplos aplicados de su uso.

Instalar y Activar Mdulos de Apache en UbuntuMdulos Disponibles y Activados en Ubuntu En Ubuntu, todos los mdulos de Apache instalados y disponibles para activar se encuentran en un directorio llamado mods-available (que significa en ingls, mdulos-disponibles), bajo /etc/apache2.

Los mdulos activos se encuentran listados en el directorio mods-enabled (que significa en ingls mdulos habilitados).

Cuando adicionamos un mdulo con apt-get install, se coloca automticamente en /etc/apache2/mods-available. Si lo adicionamos manualmente, debemos colocarlo all. Cualquier cambio en los mdulos o en sus archivos de configuracin, lo debemos realizar siempre all. En el directorio mods-enabled apenas hay enlaces (symlinks) para los mdulos activos. Dichos enlaces (symlinks) apuntan a los archivos fsicos de los mdulos en el directorio mods-available.

Habilitando y Desactivando Mdulos en Apache: a2enmod y a2dismod Para activar y desactivar mdulos en Apache, usamos las instrucciones a2enmod y a2dismod (del ingls "Apache 2 enable module" o "Apache 2 habilitar mdulo" y "Apache 2 disable module" o "Apache 2 desactivar mdulo"). Lo primero es asegurarnos de que se encuentra fsicamente en el directorio /etc/apache2/modsavailable. Si existe all, basta con escribir el comando de activacin seguido del nombre del mdulo y luego recargar Apache.sudo a2dismod nombre-del-modulo sudo /etc/init.d/apache2 reload

Por ejemplo, para desactivar PHP, hacemos:sudo a2dismod php5 sudo /etc/init.d/apache2 reload

Si miramos ahora en el directorio /etc/apache2/mods-enabled veremos que ni php5.conf ni php5.load aparecen listados all, lo cual nos confirma que han sido desactivados.

Ahora que sabemos instalar y desinstalar mdulos de Apache en Ubuntu, podemos instalar y configurar en el prximo paso algunos mdulos importantes y recomendados para el buen funcionamiento de Drupal.

Mdulos de Apache Importantes y Recomendados para Drupal en UbuntuLos pasos siguientes no son estrictamente necesarios para el funcionamiento de Drupal, pero se recomienda seguirlos antes de instalar Drupal ya que completan la funcionalidad y valor del sistema. Usuarios avanzados pueden seguir alternativas diferentes de acuerdo a su experiencia y preferencias. Direcciones Web Amistosas Drupal nos permite presentar los contenidos en la web en direcciones amistosas y flexibles, fciles de leer y recordar y que aumentan el posicionamiento de nuestros contenidos en los buscadores de Internet. De esta forma, en vez de un artculo tener la direccin www.socinfo.com/q?=node/512, podemos definirlo con la direccin www.socinfo.com/ubuntu/apache/modulos o cualquier combinacin que deseemos. Para ello, debemos instalar y activar el mdulo rewrite de Apache y luego reiniciar Apache para que tenga efecto.sudo a2enmod rewrite

En adicin, debemos realizar un pequeo cambio en el archivo de configuracin apache2.conf, el cual editamos escribiendo:sudo nano /etc/apache2/apache2.conf

Colocamos al final del mismo las siguientes lneas: AllowOverride All RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Terminamos la edicin con Ctrl-X y confirmamos que deseamos guardar los cambios con Y. Finalmente, reiniciamos el servidor Apache para que los cambios surtan efecto:sudo /etc/init.d/apache2 restart

Envo Correo-e desde el Sitio Web Para tareas como confirmacin de registro, re-envo de contraseas olvidadas, notificacin de nuevos contenidos y actualizaciones a usuarios, suscripciones, etc. es necesario contar con la capacidad de enviar mensajes de correo a los usuarios de nuestro sitio web. Afortunadamente esta funcionalidad viene integrada en Drupal sin mayor complicacin, pero requiere que Apache est configurado para ello. Existen varios mdulos de Apache que nos permiten esto, entre ellos los ms populares son sendmail y postfix. Por ser el ms comn, instalaremos sendmail:sudo apt-get install sendmail sudo /etc/init.d/apache2 restart

ImageMagick Permite manipular, generar y combinar imgenes en el servidor. Para instalarlo, simplemente, actualizamos los datos del repositorio y lo descargamos:sudo apt-get update sudo apt-get install imagemagick --fix-missing

Debemos tener en cuenta que para activarlo en Drupal, hacen falta pasos adicionales, dependiendo si usamos el mdulo Image (hay que copiar un archivo a /includes) o ImageAPI (hay que activar el mdulo ImageMagick que viene con ImageAPI). Y en ambos casos hay entonces que indicarle a Drupal que deseamos usar ImageMagick como nuestra herramienta de grficos. Otros Mdulos Hay otros mdulos que puede interesarnos instalar dependiendo de los mdulos de Drupal a usar. Pero en general mientras menos mdulos de Apache instalamos mejor. Estos incluyen:

Hay quienes prefieren instalar curl para manejar cron y este mdulo tambin es requerido por varias aplicaciones de integracin con otras plataformas y comercio electrnico. build-essential: Necesario slo en caso de que vayamos a compilar algunas opciones.curl:

Crear y Activar Sites en Apache con UbuntuSites Disponibles y Habilitados en Ubuntu Bsicamente, todos los sitios webs en este servidor se encuentran en un directorio llamado sitesavailable (que significa en ingls, sitios-disponibles), bajo /etc/apache2.

Los sitios web activos se encuentran listados en el directorio sites-enabled (que significa sitios habilitados).

Cuando queremos crear un sitio web en el servidor, lo hacemos en /etc/apache2/sitesavailable. Es all tambin donde debemos hacer los cambios en la configuracin de los sitios. En el directorio sites-enabled apenas hay enlaces (symlinks) para los sitios web activos. Dichos enlaces (symlinks) apuntan a los archivos fsicos de configuracin de los sitios web en el directorio sites-available.

Habilitando y Desactivando Sitios Web en Apache: a2ensite y a2dissite

Para activar y desactivar sitios web, usamos las instrucciones a2ensite y a2dissite (del ingls "Apache 2 enable site" o "Apache 2 habilitar sitio" y "Apache 2 disable site" o "Apache 2 desactivar sitio"). En los pasos anteriores configuramos Apache y pudimos verificar que el servidor web estaba activo visitando el ip o direccin del mismo. La pgina web mostrada corresponde al sitio web por defecto (default en ingls). Podemos verlo incluido en el directorio de sitios webs activos /etc/apache2/sites-active:ls /etc/apache2/sites-enabled

Si queremos desactivar el sitio web "default", basta con escribir el comando:sudo a2dissite default

Ejecutado el comando anterior, podemos ver que ya no est incluido en los sitios activos:ls /etc/apache2/sites-enabled

Pero para que la desactivacin entre en efecto, debemos cargar Apache nuevamente:sudo /etc/init.d/apache2 reload

Si navegamos ahora a la direccin web o IP de nuestro servidor, el navegador nos mostrar una pgina de error (en algunos sistemas de hosting que usan cache, es necesario reiniciar el servidor para activar el cambio).

Si queremos reactivar el sitio web por defecto, basta con usar a2ensite y cargar apache nuevamente:sudo a2ensite default sudo /etc/init.d/apache2 reload

Esto colocar enlaces nuevamente en el directorio /etc/apache2/sites-enabled para el sitio web default albergado en /etc/apache2/sites-available.

En los pasos siguientes veremos cmo crear el espacio fsico o directorios para los sitios web y la configuracin de los mismos.

Estructura de Directorios para Sitios Web Drupal en ApacheEs importante definir, crear y usar una estructura eficiente y coherente para los directorios en los que albergamos nuestros sitios web. Esto nos facilitar su gestin, actualizacin, control y manejo de su seguridad cmodamente. Cuando creamos un usuario en Apache, por lo general se crea un directorio para el mismo bajo el directorio /home. Es decir que para el usuario-admin de nuestro ejemplo, hay un directorio usuarioadmin dentro del directorio home del directorio raz (/) de de nuestro servidor. Para ir al directorio home del usuario con el que estamos ingresados en el servidor, podemos escribir cd /home/nombre-de-usuario o simplemente...cd ~

Hay mltiples formas de estructurar los directorios para albergar sitios web. Nosotros preferiremos un sitio web por cada usuario en el servidor, o mejor dicho, un usuario administrativo para cada sitio web en el servidor para as poder auditar y controlar los accesos al mismo. En el caso de Drupal, este "sitio web" puede albergar y servir mltiples sitios desde una sola instalacin, por lo que nuestra opcin es prctica y conveniente. En la gestin de sitios webs, tpicamente necesitamos los siguientes directorios:

Pblico: Donde se colocan los archivos visibles en la web. Backup: Donde albergamos copias temporales de la web mientras hacemos cambios o actualizaciones. Logs: Donde se almacenan los registros y bitcoras de acceso al sitio. cgi-bin: Donde se colocan ciertos archivos ejecutables.

Para nuestro ejemplo e instrucciones, sugerimos la estructura estndar siguiente:

Una vez configuremos Drupal con instalacin multisitio, la estructura de directorios se ver as...

En el paso siguiente veremos las consideraciones de seguridad para dichos directorios.

Permisos de Usuarios y Directorios para Sitios Web en ApacheExiten dos usuarios bsicos cuyos permisos debemos configurar para el adecuado funcionamiento de los sitios web, ejecucin de aplicaciones y almacenamiento de archivos:

el usuario dueo del sitio. el usuario Apache.

En Ubuntu, y distribuciones Debian de Linux, el usuario del servidor web Apache normalmente se llama www-data y debe encontrarse en el grupo www-data. En otras distribuciones de Linux se llama nobody o apache. Este usuario www-data debe tener acceso a los directorios pblicos del sitio web para poder leer y mostrar sus contenidos. Para facilitar la administracin del sitio web, adicionamos el usuario administrativo al grupo wwwdata...sudo usermod -a -G www-data usuario-admin

Si estamos accediendo el servidor como el usuario-admin, podemos verificar que ha sido adicionado al grupo escribiendo...groups

Si hemos seguido las instrucciones correctamente desde el principio hasta ac, nuestro usuario debe ser miembro de sudo y www-data y el comando anterior debe listar su nombre, seguido de ambos grupos.

Si no lo hemos creado, segn la estructura propuesta en el paso anterior, podemos proceder a crear el directorio public_html dentro del directorio de nuestro usuario en /home:mkdir ~/public_html

Tambin podemos escribir mkdir /home/usuario-admin/public_html, donde usuario-admin es el nombre del usuario con el que estamos trabajando. De acuerdo a lo propuesto y para continuar con el ejemplo del paso siguiente, creamos tambin un directorio para albergar los logs o registros del servidor. Este directorio no tiene requerimientos especiales de seguridad, ya que los registros los escribe el usuario raz o root. S debemos asegurarnos de que no est bajo la ruta de archivos visibles en la web.mkdir ~/logs

A continuacin, debemos asegurarnos de que nuestro directorio web public_html es parte del grupo www-data de Apache:sudo chgrp -R www-data /home/usuario-admin/public_html

Otorgamos los permisos adecuados para que el directorio web y los archivos y directorios creados dentro del mismo sean visibles en la web, usamos el comando...sudo chmod -R 2755 /home/usuario-admin/public_html

Si lo deseamos, podemos crear un directorio en el cual puedan almacenarse y grabar archivos, por ejemplo con el nombre de files y otorgar los permisos adecuados. Pero este paso no es necesario ahora, ya que luego tendremos una estructura diferente para Drupal y deberemos crear un directorio de archivos en una ubicacin distinta como veremos en el paso Instalacin y configuracin de Drupal.mkdir ~/public_html/files sudo chmod -R 2775 /home/usuario-admin/public_html/files

El 2 hace que sea permanente el permiso para los archivos creados en el futuro, el primer 7 da todos los permisos al usuario dueo del archivo, el segundo 7 da todos los permisos a los usuarios del grupo al cual pertenece el dueo (www-data de Apache) y el 5 indica permisos de lectura (r) y ejecucin (x), pero no de escritura (w), para el resto del mundo. Con esto hemos configurado los permisos, usuarios y grupos para mostrar y ejecutar adecuadamente sitios web en Apache.

Creando Sitios Web con Virtual Hosts en UbuntuLa ruta ms comn para crear sitios web en nuestro servidor Apache es a travs de anfitriones virtuales o virtual hosts, los cuales no son ms que la definicin de los sitios que deseamos albergar, de forma tal que un solo servidor puede "servir" mltiples sitios webs. El archivo principal que define el sitio web por defecto (default) de nuestro servidor es port.conf. Podemos ver su contenido usando el comando:cat /etc/apache2/ports.conf

Bsicamente, indica que el servidor web debe escuchar en el puerto 80 por cualquier dominio o consulta que reciba. Dichas consultas, sern procesadas segn las directivas del sitio web default definido en el directorio /etc/apache2/sites-available. Lo recuerdas?

Para habilitar nuevos sitios web en nuestro servidor, creamos un archivo con el nombre del dominio, en el directorio /etc/apache2/sites-available. La forma ms fcil es copiar el archivo default y modificarlo.cd /etc/apache2/sites-available/ sudo cp default dominio-del-sitio.com sudo nano dominio-del-sitio.com

En nuestro caso es importante incluir las cuatro primeras lneas del ejemplo debajo sobre el AddHandler y FCGIWrapper, y tambin que se encuentre ExecCGI en las lneas Options de cada seccin . En adicin, para poder usar los archivos .htaccess necesarios en la instalacin por defecto de Drupal, debemos colocar AllowOverride All dentro de las secciones . Un modelo de archivo de definicin de host en Ubuntu sera... AddHandler fcgid-script .php FCGIWrapper /usr/lib/cgi-bin/php5 .php ServerAdmin [email protected] ServerName dominio-del-sitio.com ServerAlias www.dominio-del-sitio.com DirectoryIndex index.html DocumentRoot /home/usuario-admin/public_html Options FollowSymLinks ExecCGI AllowOverride All Options Indexes FollowSymLinks MultiViews ExecCGI AllowOverride All Order allow,deny allow from all ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride All Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all LogLevel warn ErrorLog /home/usuario-admin/logs/error.log CustomLog /home/usuario-admin/logs/access.log combined Alias /doc/ "/usr/share/doc/" Options Indexes MultiViews FollowSymLinks ExecCGI AllowOverride All Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128

Grabamos con Ctrl-X, confirmando con Y y procedemos a habilitar el sitio...sudo a2ensite dominio-del-sitio.com

Finalmente, reiniciamos Apache y nuestro nuevo sitio estar listo.sudo /etc/init.d/apache2 reload

Instalar y Configurar Servidor MySQLMySQL es la plataforma que usamos para albergar y manejar la base de datos del sistema. Una de las recomendaciones que ms impacto puede producir en el rendimiento de nuestros portales es albergar y ejecutar la base de datos en un servidor distinto al que alberga la aplicacin de contenidos, de forma tal que distribuyamos la carga de procesamiento en dos servidores: uno con la aplicacin (en nuestro caso Drupal) y otro con la base de datos (MySQL). Es recomendable antes de proceder a instalar MySQL, asegurarnos de que nuestro sistema y sus paquetes estn actualizados y contamos con la informacin local de idioma. Si ests siguiendo las instrucciones desde el principio de esta gua, este paso no es necesario, ya fue lo primero que hicimos en la seccin "Preparando el Sistema".sudo sudo sudo sudo sudo sudo apt-get install locales apt-get install language-pack-en-base apt-get install language-pack-es-base dpkg-reconfigure locales apt-get update apt-get upgrade

Una vez estamos seguros de que nuestro sistema est al da, podemos descargar e instalar el paquete de MySQL.sudo apt-get install mysql-server

El sistema nos mostrar un resumen de los paquetes a instalar y descargar, pidiendo nuestra confirmacin con una Y seguida de Enter.

Luego proceder con la instalacin y se detendr nuevamente para pedirnos una contrasea maestra para el usuario root de MySQL. Es importante que esta contrasea sea compleja y no la olvidemos ni divulguemos.

Introducimos la contrasea e indicamos OK y se nos pide que la introduzcamos de nuevo para confirmar antes de proseguir con la instalacin, la cual debe continuar y concluir sin mayor complicacin.

Fortaleciendo la Seguridad de MySQL Una vez instalado MySQL y antes de abrirlo al mundo como plataforma en produccin, podemos, ms bien debemos, ejecutar el script predefinido que nos ayuda a dar los primeros pasos y tomar las medidas bsicas de seguridad para el servidor de bases de datos...sudo /usr/bin/mysql_secure_installation

El uso del script es bastante sencillo. Primero nos pide la contrasea del usuario root de MySQL y una vez introducida, nos invita a cambiarla, si lo deseamos.Enter current password for root (enter for none): Change the root password? [Y/n] n

De ah en lo adelante se limita bsicamente realizarnos una serie de preguntas, las cuales debemos responder con una Y para fortalecer la seguridad y el script se encarga del resto.Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y

Si ves un mensaje de error de que la tabla test no existe como en la pantalla de ejemplo debajo, no te preocupes, que dependiendo de cmo fue configurado MySQL, puede que la misma no haya sido incluida.

Es todo. MySQL est seguro y hemos eliminado riesgos innecesarios.

Configurando Acceso a Servidor MySQL dedicadoEl uso de recursos por la aplicacin de bases de datos es una de las razones ms comunes que afecta el rendimiento de una web con aplicacin de manejo de contenidos como Drupal. Para sitios web de alto trfico, se recomienda instalar y configurar el sistema de bases de datos en un servidor dedicado aparte, separado y distinto del de aplicaciones. En el caso de optar por esta arquitectura, es necesario entonces permitir el acceso del servidor de aplicaciones (donde est Drupal) al servidor de bases de datos. Por defecto, MySQL solo acepta

pedidos de acceso de aplicaciones ejecutndose en el mismo servidor en que l se encuentra, tal y como lo define la directiva bind-address = 127.0.0.1 en su configuracin inicial. La solucin est en desactivar o modificar dicha directiva editando el archivo de configuracin de MySQL my.cnf. Si ms de un servidor de aplicacin(es) va a acceder al sistema de bases de datos, podemos simplemente desactivar esta restriccin. Para desactivar la limitacin de acceso slo local, si instalamos MySQL con las opciones por defecto en un servidor Ubuntu, escribimos:sudo nano /etc/mysql/my.cnf

Y buscamos la lnea que contiene bind-address y colocamos el signo # al inicio de la misma para desactivarla.#bind-address = 127.0.0.1

Y cerramos el archivo pulsando Ctrl-X y Y para confirmar que deseamos guardar los cambios. Ntese que desactivar la restriccin de acceso vlido solo para el servidor local, no significa que cualquier servidor tendr acceso a los datos, sino que el servidor de bases de datos aceptar pedidos de cualquier servidor. Pero el acceso mismo en s debe ser otorgado como explicaremos ms adelante. Alternativamente, si slo un servidor de aplicacin(es) va a acceder a la base de datos, podemos indicar el ip del mismo en la directiva bind-address, sustituyendo el 127.0.0.1 con su ip, en vez de desactivarla colocando el # delante. Para que los cambios tengan efecto, reiniciamos MySQL con el comando:/etc/init.d/mysql restart

Ya estamos listos para que otros servidores puedan acceder a nuestras bases de datos segn los permisos especficos que otorguemos.

Preparar Base de Datos MySQL para Instalacin de DrupalAntes de instalar Drupal, debemos crear la base de datos a ser usada por el sistema y el usuario que usar Drupal para acceder, leer y escribir en ella. Para ello ingresamos en MySQL escribiendo..mysql -h localhost -u root -p

Este comando indica que queremos ejecutar la plataforma MySQL usando bases de datos almacenadas en el servidor local desde el cual lo ejecutamos, identificndonos como el usuario principal root y que nos pregunte el password. Si lo deseamos, podemos escribir el password luego de -p, pero estara visible a cualquiera que est cerca y es mejor escribir solo -p para que el sistema nos pregunte y no sea visible cuando lo digitemos.

Una vez dentro, procedemos a crear la base de datos. Por ejemplo, si deseamos llamar la base de datos "drupalsite_db", escribimos:create database drupalsite_db;

Es importante escribir el ; al final de la instruccin y antes de pulsar Enter, ya que es el ; lo que indica a MySQL que la instruccin est completa y debe ejecutarla.

Una vez creada la base de datos creamos el usuario para acceder a la misma y le asignamos los permisos en un solo paso:GRANT ALL PRIVILEGES ON drupalsite_db.* TO [email protected] IDENTIFIED BY 'password';

En nuestro ejemplo... db_user

es el nombre del usuario al que otorgamos todos los privilegios de acceso a la base

de datos. es el ip del servidor desde el cual se acceder a la base de datos. Si Drupal y MySQL se ejecutan en el mismo servidor, podemos indicar localhost en vez de un IP. password es la contrasea que creamos y que validar el acceso.123.456.789.012

Es importante anotar esta informacin ya que la necesitaremos luego al instalar y configurar Drupal.

Para asegurarnos que los permisos entren en efecto de inmediato, escribimos:flush privileges;

Ahora podemos salir de MySQL escribiendo...quit;

Ya la base de datos est lista para que podamos instalar Drupal.

Instalar y Configurar DrupalUna vez instalados, preparados y configurados el servidor web (Apache), el sitio web y su estructura de directorios y el sistema de bases de datos (MySQL) y la base de datos a usarse, podemos proceder a instalar Drupal en el servidor de aplicaciones. La instalacin de Drupal consta de dos pasos:

En el Servidor: Descargar, descomprimir y configurar los archivos de la aplicacin Drupal. En la Web: Ejecutar la instalacin va web, respondiendo las preguntas correspondientes hasta completar la configuracin.

Hay una tercera fase, obviamente, que consiste en revisar, configurar, adecuar y extender las configuraciones una vez completada la instalacin. Revisin Final antes de Proceder Ya estamos prcticamente listos para instalar Drupal, pero antes, asegurmonos de haber:

Instalado y activado los mdulos necesarios y recomendados en el paso Mdulos de Apache Importantes y Recomendados para Drupal en Ubuntu. Realizado los cambios sugeridos en php.ini en Configurando PHP para Alto Trfico y Carga de Archivos en Drupal. Realizado los cambios sugeridos en la definicin del o los virtual hosts, en particular el AllowOverride All como se indica en Creando Sitios Web con Virtual Hosts en Ubuntu.

En los prximos pasos, haremos la configuracin desde el servidor y luego la instalacin de Drupal desde la web.

Preparacin de Instalacin de Drupal Va ShellDescarga y Descompresin de la Aplicacin Drupal Si bien podemos instalar Drupal en un subdirectorio de nuestro sitio web, en nuestro ejemplo asumimos que Drupal es la aplicacin principal para el despliegue y manejo de contenidos en nuestro sitio web, por lo que lo instalaremos en el directorio principal del mismo, para lo cual nos desplazamos all en el servidor web o de aplicaciones:cd /home/usuario-admin/public_html

La versin ms reciente de Drupal puede descargarse siempre desde la pgina principal de www.drupal.org. Copiamos el enlace adecuado de dicha pgina y lo descargamos en nuestro directorio principal del servidor con wget:wget http://ftp.drupal.org/files/projects/drupal-6.16.tar.gz

Drupal es descargado como un archivo comprimido que debemos desempacar con el comando:tar -zxvf drupal-6.16.tar.gz

Esto crear el directorio drupal-6.16 y colocar dentro del mismo todos los archivos de Drupal. Debemos moverlos a nuestro directorio principal, por lo que, encontrndonos en /home/usuarioadmin/public_html escribimos:mv drupal-6.16/* .

Debemos tambin mover el archivo oculto .htaccess:mv drupal-6.16/.htaccess .

Una vez movidos los archivos, podemos eliminar el directorio creado:rmdir drupal-6.16

Si lo deseamos, podemos guardar en el directorio backup que creamos en el archivo descargado para poder restaurar la configuracin original en caso de dificultades o como medida de prevencin. Si no hemos creado dicho directorio, podemos hacerlo ahora.mkdir ~/backup mv drupal-6.16.tar.gz ../backup

Podemos listar los archivos del directorio con el comando ls para ver los resultados de nuestra instalacin hasta ahora.

Permisos del Archivo de Configuracin y el Directorio para archivos subidos Ahora debemos copiar y dar permiso de escritura al archivo de configuracin:cp sites/default/default.settings.php sites/default/settings.php chmod 777 sites/default/settings.php

Y aprovechamos y creamos ahora un directorio files en el cual los usuarios podrn subir archivos y le otorgamos los permisos correspondientes:mkdir sites/default/files chmod -R 2775 sites/default/files

Traduccin al Espaol Para poder instalar Drupal en espaol debemos descargar y descomprimir el archivo ms reciente de traduccin, en el directorio principal en el cual estamos instalando Drupal. Nos movemos al directorio principal de la web:cd ~/public_html

Luego descargamos el archivo de traduccin al espaol disponible en http://drupal.org/project/es:wget http://ftp.drupal.org/files/projects/es-6.x-1.4.tar.gz

Y lo descomprimimos ah mismo:tar -zxvf es-6.x-1.4.tar.gz

Antes de proseguir, movemos el archivo con las traducciones que descargamos al directorio de backup:mv es-6.x-1.4.tar.gz ../backup

Ahora podemos proceder a realizar la instalacin va web, navegando en nuestro explorador de Internet al IP o direccin que hemos configurado para nuestro sitio web.

Instalacin Web de DrupalUna vez preparados los directorios, mdulos, base de datos y descargado y descomprimido Drupal como explicamos en los pasos anteriores, podemos ir a la direccin web de nuestro sitio o su ip y debe iniciarse el proceso de instalacin de Drupal.

Cuando se nos pregunte por la base de datos, si esta se encuentra en otro servidor, debemos indicarlo haciendo click en Advanced Options para que se muestren unos campos adicionales que nos permiten indicar el ip o FQDN del servidor de bases de datos.

Si todo est bien, al pulsar Guardar y continuar, veremos un par de pantallas en las que se nos informa del proceso de instalacin y de la configuracin de las traducciones para los componentes bsicos del sistema...

A seguidas, se nos muestra una pantalla en la que debemos introducir las informaciones y configuraciones generales del sitio web: Su nombre, usuario administrador y contrasea, la hora del sitio y sus formatos, etc.

Luego de esta pantalla, se nos informa que hemos concluido felizmente la instalacin y que ya podemos ver nuestro nuevo y flamante sitio web Drupal en la direccin configurada:

Una vez terminada la instalacin, debemos cambiar los permisos del archivo settings.php para evitar riesgos de seguridad.chmod 444 ~/public_html/sites/default/settings.php

Configuracin y Verificacin Post-Instalacin DrupalUna vez concluida la instalacin, hay varias acciones que es bueno realizar para asegurar un buen funcionamiento y verificar que todo est bien instalado. Esto incluye:

Configuracin y verificacin de Cron. Verificacin del envo de mensajes a usuarios. Verificacin de la correcta subida de archivos, su ubicacin y permisos. Cambios especiales para imagemagick y jquery (opcionales)

Configurar CronLa aplicacin cron ejecuta peridicamente tareas de mantenimiento de Drupal, tales como limpiar caches, enviar correos, reconstruir ndices, etc. Lo primero que debemos hacer es configurarlo y

asegurarnos que funciona. Esto se hace editando el archivo de crontab, en el cual se indican las tareas peridicas a realizar por el sistema. Podemos verificar que cron no se ha ejecutado si visitamos la pgina de reporte de Drupal en dominio-del-sitio.com/admin/reports/status y vemos el indicador de cron al final de la pgina. Para configurarlo, escribimos en el servidor:sudo crontab -e

En el interior de este archivo colocamos:5 * * * * wget -O - -q -t 1 http://dominio-del-sitio.com/cron.php

Donde 5 seguido de * * * * quiere decir que se ejecutar 5 minutos luego de cada hora (es decir, a la 1:05, 2:05, etc.). Como queremos ejecutarlo de inmediato, miramos la hora en nuestro servidor y cambiamos el 5 por un valor que programe la tarea deseada para su ejecucin en los prximos minutos y as podemos verificar que funciona. Terminamos de editar el archivo con Ctrl-X y pulsamos Y para confirmar que deseamos guardar los cambios. Esperamos de ejecucin y volvemos a visitar dominio-delsitio.com/admin/reports/status. Si todo est instalado y configurado correctamente, debe mostrarnos que el cron se ha ejecutado exitosamente hace unos momentos. que pase la hora

Si no es as, podemos verificar el log del sistema para ver si hay algn mensaje de error al respectosudo nano /var/log/syslog

Verificar la Correcta Subida de Archivos en DrupalLo primero es activar el mdulo Upload, que "Permite a los usuarios subir archivos y anexarlos a contenido". Para ello, vamos a la pgina de mdulos siguiendo la secuencia de men "Administrar > Construccin del Sitio > Mdulos" o directamente a la direccin "http://dominio-delsitio/admin/build/modules". Una vez all, seleccionamos la casilla junto al ttulo del mdulo Upload, casi al final de la lista de mdulos "Core - Opcional" y seleccionamos el botn "Guardar Configuracin" para activarlo. El prximo paso es configurar el mdulo y la subida de archivos en general. Esto lo logramos en dos pasos: Primero, verificamos el lugar donde se subirn los archivos y que Drupal no indique ningn error. Ah est tambin la direccin de archivos temporales que podemos mover bajo la de archivos si queremos para tener ms control, pero no es necesario. Esto se encuentra siguiendo la secuencia de

men "Administrar > Configuracin del Sitio > Sistema de Archivos" o directamente a la direccin "http://dominio-del-sitio/admin/settings/file-system". Luego, configuramos el tamao y tipo de archivos que pueden subir los usuarios, siguiendo la secuencia de men "Administrar > Configuracin del Sitio > Descargas de Archivos" o directamente a la direccin "http://dominio-del-sitio/admin/settings/uploads". Debemos tener en cuenta que si ya hemos creado usuarios en el sistema, habr dos conjuntos de opciones: las generales y las de los usuarios autenticados o registrados. Un lmite de 64Mb por archivo y 512M por usuario debe ser suficiente en una comunidad comn. Finalmente, damos permiso de "subir archivos" a los "usuarios autenticados" y de "ver archivos cargados" tanto a los "usuarios annimos" como a los "usuarios autenticados". Esto lo hacemos siguiendo siguiendo la secuencia de men "Administrar > Administracin de Usuario > Permisos" o directamente a la direccin "http://dominio-del-sitio/admin/user/permissions". Y ya que estamos ah, podemos aprovechar para permitir a los "usuarios autenticados" a "crear entradas de bitcora", "borrar las entradas de bitcora propias" y "editar las entradas de bitcora propias", y a los "usuarios annimos" a "acceder a los comentarios", adems de los "usuarios autenticados", que ya tiene ese permiso por defecto. Una vez completado esto, podemos usar nuestro usuario administrativo o el usuario de prueba si creamos uno y publicar un blog (con el usuario de prueba) o un artculo o pgina (con el usuario administrativo), siguiendo el men "crear contenido". Colocamos un ttulo y texto de prueba y luego, al final de la pgina, anexamos uno o ms archivos para asegurarnos de que esta funcionalidad est correcta. Es importante luego de subir los archivos adjuntos y guardar el contenido, probar descargando o viendo los archivos para confirmar que subieron bien.

Compatibilidad de Mdulos Contribuidos de Drupal con PHP 5.3En el mundo de la informtica, los cambios ocurren en forma rpida y continua, en lo que por lo general constituye una evolucin constantemente de los sistemas hacia una mayor eficiencia, eficacia, versatilidad y rendimiento. Pero esto implica el reto de mantener la compatibilidad con las versiones anteriores, no slo de cada sistema en particular, sino con el resto de sistemas con los que cada uno interacta y comunica. La introduccin de la versin 5.3 de PHP implic cambios en el manejo de variables y en particular de arreglos o arrays que afectan el funcionamiento de buena parte de las aplicaciones existentes desarrolladas en PHP. Afortunadamente, el cambio es mnimo y la solucin y adaptacin relativamente fcil, pero an as es menester rastrear, encontrar y realizar dichos cambios. En el caso de Drupal, la comunidad ha respondido rpidamente identificando y proponiendo los cambios necesarios en el sistema principal o "core" y en varios mdulos contribuidos que requieren adecuacin para garantizar compatibilidad con PHP 5.3. A pesar de la rpida respuesta, los responsables de mantener y actualizar las versiones oficiales del sistema principal y estos mdulos contribuidos, no han liberado versiones actualizadas con las correcciones en el caso de varios mdulos populares e importantes para numerosas instalaciones de Drupal. Esto se debe en parte al proceso de prueba y verificacin colaborativa comn en los proyectos de Open Source, a travs del cual los cambios se introducen inicialmente en versiones "dev" o "beta" y slo en las versiones oficiales luego de que han sido probados y verificados por una cantidad significativa de usuarios. Al no encontrarse las soluciones y cambios incorporadas en las versiones estables y oficiales, el usuario comn puede tener un poco de dificultad encontrando los cambios necesarios para alcanzar su compatibilidad con PHP 5.3, en particular dado que en ocasiones hay ms de una discusin sobre

cmo hacerlo y que el proceso es abierto y libre, dependiendo del flujo, intervencin y participacin de la comunidad. Pero las soluciones estn ah en cada caso. Para simplificar la bsqueda y aplicacin de las actualizaciones de los mdulos principales y contribuidos de Drupal que necesitan cambios para compatibilidad con PHP 5.3, a la fecha de mayo 26 del 2010, introduzco una breve lista de cmo descargar y aplicar los cambios y la fuente para dicho cambio, para los mdulos que uso y que tienden a ser populares. Antes de aplicar los cambios o parchos listados a continuacin, se recomienda revisar la fuente de los mismos por si hay algn cambio nuevo o correccin y adems verificar la versin de nuestra instalacin de Drupal y de cada mdulo en cuestin. Cada correccin indica la versin en particular del mdulo que corrige. En el caso de los mdulos del sistema principal "node" y "comment", las correcciones son para Drupal 6.16.

Actualizando Mdulo (core) Node de Drupal para PHP 5.3

Versin: Drupal 6.16 - 03-Mar-2010 (verificar que no hay una versin ms nueva antes de aplicar el parcho) Fuente: http://drupal.org/node/587568#comment-2505664

Actualizando Mdulo (core) Comment de Drupal para PHP 5.3

Versin: Drupal 6.16 - 03-Mar-2010 (verificar que no hay una versin ms nueva antes de aplicar el parcho) Fuente: http://drupal.org/node/587568#comment-2718536

Actualizando Mdulo Calendar de Drupal para PHP 5.3

Versin: 6.x-2.2 - 29-Jul-2009 (verificar que no hay una nueva antes de aplicar el parche) Fuente: http://drupal.org/node/613528#comment-2250424

Actualizando Mdulo Date de Drupal para PHP 5.3

Versin: 6.x-2.4 - 16-Sep-2009 (verificar que no hay una nueva versin antes de aplicar el parche) Fuente: http://drupal.org/node/549884#comment-2250444

Si usamos la versin dev de Date, es necesario aplicar dos parches distintos:

Versin: 6.x-2.x-dev - 11-Jul-2010 (verificar que no hay una nueva versin antes de aplicar el parcho) Fuente: http://drupal.org/node/518816#comment-3008038 http://drupal.org/node/518816#comment-3027232 http://drupal.org/node/772180#comment-2904768 (marcado como duplicado)

Actualizando Mdulo GMap de Drupal para PHP 5.3

Versin: 6.x-1.1-rc1 - 03-Mar-2009 (verificar que no hay una nueva versin ms nueva antes de aplicar parcho) Fuente: http://drupal.org/node/582934

Actualizando Mdulo Google Analytics de Drupal para PHP 5.3

Versin: 6.x-2.2 - 01-Apr-2009 (verificar que no hay una nueva antes de aplicar parcho) Fuente: http://drupal.org/node/679404#comment-2668756

Actualizando Mdulo SWFtools de Drupal para PHP 5.3

Versin: 6.x-2.5 - 27-Abr-2009 (verificar que no hay una versin ms nueva antes de aplicar el parcho) Fuente: http://drupal.org/node/589326

Actualizando Mdulo ImageFUpload de Drupal para PHP 5.3Los parches disponibles fallan al aplicarse. Pero el cambio es mnimo y se puede hacer manual

Buscar dentro de...

la lnea...

y sustituirla por...

Versin: 6.x-3.0-rc2 - 08-Apr-2009 (verificar que no hay una nueva antes de aplicar el parcho) Fuente: http://drupal.org/node/619632#comment-2999502

Actualizando Mdulo Location de Drupal para PHP 5.3

Versin: 6.x-3.1 - 06-Jul-2010 (verificar que no hay una nueva antes de aplicar el parcho) Fuente: http://drupal.org/node/846604#comment-3173086

Actualizando Mdulo Views de Drupal para PHP 5.3

Versin: 6.x-2.11 - 17-Jun-2010 (verificar que no hay una nueva antes de aplicar el parcho) Fuente: http://drupal.org/node/452384#comment-3157454

Protegiendo nuestro sitio web Drupal de robots, spammers y ataques maliciososToda web que incluye componentes interactivos abiertos a la participacin del pblico se encuentra expuesta al ataque de spammers, robots y usos maliciosos y deshonestos por parte de individuos y empresas inescrupulosas que pululan por la red en bsqueda de oportunidades para inundar espacios ajenos con publicidad y cdigo engaoso. Uno de los mecanismos ms eficientes de mantener a esos robots masivos automatizados fuera de nuestros espacios interactivos es usar el servicio Bad Behavior, el cual analiza los encabezados HTTP, direcciones IP, y otros metadatos de cada acceso a nuestro website y determina si corresponde a robots maliciosos, spammers o fuentes que no debemos confiar porque ocultan o disfrazan su identidad. Bad Behavior es una iniciativa de cdigo libre cuyo cdigo y aplicaciones se encuentran disponibles sin costo. Lamentablemente la versin vigente del mdulo de Bad Behavior para Drupal no se actualiza desde el 2008 y en la actualidad genera errores al ser usada con la versin actual de Drupal y las ltimas

versiones de la librera de Bad Behavior. La versin dev fue actualizada por ltima vez en enero del 2010, pero muchos usuarios prefieren no usar versiones dev en sitios activos y pblicos. En el 2009, propuse una actualizacin para la documentacin del mdulo, detallando los pasos correctos para activarlo con la versin 2.x de Bad Behavior, y en diciembre del 2009, el usuario de Drupal gregarios introdujo un parche que actualiza el mdulo para permitir usarlo con el nuevo Project Honeypot, que aumenta grandemente su eficacia bloqueando spammers y robots. Pero la versin oficial del mdulo sigue sin cambios, aunque la versin dev fue actualizada en enero y creo que incluye estos cambios. Si todo esto parece confuso, afortanadamente, gregarios hizo disponible una versin no-oficial actualizada con el patch para soportar Project Honeypot y las libreras de Bad Behavior, simplificando el proceso de descarga e instalacin en:http://drupal.org/node/422974#comment-2834608

Para instalarlo, basta con descargar el archivo .zip propuesto y descomprimirlo en el folder modules de Drupal.cd ~/public_html/sites/all/modules wget http://drupal.org/files/issues/badbehavior_v2.1.2_patched_20100411.zip unzip badbehavior_v2.1.2_patched_20100411.zip

Nota: El comando unzip, que nos permite descomprimir el archivo que descargamos, no es tan comn en Linux como sus versiones equivalentes en el mundo Windows y es probable que no se encuentre instalado en nuestro servidor. Para instalar unzip en un servidor Linux corriendo Ubuntu solo debemos escribir: sudo apt-get install unzip. Por la forma en que fue comprimido el archivo .zip, hay un directorio innecesario en el mismo llamado __MACOSX. Si somos quisquillosos sobre lo que se encuentra en nuestro servidor, podemos eliminarlo escribiendo rm -rf __MACOSX. Luego slo tenemos que ir a la pgina de mdulos (admin/build/modules) en nuestro navegador y lo seleccionamos en la lista de mdulo para activarlo. Para poder activar la proteccin de Project Honeypot, debemos ir a su web www.projecthoneypot.org y registrarnos para obtener una clave de acceso http:BL (http:BL Access Key), la cual introducimos en la pgina de configuracin del mdulo badbehavior en admin/settings/badbehavior. Los reportes de ip's, robots y spammers bloqueados pueden verse en admin/reports/badbehavior

Solving File Upload Corruption Issues with Ubuntu 10.04On April 30, 2010, Canonical announced the much awaited official release of Ubuntu Lucid Lynx 10.04, their most recent Long Term Support (LTS) version. Cautious web masters and network manager tend to prefer LTS versions (or their equivalent in other platforms) because they tend to be solid, well proven releases and, as the LTS label implies, because they come with a commitment by the developer(s) of guaranteed long term support, updates and security upgrades, which extends to three years and five years for Desktop and Server versions of Ubuntu, respectively. Nonetheless, open source systems are made up of hundreds, even thousands of bits of coding units, packages, libraries, extensions, each serving specific tasks and many times serving multiple functions.

I was eager to migrate our servers on April 30 to Ubuntu 10.04 right away, but experience, good practice and common sense suggested setting up a trial system with all our features and specific configuration and test it before proceeding. And we were lucky we did so. Our standard server configurations is based on Ubuntu running Apache as mpm worker and php5 as fcgid. It turns out that upgrading to Ubuntu 10.04, or doing a fresh install of this configuration on Ubuntu 10.04, ends up messing up file uploads via PHP, which end up uploading corrupted. After some research, I was able to pin point the problem and link it to the version of libapache2-mod-fcgid being included in the Ubuntu Lucid 10.04 repositories. The repositores for past releases of Ubuntu, including 9.10 Karmic Koala included the 1:2.2-1 version of libapache2-mod-fcgid, while the repositories for Ubuntu Lucid Lynx 10.04 include the 1:2.3.4-2 of libapache2-mod-fcgid, which has a known bug that corrupts files uploaded with a size larger than the FcgidMaxRequestInMem value. The fix is fairly simple: Downgrade libapache2-mod-fcgid to 1:2.2-1. This involves a number of manual steps, which I will outline below:

First, download a trusted version of libapache2-mod-fcgid to 1:2.2-1 from http://packages.ubuntu.com/karmic/libapache2-mod-fcgid . In my case, running Ubuntu 64bit being in Singapore now, the closest mirror was Korea, so I did:wget http://kr.archive.ubuntu.com/ubuntu/pool/universe/liba/libapache2mod-fcgid/libapache2-mod-fcgid_2.2-1_amd64.deb

Then install it with:sudo dpkg -i libapache2-mod-fcgid_2.2-1_amd64.deb

Finally, you need to "hold" this version so that it is not upgraded later on any maintenance process or update you do:sudo -s echo libapache2-mod-fcgid hold | dpkg --set-selections

That's it. You can reload Apache and restart Apache:sudo /etc/init.d/apache2 reload sudo apache2ctl graceful

You can see the actual version of libapache2-mod-fcgid installed by typing:sudo dpkg -s libapache2-mod-fcgid

And you can do an actual upgrade to test that this version is kept throughout updates. You will see a notice when doing the upgrade that this package will be ignored.sudo apt-get update sudo apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done The following packages have been kept back: libapache2-mod-fcgid 0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. sudo dpkg -s libapache2-mod-fcgid

Finally, don't forget to keep an eye on the Ubuntu 10.04 package repositories, for eventually they will upgrade to include a newer version of libapache2-mod-fcgid which does not present this problem. Version 2.3.5 reportedly fixes the issue (see here). At that moment you can "unhold" the package for it to be included in upgrade operations. More info on the bug

ASF Bugzilla: https://issues.apache.org/bugzilla/show_bug.cgi?id=48021 Debian bugs-dist: http://osdir.com/ml/debian-bugs-dist/2010-02/msg03612.html SVN Apache: http://svn.apache.org/viewvc?view=revision&revision=826829 Drupal Issues: http://drupal.org/node/635270 Mailing List Apache Dev: http://www.gossamer-threads.com/lists/apache/dev/376603

Media Streaming Servers: Open Source and ProprietaryA friend recently consulted me about streaming media and video-on-demand solutions available to satisfy the requirements of a distant learning initiative to be implemented by one of his customers. While explaining to him the many options available I realized that not many people are aware of how much the streaming media ecosystem has changed in the last few years and that there are several open source platforms and solutions available for streaming audio and video over the Internet, lowering the cost of such endeavors and making the implementation of pilot and fully functional initiatives much more affordable and accessible to all kind of organizations.

Commercial Solutions

Accordent Solutions http://www.accordent.com Adobe (Macromedia) Flash Video Server http://www.adobe.com/products/flashmediaserver Apple Quicktime Streaming Server. http://www.apple.com/quicktime/streamingserver Destiny Media Technologies Clipstream http://www.clipstream.com Forbidden Technologies FORScene http://www.forbidden.co.uk/products/scene Intel IP Services. P Multimedia Subsystem, IPTV, Mobile TV http://www.intel.com/netcomms/solutions/ims Microsoft Windows Media Server. http://www.microsoft.com/windows/windowsmedia/forpros/server/server.aspx RealNetworks Helix Server. http://www.realnetworks.com/products/media_delivery.html TurnStyle Andromeda (mp3 streaming) http://www.turnstyle.com/andromeda

VideoVista http://www.vista.it VX30 Streaming Video Solutions http://www.vx30.com

Free and Open Source Streaming Video Solutions

AMpache - Web-based audio file manager http://www.ampache.org Darwin Streaming Media Server Open Source version of Apples Quicktime Streaming Server http://developer.apple.com/opensource/server/streaming ePresence http://www.epresence.tv FFServer (parte de FFMPEG) http://ffmpeg.mplayerhq.hu FreeCast (peer to peer streaming) http://www.freecast.org/ GNUMP3d Streaming MP3 / Media Server http://www.gnu.org/software/gnump3d IceCast http://www.icecast.org Logitech SlimDevices SlimServer http://www.slimdevices.com/pi_features.html MPEG4IP http://mpeg4ip.sourceforge.net SHOUTcast http://www.shoutcast.com UnReal Server http://www.umediaserver.net VideoLAN Server (VLC). http://www.videolan.org/vlc/streaming.html Zina (mp3 streamer, open source equivalent to Andromeda) http://www.pancake.org/zina

Other ApplicationsSpecial mention should be made of Dyne:bolic, a fully functional Linux distribution loaded with multimedia production (audio, video editing, ect.) software all ready to run from a single CD, without requiring any installation and able to run on computers with limited memory and processing power.

Dyne:bolic http://www.dynebolic.org

Orb allows users to stream their own content over the web through their own devices to other devices they own. This allows for example to watch a dvd from your DVD player in your mobile phone away from home.

Orb http://www.orb.com