Compilando extensiones del PECL de PHP en Linux
Bueno este post es corto, como sabran PHP ofrece una coleción de librerias desarrolladas por la comunidad para que no tengamos que reinventar la rueda todo el tiempo. Para mas info puede visitar su web.
Compilar e instalar estas extensiones es muy fácil, solo debemos bajarnos el código fuente y tener instalado el paquete de desarrollo de PHP, en Debian/Ubuntu por ejemplo se llama php5-dev, pueden buscarlo en su distro de preferencia con ese nombre o uno parecido.
Usando Sphinx con UTF-8 (resolviendo problemas)
Siempre hay algun problema con el encoding, en mi caso para resolver estas batallas, hace años que hago absolutamente TODO en UTF-8, no hay otro encoding!, es el universal, el unicode que sirve para todo y alque tendriamos que tener como estandar defacto en todo! Hasta donde me acuerdo MySQL seguia usando latin1 por default... no se puede...
En fin, luego de tener la Base de datos 100% UTF-8 (eso quiere decir a la hora de crear cada tabla y en ocaciones campos) al pasar los datos a Sphinx siempre tenia uno que otro problema, y bueno solo hacia falta averiguar un poco.
En un motor de busquedas como es el sphinx no nos interesa mucho tener caracteres raros, no nos interesa que el que busque te no encuentre té, todo lo contrario, los errores de ortografia del lado del que busca o de nuestra data los queremos juntos, si yo busco cazería me gustaria que encuentre tambien cazeria, eso se hace con una tabla de reemplazo de caracteres, basicamente es decirle al sphinx, ú => u, al indexar los datos o buscarlos, cuando le mandemos una ú, la reemplazara por u automaticamente.
Eureka! eso era todo.... no....
Compilando Nginx en Debian
Lamentablemente Debian no trae compilado el Nginx con todos los modulos que este tiene, y cuando se empieza a jugar con la optimización de este ligero servidor web, no queda otra que compilarlo a mano. Aca va una guia paso a paso para dejar un servidor Nginx andando en Debian desde las fuentes, como siempre, no solo lo vamos a instalar como un software fuera de la distro, sino que vamos a Debianizar todo lo que podamos, configuración, paths y demas.
Compilar/Instalar Sphinx en Debian
Bueno, aprobecho la ocación para copy pastear un howto que escribí para la Wiki de la empresa donde trabajo, para instalar Sphinx (sphinxsearch) en Debian, si siguen los pasos tal cual, en Debian Lenny no tendrian que tener problemas, va:
Instalando Nginx + PHP 5.3 + PHP-FPM (Debian)
Bueno esto lo hice en Debian pero supongo que también le servirá a alguien que este buscado info sobre esto, de hecho mas allá de la instalación, es configurar los servicios.
Para los que no saben de que se trata, Nginx ("Engine X" o Motor X) es un servidor web de alto rendimiento que viene ganando mercado a pasos agigantados por ser extremadamente rápido. PHP-FPM (PHP FastCGI Process Manager) es un manejador de procesos para usar PHP en modo FastCGI.
Manteniéndonos sincronizados con rsync
Hay buenas herramientas en el mundo unix, y rsync es una de ellas.
Bueno primero entendemos un poco que es Rsync y que mejor explicación que la de la wikipedia:
rsync es una aplicación de software para sistemas de tipo Unix que ofrece transmisión eficiente de datos incrementales comprimidos y cifrados. Mediante una técnica de delta encoding, permite sincronizar archivos y directorios entre dos máquinas de una red o entre dos ubicaciones en una misma máquina, minimizando el volumen de datos transferidos. Una característica importante de rsync no encontrada en la mayoría de programas o protocolos es que la copia toma lugar con sólo una transmisión en cada dirección. rsync puede copiar o mostrar directorios contenidos y copia de archivos, opcionalmente usando compresión y recursión.
La ventaja de rsyn contra cualquier otro método de copiado de archivos es que rsync no copia lo que no debe, solo copiara lo que está descatualizado en su destino, con opciones de borrar lo que no está en el origen, omitir archivos, seguir enlaces y demas...
El uso es muy muy simple, tanto en caso local:
rsync -a --delete /home /mnt/backup
como remoto:
rsync -a --delete ./pagina usuario@server.com:/var/www/htdocs
De este modo se puede tener un directorio sincronizado en otra computadora.
¿En que nos puede servir?
Si sos programador web es una herramienta muy copada para subir cambios de una web a su servidor, si se sigue el modo de trabajo "server de prueba"==="server final", jeje, y está todo absolutamente testeado, se puede subir la copia exacta del arbol de directorios, borrar los archivos que ya no se usen y asegurarnos de no subir nada de mas y con la seguridad de hacerlo mediante ssh, encriptado desde que sale hasta que llega, y así evitar sniffers, o spoofings y etc.
Para hacer una sincronización a un server se necesita:
- Rsync instalado en el cliente y en el server (preferentemente la misma versión)
- Servidor ssh (sshd) del lado del servidor
Entonces, solo tenemos que hacer un rsync del modo:
rsync -a --delete /path/del/site usuario@server:/path&remoto
Donde -a es un parametro que agrupa una serie de opciones para copiar archivos y --delete borra cualquier archivo que esté en el servidor y no en nuestra copia, un ejemplo real podria ser:
rsync -a --delete /home/exos/alpha/mipagina/www exos@exodica.com.ar:/var/www/htdocs