De Apache a nginx

Filed under: Español, Software — Tags: , , , , , , , , , , — ghostbar @ 10:15 pm February 4, 2010

Antes había usado Cherokee (antes de que tuviese interface de administración bonita) y había terminado usando Apache de nuevo por unos problemitas con la configuración, sobre todo los rewrite de WordPress y Drupal que se terminaban en una pesadilla para mi, más no es que lo sean ahorita, realmente ni sé como se maneja en Cherokee actualmente esto.

Ahora, dejándome llevar un poco por la moda y sobre todo por los 300 y algo MB de RAM que tengo en el nodo de Linode me vi en la necesidad de bajar el consumo de memoria y mi opción inmediata fue nginx. Mi primera necesidad era que corriese PHP para montar Wordpress y conseguí que es facilísimo configurar los VirtualHosts, consume el mínimo de memoria y corre rapidísimo.

La instalación facilísima, lo hice en Debian Stable, si lo hacen en >Stable no necesitarán los últimos 3 sino spawn-fcgi:

# aptitude update
#aptitude install nginx php5-cli php5-cgi build-essential wget psmisc

¿Por qué build-essential, wget y psmisc? Porque se necesita para compilar spawn-fcgi que luego usaremos para PHP.

Si has usado Apache verás que la estructura es parecidísima, se configuran en /etc/nginx/sites-available/ y se copia o hacen enlaces simbólicos hacia /etc/nginx/sites-enabled/, recomiendo usar el último método para facilidad de administración.

Así se terminó viendo uno de los archivos de configuración local para hacer las pruebas del servidor:

server {
	listen 80;
	server_name localhost;
	access_log /home/ghostbar/tmp/boo_access.log;
	error_log /home/ghostbar/tmp/boo_error.log;

	location / {
		root 	/var/www/w;
		index	index.php;

		if (-f $request_filename) {
			expires 30d;
			break;
		}

		if (!-e $request_filename) {
			rewrite ^(.+)$ /index.php?q$1 last;
		}
		include /etc/nginx/expire_headers;
	}

	location ~ \.php$ {
		include /etc/nginx/fastcgi_params;
		fastcgi_pass 127.0.0.1:56123;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME /var/www/w$fastcgi_script_name;
	}
}

La línea para rewrite funciona perfectamente para WordPress y garantiza que funcionará sin activar absolutamente nada más en WordPress.

El contenido de /etc/nginx/expire_headers es el que copiaré a continuación, sin embargo, no lo necesitan. /etc/nginx/fastcgi_params viene con la instalación de nginx al menos en Debian 5.

if ($request_uri ~*	"\.(ico|gif|png|jpe?g|css|js|swf)(\?v\d\d?\.\d\d?\.\d\d?)?$") {
	  expires max;
	    break;
}

Muy bien, ahora configurando para que PHP funcione con spawn-fcgi:

Descárguese spawn-fcgi, en este momento funciona:

$ cd /tmp
$ wget http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz
$ tar -zxf spawn-fcgi-1.6.3.tar.gz
$ cd spawn-fcgi-1.6.3/
$ ./configure
$ make
$ sudo cp src/spawn-fcgi /usr/bin/spawn-fcgi

Créese el archivo /usr/bin/php-fastcgi con la siguiente información:

#!/bin/sh
exec 2>&1
PHP_FCGI_CHILDREN=2 \
PHP_FCGI_MAX_REQUESTS=1000 \
exec /usr/bin/spawn-fcgi -a 127.0.0.1 -p 12345 -u www-data -f /usr/bin/php5-cgi

Las razones por las que le paso esas variables a spawn-fcgi es porque suele fallar sin razón sin usar PHP_FCGI_MAX_REQUESTS y PHP_FCGI_CHILDREN hace de que hayan 2 procesos y no se recargue uno de ellos, esto garantiza mayor fluidez en la ejecución de los scripts PHP.

Ahora el demonio para PHP, yo lo llamé /etc/init.d/php-fastcgi:

#!/bin/bash
PHP_SCRIPT=/usr/bin/php-fastcgi
RETVAL=0
case "$1" in
	start)
		$PHP_SCRIPT
		RETVAL=$?
	;;
	stop)
		killall -9 /usr/bin/php5-cgi
		RETVAL=$?
	;;
	restart)
		killall -9 /usr/bin/php5-cgi
		$PHP_SCRIPT
		RETVAL=$?
	;;
	*)
		echo "Usage: php-fastcgi {start|stop|restart}"
		exit 1
	;;
