<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ghostbar &#187; spawn-fcgi</title>
	<atom:link href="http://ghostbar.ath.cx/tag/spawn-fcgi/feed/" rel="self" type="application/rss+xml" />
	<link>http://ghostbar.ath.cx</link>
	<description></description>
	<lastBuildDate>Sun, 29 Apr 2012 15:49:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>spawn-fcgi y 503 Bad Gateway</title>
		<link>http://ghostbar.ath.cx/2010/02/05/spawn-fcgi-y-503-bad-gateway/</link>
		<comments>http://ghostbar.ath.cx/2010/02/05/spawn-fcgi-y-503-bad-gateway/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 00:04:31 +0000</pubDate>
		<dc:creator>ghostbar</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[503]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Planeta Debian]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[spawn-fcgi]]></category>

		<guid isPermaLink="false">http://ghostbar.ath.cx/?p=419</guid>
		<description><![CDATA[Este es un error MUY común el 503 Bad Gateway al menos usando nginx + spawn-fcgi, yo terminaba encontrándomelo cada 2 o 3 días y sin razón aparente. La forma como terminé resolviéndolo fue especificando el valor de la variable PHP_FCGI_MAX_REQUESTS en el script /usr/bin/php-fastcgi a 1000: #!/bin/sh PHP_FCGI_MAX_REQUESTS=1000 \ /usr/bin/spawn-fcgi blah blah blah Luego [...]]]></description>
			<content:encoded><![CDATA[<p>Este es un error MUY común el 503 Bad Gateway al menos usando <code>nginx</code> + <code>spawn-fcgi</code>, yo terminaba encontrándomelo cada 2 o 3 días y sin razón aparente.</p>
<p>La forma como terminé resolviéndolo fue especificando el valor de la variable <code>PHP_FCGI_MAX_REQUESTS</code> en el script <code>/usr/bin/php-fastcgi a 1000</code>:</p>
<pre>#!/bin/sh
PHP_FCGI_MAX_REQUESTS=1000 \
/usr/bin/spawn-fcgi blah blah blah</pre>
<p>Luego terminé agregando más procesos a <code>spawn-fcgi</code> para darle más fluidez por lo que terminó quedando el script con algo como:</p>
<pre>#!/bin/sh
PHP_FCGI_CHILDREN=3 \
PHP_FCGI_MAX_REQUESTS=1000 \
/usr/bin/spawn-fcgi blah blah blah</pre>
]]></content:encoded>
			<wfw:commentRss>http://ghostbar.ath.cx/2010/02/05/spawn-fcgi-y-503-bad-gateway/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>De Apache a nginx</title>
		<link>http://ghostbar.ath.cx/2010/02/04/de-apache-a-nginx/</link>
		<comments>http://ghostbar.ath.cx/2010/02/04/de-apache-a-nginx/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 02:45:51 +0000</pubDate>
		<dc:creator>ghostbar</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Planeta Debian]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Servidor Web]]></category>
		<category><![CDATA[spawn-fcgi]]></category>
		<category><![CDATA[Web Server]]></category>

		<guid isPermaLink="false">http://ghostbar.ath.cx/?p=414</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p>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.</p>
