Академический Документы
Профессиональный Документы
Культура Документы
By 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.
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.
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
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.
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.
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
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.
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/tcp
80/tcp 443/tcp 21 3306/tcp
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
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
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 Configuracin
Si 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
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
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.
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
Y en el interior del mismo colocamos las siguientes instrucciones, segn sugiere Khalid Baheyeldin de 2bits.com:
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 <Directory ...> 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 <Directory ...> y adicionamos ExecCGI a las mismas. Aprovechamos tambin para asegurarnos de que dentro de de <Directory ...> 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 <Directory /> Options FollowSymLinks ExecCGI AllowOverride All </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews ExecCGI AllowOverride All Order allow,deny allow from all </Directory> (...)
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...
<? phpinfo() ?>
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...
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
Ac podemos ver 4 directorios esenciales para el manejo de Apache en Ubuntu: mods-available, mods-enabled, sites-available y sites-enabled.
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.
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
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.
En adicin, debemos realizar un pequeo cambio en el archivo de configuracin apache2.conf, el cual editamos escribiendo:
sudo nano /etc/apache2/apache2.conf
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:
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.
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
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.
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.
Una vez configuremos Drupal con instalacin multisitio, la estructura de directorios se ver as...
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.
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 <Directory ...>. En adicin, para poder usar los archivos .htaccess necesarios en la instalacin por defecto de Drupal, debemos colocar AllowOverride All dentro de las secciones <Directory ...>. Un modelo de archivo de definicin de host en Ubuntu sera...
<Directory /home/usuario-admin/public_html> AddHandler fcgid-script .php FCGIWrapper /usr/lib/cgi-bin/php5 .php </Directory> <VirtualHost *:80> ServerAdmin info@dominio-del-sitio.com ServerName dominio-del-sitio.com ServerAlias www.dominio-del-sitio.com DirectoryIndex index.html DocumentRoot /home/usuario-admin/public_html <Directory /> Options FollowSymLinks ExecCGI AllowOverride All </Directory> <Directory /home/usuario-admin/public_html/> Options Indexes FollowSymLinks MultiViews ExecCGI AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride All Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> LogLevel warn ErrorLog /home/usuario-admin/logs/error.log CustomLog /home/usuario-admin/logs/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/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 </Directory> </VirtualHost>
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.
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.
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 db_user@123.456.789.012 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.
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.
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/* .
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
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.
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 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 Cron
La 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
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 respecto
sudo nano /var/log/syslog
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.
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.
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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 Applications
Special 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