jueves, 21 de diciembre de 2006

Compilando Apache httpd con todo compartido

./configure --with-ldap --enable-mods-shared="all ssl ldap cache proxy authn_alias mem_cache file_cache authnz_ldap charset_lite dav_lock disk_cache"
make
make install

Referencias:
Apache2.2
Recipes/ConfigAllMods

NOTA: Obsérvese que cada módulo sólo debe compilarse una vez, ya sea incrustado o compartido, pero no ambos. (En mi caso agregué también la opción --enable-modules="all" y el resultado fue que, al arrancar el servidor, nunca protestó, pero tampoco funcionó.)

miércoles, 20 de diciembre de 2006

Formatear disco nuevo

Después de haber conectado el disco, encender la computadora. Utilizar dmesg para verificar que la computadora haya detectado el disco (este comando permite imprimir los mensajes de arranque).

Aunque no se esté usando debian, http://www.debianhelp.co.uk/newharddisk.htm es una buena referencia (algunos podrán saltar a esa página y no regresar aquí, sólo especifico los puntos donde tuve problemas al seguir esa guía).

Para hacer las particiones utilizo fdisk. Por ejemplo, queriendo particionar un disco scsi de 250G en dos secciones de 100G y 150G, se invoca:

#fdisk /dev/sdb

Es una aplicación interactiva, por lo que, para configuraciones básicas, basta con ir leyendo las indicaciones. Al final mi sistema quedó:

Disk sdb: 250.0 GB, 250000000000 bytes
255 heads, 63 sectors/track, 30394 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
sdb1 1 12158 97659103+ 83 Linux
sdb2 12159 30394 146480670 83 Linux

Para dar formato, en Fedora, mkfs -c -t ext3 /dev/sdb1 devuelve mkfs.ext2: invalid blocks count - /dev/sdb1. La opción es, entonces, el siguiente comando:

#mke2fs -cjv /dev/sdb1

Finalmente resta montar las particiones. Para montarla en el momento:

mount -rwt ext3 /dev/sdb1 /punto_de_montaje/

Agregar la entrada correspondiente en /etc/fstab para que la partición sea montada al arrancar el sistema:

/dev/sdb1 /punto_de_montaje ext3 defaults 0 0

Ojo, si se copian datos, aquí puede ser recomendable utilizar:

#cp -rp origen destino

si se quiere preservar permisos. También puede requerirse -Z si se trabaja con SELinux.

jueves, 14 de diciembre de 2006

Pylons

Este es un nuevo intento por servir archivos wml (formato para páginas web en el celular), generados dinámicamente tras haber obtenido cierta información vía servicios WAP. SOAPpy ya resolvió parte del problema.

Ahora necesito un caché. Fue algo triste encontrarme con que tener un caché usando Tomcat, es tan trivial como declarar una variable estática, pues la aplicación se queda en memoria un rato antes de que se la lleve el recolector de basura. Desafortunadamente, en python no es tan fácil... a menos que se utilize algún marco de trabajo.

Aquí entra pylons.

Afortunadamente, en alguna entrada anterior ya mencioné easy-install. Aquí ¡es una maravilla! (Estando conectado a la red) teclear "easy_install Pylons" tal y como se indica en http://pylonshq.com.

El siguiente paso es configurar Apache. Para tenerlo todo a la mano incluyo la liga al archivo con mod_fastcgi. [Si se trabaja con Apache 2.2.3 hay que aplicar un parche (renombrar Makefile.AP2 a Makefile, descargar dentro del directorio de mod_fastcgi y ejecutar patch -p0 <mod_fastcgi-2.4.2-httpd-2.2.3.patch)] (mod_rewrite ya estaba en apache). Todas las instrucciones restantes se encuentran en el sitio de pylons.

Ahora, como el servidor donde quiero colocar todo esto utiliza Plesk, configurarlo tiene su chiste.
Mod_python ya era cargado por /etc/httpd/conf.d/python.conf

Agregué la directiva:

LoadModule fastcgi_module modules/mod_fastcgi.so

en /etc/httpd/conf/httpd.conf.

LoadModule rewrite_module modules/mod_rewrite.so ya estaba ahí.

Ojo: el código siguiente debe ir en httpd.conf fuera de cualquier otra directiva (Virtual Host, Directory, etc.) y después de que se hayan designado el usuario y el grupo de apache.


FastCgiIpcDir /tmp/fcgi_ipc/
AddHandler fastcgi-script .fcgi

Además, si el usuario y grupo de apache son, por ejemplo, http y http, /tmp/fcgi_ipc/ (o cualquier otro que se use) deben ser asignado a ese usuario y grupo (chown, chgrp, chmod 700).
De lo contrario se pueden obtener el siguiente error:

Starting httpd: Syntax error on line 200 of /etc/httpd/conf/httpd.conf:
FastCgiIpcDir /tmp/fcgi_ipc: access for server (uid -1, gid -1) failed: read not allowed

En mi caso, decidí colocar los archivos dentro de un directorio de un subdominio que, además, no era el direcctorio raíz. Para incluir instrucciones específicas al dominio, las instrucciones detalladas se dan en la documentación de plesk.

En resumen, crear vhost.conf con las especificaciones dentro de subdominio/conf y ejecutar:

/[path to plesk, ej: usr/local/psa]/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=fulanito.com