esac
exit $RETVAL

Le decimos al sistema que inicie el demonio cuando prendamos la máquina con:

# update-rc.d php-fastcgi defaults

Y ya, ahora a darle permisos de ejecución a /etc/init.d/php-fastcgi, /usr/bin/php-fastcgi y /usr/bin/spawn-fcgi e iniciar los demonios nginx y php-fastcgi con:

# /etc/init.d/nginx start
# /etc/init.d/php-fastcgi start

La migración de Apache a nginx como verán es casi directa, sólo adaptar los VirtualHosts a la nueva sintáxis que es sencillísima de entender.

Pasé de usar 289MB de RAM en mi nodo a 118MB con 4 procesos PHP y 6 procesos de nginx.

Remembering how is that my build system works

Filed under: English, Software — Tags: , , , — ghostbar @ 9:37 pm January 14, 2010

Today I was remembering that, thinking on writing about it.

Frankly, I love that works because sometimes I don’t understand what I did. A bunch of shell scripts, perl, cowbuilder, local apt-proxy and…

Maybe next time I feel like writing about my build system it will be trivial, not this time. Haha.

BlackBerry + Digitel + Bluetooth = Internet

Filed under: Español, Software, Tecnología — Tags: , , , , , , , , — ghostbar @ 9:58 pm December 31, 2009

Ya me cansé de estar sin internet en mi portátil cuando se va la luz así que usé estos 3 archivos, que se colocan todos en /etc/ppp/peers y configurando mi bluetooth quedó listo.

Si no saben como hacerlo: descarguen los 3 archivos que mencioné antes que son: gprs, gprs-connect-chat y gprs-disconnect-chat.

Luego busquen cuál es la MAC de su BlackBerry haciendo hcitool scan en la terminal, luego de eso editarán el archivo /etc/bluetooth/rfcomm.conf para que quede con algo así:

rfcomm0 {
	# Automatically bind the device at startup
	bind yes;

	# Bluetooth address of the device
	device 00:00:00:00:00:00;

	# RFCOMM channel for the connection
	channel	1;

	# Description of the connection
	comment "BlackBerry Bold";
}

Donde la línea de device colocarán la MAC de su telefono. Luego basta con reiniciar su demonio de bluetooth con /etc/init.d/bluetooth restart, parear el BB con la máquina y, teniendo ppp instalado (sino hacer aptitude install ppp y listo) podrán hacer la siguiente línea:

pon gprs

Y su máquina se conectará a internet a través de su dispositivo blackberry :D

Después para colgar sólo tienen que darle Ctrl + C (porque el script se queda corriendo en primer plano) o hacer poff en otra terminal.

¡Collab-maint funciona!

Filed under: Español — Tags: , , , , , , , — ghostbar @ 10:39 am December 11, 2009

Todos los paquetes que mantengo en Debian (menos los de pkg-perl) los tengo en un repositorio git de Alioth que se llama collab-maint.

collab-maint es un proyecto en Alioth al cuál te puedes unir para tener los paquetes en VCS con acceso para todos los miembros del proyecto (incluyendo todos los Desarrolladores Debian) lo cuál facilita que si otra persona quiere agregar algún patch lo haga directamente allí en un branch diferente lo cuál garantiza comodidad al momento de trabajar y luego el mantenedor en su casa verifica el trabajo y lo une al branch principal si lo considera bueno.

Y sí funciona, ya me ha sucedido que varias personas llenan un reporte y ven que está en collab-maint así que deciden hacer ellos mismos el trabajo y sólo me notifican en que branch lo colocaron para yo revisarlo cuando llegue a casa. Les recomiendo altamente unirse al proyecto collab-maint y disfrutar de las ventajas del mantenimiento colaborativo.

Separando los hacks webcollage y bsod de XScreenSaver

Filed under: Español, Software — Tags: , , , , , — ghostbar @ 4:07 pm December 3, 2009

Desde hace mucho tiempo se me había pedido que el hack o salvapantalla webcollage de XScreenSaver estuviese en un paquete separado en Debian. Las razones son muy simples: el salvapantalla lo que hace es descargar imágenes aleatorias desde Internet y la Internet siendo como es tiene pornografía por lo que, estando en un paquete estándar, siendo seleccionado por omisión y por ende pudiendo ser usado aleatoriamente en sitios de trabajo o donde hayan niños no era muy bonito el resultado.