<p>La instalación facilísima, lo hice en Debian Stable, si lo hacen en >Stable no necesitarán los últimos 3 sino <code>spawn-fcgi</code>:</p>
<pre># aptitude update
#aptitude install nginx php5-cli php5-cgi build-essential wget psmisc</pre>
<p>¿Por qué <code>build-essential</code>, <code>wget</code> y <code>psmisc</code>? Porque se necesita para compilar <code>spawn-fcgi</code> que luego usaremos para PHP.</p>
<p>Si has usado Apache verás que la estructura es parecidísima, se configuran en <code>/etc/nginx/sites-available/</code> y se copia o hacen enlaces simbólicos hacia <code>/etc/nginx/sites-enabled/</code>, recomiendo usar el último método para facilidad de administración.</p>
<p>Así se terminó viendo uno de los archivos de configuración local para hacer las pruebas del servidor:</p>
<pre>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;
	}
}
</pre>
<p>La línea para rewrite funciona perfectamente para WordPress y garantiza que funcionará sin activar absolutamente nada más en WordPress.</p>
<p>El contenido de <code>/etc/nginx/expire_headers</code> es el que copiaré a continuación, sin embargo, no lo necesitan. <code>/etc/nginx/fastcgi_params</code> viene con la instalación de nginx al menos en Debian 5.</p>
<pre>if ($request_uri ~*	"\.(ico|gif|png|jpe?g|css|js|swf)(\?v\d\d?\.\d\d?\.\d\d?)?$") {
	  expires max;
	    break;
}
</pre>
<p>Muy bien, ahora configurando para que PHP funcione con <code>spawn-fcgi</code>:</p>
<p>Descárguese <code>spawn-fcgi</code>, en este momento funciona:</p>
<pre>$ 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</pre>
<p>Créese el archivo <code>/usr/bin/php-fastcgi</code> con la siguiente información:</p>
<pre>#!/bin/sh
exec 2>&#038;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</pre>
<p>Las razones por las que le paso esas variables a <code>spawn-fcgi</code> es porque suele fallar sin razón sin usar <code>PHP_FCGI_MAX_REQUESTS</code> y <code>PHP_FCGI_CHILDREN</code> 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.</p>
<p>Ahora el demonio para PHP, yo lo llamé <code>/etc/init.d/php-fastcgi</code>:</p>
<pre>#!/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
</pre>
<p>Le decimos al sistema que inicie el demonio cuando prendamos la máquina con:</p>
<pre># update-rc.d php-fastcgi defaults</pre>
<p>Y ya, ahora a darle permisos de ejecución a <code>/etc/init.d/php-fastcgi</code>, <code>/usr/bin/php-fastcgi</code> y <code>/usr/bin/spawn-fcgi</code> e iniciar los demonios nginx y php-fastcgi con:</p>
<pre># /etc/init.d/nginx start
# /etc/init.d/php-fastcgi start</pre>
<p>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.</p>
<p>Pasé de usar 289MB de RAM en mi nodo a 118MB con 4 procesos PHP y 6 procesos de nginx.</p>
]]></content:encoded>
			<wfw:commentRss>http://ghostbar.ath.cx/2010/02/04/de-apache-a-nginx/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ya nginx + spawn-fcgi para correr PHP5 en chaldea</title>
		<link>http://ghostbar.ath.cx/2010/02/02/ya-nginx-spawn-fcgi-para-correr-php5-en-chaldea/</link>
		<comments>http://ghostbar.ath.cx/2010/02/02/ya-nginx-spawn-fcgi-para-correr-php5-en-chaldea/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 03:21:58 +0000</pubDate>
		<dc:creator>ghostbar</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[chaldea]]></category>
		<category><![CDATA[Linode]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[spawn-fcgi]]></category>

		<guid isPermaLink="false">http://ghostbar.ath.cx/?p=411</guid>
		<description><![CDATA[Chaldea es mi servidor en Linode. Venía de usar apache2 + mod_php5 y consumía 288MB de RAM, ahora estoy consumiendo 94MB con 6 procesos para nginx además de que es más rápido el renderizado de las páginas webs. Mañana si tengo chance escribiré de como hice para migrar de Apache a nginx y montar WordPress [...]]]></description>
			<content:encoded><![CDATA[<p>Chaldea es mi servidor en Linode. Venía de usar apache2 + mod_php5 y consumía 288MB de RAM, ahora estoy consumiendo 94MB con 6 procesos para nginx además de que es más rápido el renderizado de las páginas webs.</p>
<p>Mañana si tengo chance escribiré de como hice para migrar de Apache a nginx y montar WordPress con rewrites.</p>
]]></content:encoded>
			<wfw:commentRss>http://ghostbar.ath.cx/2010/02/02/ya-nginx-spawn-fcgi-para-correr-php5-en-chaldea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