Hace como un mes se empezaron a quejar igualmente del hack bsod que es una broma de pantallazos de error de varios sistemas operativos, desde Windows, Unix, Linux hasta HP/UX y Apple[] lo cuál toma a algunos usuarios por desprevenidos y sin saber lo que es podría llevarles a perder datos por reacciones normales de usuarios nóveles como reiniciar la máquina.

Esto me llevó a crear paquetes separados paquetes separados los cuáles serán xscreensaver-screensaver-webcollage y xscreensaver-screensaver-bsod una vez que hayan pasado a través de NEW la versión 5.10-4 que es la que tiene estos cambios.

Banner for pkg-perl

Filed under: English — Tags: , , , , — ghostbar @ 9:34 pm October 12, 2009

I was just trying to get some banner so I could point from my blog to pkg-perl group on debian. I found the LogoContest on debian wiki but not the winner and since I didn’t like any of them for a banner on my blog I decided to make a simple graphic of what I think should represent pkg-perl group on Debian. You can use them as you like:

debian-perl-logo

debian-perl-logo_white

¿Te gusta Perl? ¿Te gusta Debian? ¿Quieres colaborar?

Filed under: Español, Software — Tags: , , , , , — ghostbar @ 10:58 am

Debian Perl Group es un equipo de trabajo en mantenimiento de paquetes de perl en Debian con una baja barrera de entrada para cualquier tipo de colaborador. Tienes un SVN disponible con sólo tener acuenta en Alioth y pedir ser incorporado en el grupo pkg-perl en el canal de IRC #debian-perl en la red irc.oftc.net o en el mismo irc.debian.org podrás conseguir muchísimo apoyo y tus paquetes serán revisados rápidamente por cualquiera de los colaboradores del grupo.

También podrás conseguir un PET diseñado para que sepas que paquetes necesitan más atención y el estátus de todos los paquetes mantenidos por el grupo.

Soy DD!!!!!!!!!!!!!!!!!!!!!!!!!!

Filed under: Español, Software — Tags: , , , , — ghostbar @ 5:25 pm September 25, 2009

Esto fue el miércoles, pero no había hecho mucho trabajo y sólo quería decirlo cuando ya, de hecho, hubiese hecho algo.

¡Soy debian developer!!!!!!!!!!!!!!!!!! 2 años, 4 meses y 10 días después! :D

Luego escribiré de eso (¡demasiado tiempo!), de cualquier manera, cuenten conmigo para cualquier paquete que quieran subir a debian y que todo sea mucho más sencillo :)

¡Segundo en Venezuela! :D

Bug? Mispelled? What? Passing arguments on a bunch of scripts

Filed under: English, Software — Tags: , , — ghostbar @ 5:22 pm

I really have a complicated environment for building my packages that only I understand (and maybe no one should try to understand if wants to maintain mentally stable). So I was building with git-buildpackage that points to a script gbp-builder that builds with pdebuild and which got its debbuildopts with ” and I was passing more args with a local variable (EXOP) with “” and guess what. It was -v5.05-3+nmu1 and I got that argument OK on dpkg-genchanges for my source.changes but not to my i386.changes.

I had to put in my gbp-builder script debbuildopts with “” and everything got OK. I frankly don’t understand what happened, why the args passed until that point and not to the last dpkg-genchanges but hey! it works now! I hope nobody pass trough this and waste 2 hours finding what was wrong and it only were a pair of “.

BTW, now I’m DD! Second in Venezuela :D

Amarok2 me “escoñetó” la colección de música

Filed under: Español, Software — Tags: , , , , — ghostbar @ 10:31 pm September 14, 2009

Ayer actualicé mi máquina luego de un bueeeen tiempo (3-4 meses¿?) y aparece un nuevo reproductor de música, amarok2.

Resulta que ya no usa la misma base de datos que amarok1, reconstruye la colección musical y terminan canciones de Muse bajo Bob Marley y canciones de Radiohead como DJ Zany…

¡Me escoñetaron la colección!

Intenté la herramienta para importar pero: ¡olvidé mi clave y mi usuario en MySQL para amarok :-/!

Older Posts »