viernes, 27 de mayo de 2011

Servidor web ligero Cherokee, instalación e integración con PHP en Arch Linux

Cherokee web server
El servidor web Cherokee es uno de los servidores de nueva generación llamados ligeros que mejora notablemente el rendimiento ofrecido por el más usado Apache HTTPD soportando más usuarios concurrentes, aceptando más peticiones por segundo y consumiendo menos memoria. Quizá no tenga toda la versatilidad de un servidor Apache HTTPD pero para la mayoría de los escenarios es más que suficiente. En el siguiente artículo vamos a ver cuales son sus principales características y como instalarlo junto con PHP en la distribución Arch Linux. Otros servidores similares a Cherokee son nginx y lighttpd que quizá te interese también echarles un vistazo. Por supuesto cherokee es un servidor con licencia GNU GPL v2 y por tanto es software libre.

Comencemos poniendo algunas de las características que soporta: FastCGI, SCGI, PHP, CGI, SSI, TLS y conexiones cifradas SSL, host virtuales, autenticación, codificación al vuelo, balanceo de carga, archivos de log compatibles con apache, balanceador de base de datos, actualizaciones sin parada del servicio, proxy HTTP inverso y mucho más.

De todas las características que posee Cherokee destacaría las siguientes:

- Actualizaciones sin parada del servicio que puede ser muy importante para algunos servicios que no pueden permitirse dejar de dar servicio ningún segundo.
- Configuración a través de una consola de administración accesible con el navegador esto no se si es una ventaja o desventaja ya que no sigue la filosofía de los sistemas Unix de realizar la configuración mediante un archivo de texto para hacer una restauración de la configuración en caso de que la perdamos pero sin duda hace que la configuración se realice más comodamente y es algo que no tienen otros servidores por lo que he considerado importante destacarlo. También podemos editarlo directamente aunque realmente no estaremos interesados en ello a menos que seamos un usuario avanzado.
- Cherokee Market con el que podremos instalar ciertos servicios de forma muy cómoda y con poca configuración, como por ejemplo, instalar un servicio de Drupal, Wordpress, phpBB, phpMyAdmin, nuxeo, Liferay y algunos otros.
- Host virtuales SSL con esta característica podemos usar SSL en host virtuales ya que cherokee hace uso del método Server Name Indication (SNI) por el que en la negociación de la sesión TLS se envía el nombre del host que se quiere acceder. Esta era una imitación importante al usar SSL en servidores virtuales basados en nombres.

Si esta características no te parecen importantes quizá la del rendimiento por si sola te parezca suficiente para empezar a utilizar cherokee, consulta las pruebas de rendimiento (en el apartado referencia) para ver en que medida mejora Cherokee el rendimiento respesto a otros servidores. Pero sin duda lo mejor sería que lo comprobases por ti mismo. Una nueva caracteristica añadida recientemente y que afecta al rendimiento es la llamada Font-Line cache. Los desarrolladores de cherokee se han dado cuenta que es muy habitual utilizar junto al servidor web otro servidor dedicado a cachear ciertos resultados, como Squid, sin tener que generar de nuevo el mismo contenido para cada petición, esto por si solo aumenta el rendimiento notablemente y reduce la carga del sistema pero aún asi hay cierta latencia y comunicación entre el servidor web y el servidor de cache que podría ser evitada como ha demostrado cherokee. Para reducir esta latencia cherokee incorpora en si mismo un servidor de cache que puede reducir esta latencia hasta en un 80%.

En Arch Linux la instalación de Cherokee es muy sencilla basta con:

# pacman -S cherokee

y se nos instalará la última versión disponible. Para arrancarlo y pararlo deberemos hacer:

# /etc/rc.d/cherokee start
# /etc/rc.d/cherokee stop

Si queremos que se inicie al arrancar el sistema deberemos añadirlo al apartado DAEMONS del archivo /etc/rc.conf (Consulta la wiki de Arch Linux para más detalles sobre como administrar los servicios):

# nano /etc/rc.conf

DAEMONS=(syslog-ng network netfs crond cherokee)

Para arrancar la consola de administración deberemos ejecutar:

# cherokee-admin -b -u


El parmámetro -b hará que cherokee escuche en cualquier dirección IP y no solo en 127.0.0.1. Y el parámetro -u hará que no se solicite contraseña al acceder a la consola de administración por lo que es recomendable no usarlo en un sistema de producción. En la pantalla de inicio de la consola de administración podemos ver información básica de la carga del servidor en cuanto a procesador y memoria y veremos si tenemos instalada la última versión de cherokee.

La consola de administración está dividida en varios apartados: Inicio, Mercado, Estado, General, vServers, Orígenes y Avanzado. En el apartado Market podremos instalar los servicios disponibles pero para ello previamente deberemos tener una cuenta de cherokee market. En el apatado General podemos modificar algunas característica generales del servidor. En el apartado vServers podemos administrar los servidores virtuales e instalar nuevos servidores virtuales, con el botón + podremos añadir fácilmente el soporte para PHP. En Avanzado podemos modificar algunos datos importantes sobre el funcionamiento del servidor.








Veamos ahora a ver como instalar PHP en cherokee. Primeramente instalaremos PHP con:

# pacman -S php php-cgi


Si todo ha ido correctamte podremos ejecutar:

$ php -v
$ php-cgi -v

Ahora procederemos crear un servidor virtual con soporte para PHP, vamos al apartado vServer y pulsamos sobre el botón +, seleccionamos Lenguages y PHP. Tal vez necesitemos crear un directorio con mkdir /var/www. Continuamos con el asistente y finalmente nos aparece en la lista de servidores el que acabamos de crear.



Ya nos queda poco!... solo nos queda crear un archivo php de ejemplo que lo crearemos con nuestro editor favorito en el directorio /var/www si hemos indicado este directorio en el asistente.


Espero que a alguien le entren ganas de usar este servidor web, si es así estaré encantado de escuchar sus comentarios.

Referencia:
http://www.cherokee-project.com/doc/basics_why_cherokee.html
http://www.cherokee-project.com/benchmarks.html
http://www.cherokee-project.com/doc/other_goodies.html
http://www.cherokee-project.com/doc/other_graphs.html
http://www.cherokee-project.com/doc/cookbook_php.html

http://www.redes-linux.com/manuales/Servidor_web/ponencia_cherokee.pdf
http://en.wikipedia.org/wiki/Cherokee_(webserver)
http://www.youtube.com/watch?v=bIxFzOv3U1A

https://wiki.archlinux.org/index.php/Daemon

viernes, 20 de mayo de 2011

Guías de instalación Arch Linux actualizadas

 Arch Linux es una distribución rolling release y como tal en constante actualización de sus paquetes. Por ello los manuales o guías de instalación de Arch Linux pueden quedar desactaulizadas en alguna de sus secciones si no son actualizadas cada cierto tiempo. A la hora de instalarlo es recomendable además leer las guías de la propia wiki de Arch Linux ya que en ella la información suele estar actualizada.

Ya hacia un tiempo que no actualizaba las guías de instalación que tengo en mi blog y a pesar de que he ido modificándolas algunas imágenes se habían quedado obsoletas. Hoy les he dado un repaso más a fondo siendo estos los puntos que he modificado:
  • Como de grabar la imagen USB de instalación (dd o UNetbootin y desde Windows).
  • Particiones a crear en el disco durante la instalación base.
  • Instalar GRUB 2 durante el sistema base en una única partición Ext4.
  • Apartado actualizado sobre Gnome 3.
  • Añadidas algunas nuevos programas a la lista de los más comunes.
  • Actualización de las imágenes de las guías e incorporación en ellas de marcas de agua.
  • Y otras pequeñas modificaciones que he ido haciendo desde que las cree.
Las guías están disponibles en los siguientes enlaces:

Espero que sean útiles para alguien que pretenda instalar Arch Linux en una máquina virtual o directamente sobre el metal. ¡A disfrutarlas!

martes, 17 de mayo de 2011

Añadir marcas de agua a imágenes con ImageMagick

ImageMagick es una librería con un conjunto de utilidades que permiten manipular imágenes a través de la linea de comandos aunque también tiene librerías para usarlo desde los lenguajes de programación más conocidos (Java, .NET, Python, C, C++, PHP, ...) y tiene binarios para Windows, Linux y Mac. Mediante estas utilidades se pueden añadir marcas de agua a las imágenes entre otras muchas cosas, a decir verdad, prácticamente se puede hacer muchas de las cosas que una herramienta de retoque fotográfico puede pero a través de la linea de comandos o como decía desde alguno de los lenguajes para el que tenga «bindings» y con la posibilidad de automatizar el proceso. Las marcas de agua consisten en aplicar un patrón o estampado a una imagen, pueden ser muy visibles, pasar prácticamente desapercibidas o estar ocultas sirviendo para:

- Anotar sobre la imagen alguna información.
- Resaltar algún aspecto de la imagen.
- Añadir derechos de autor o logos como una forma de proteción anticopia.

Una buena marca de agua tiene que tener las siguientes características:

- La marca de agua debería ser visible (si la marca de agua no está oculta) independientemente de si la imagen es clara u oscura.
- Debería ser difícil de eliminar de la imagen.
- No debería ser muy molesta para los usuarios.

¿En que situación práctica querriamos añadir marcas de agua? Pues una de ellas es si tenéis un blog quizá en algún momento habéis pasado por la situación de que alguna página os ha copiado el contenido de alguna entrada, hay páginas que se dedican exclusivamente a actuar como directorios o como agregadores de contenido en los que a veces ni siguiera ponen un enlace a la fuente original. Por mucha licencia de uso que tengamos en nuestro blog el que nos copien el contenido no lo podemos evitar pero si podemos añadir marcas de agua a las imagenes para al menos que se identifique el origen de las mismas.

Con los siguientes comandos crearemos una marca de agua con un texto, repartido por toda la imagen o posicionado al sudeste de la imagen:

$ convert -size 700x370 xc:none -family Cantarell -fill white -colorize 40 -gravity NorthWest -draw "text 10,100 '(CC) BY-NC-SA http://elblogdepicodev.blogspot.com'" -gravity SouthEast -draw "text 10,100 '(CC) BY-NC-SA http://elblogdepicodev.blogspot.com'" watermark.png
$ composite -tile -dissolve 20 watermark.png imagen.jpg imagen-watermark.jpg
$ composite -gravity SouthEast -dissolve 20 watermark.png imagen.jpg imagen-watermark.jpg

Con el primer comando creamos la imagen de marca de agua con un texto pero también la podemos crear con alguna otra herramienta como Gimp, al final la marca de agua es una imagen y la podemos obtener por cualquier medio no hace falta que la generemos con ImageMagick. En el segundo aplicamos la marca de agua en forma de embaldosamiento a toda la imagen en la que la queremos incluir. En el tercero aplicamos la marca de agua en el sudeste de la imagen.

Si estamos añadiendo la misma marca de agua a muchas imágenes necesitaremos automatizar el proceso para que las marcas de agua se apliquen de la misma forma y queden todas igual, también para tardar prácticamente nada de tiempo en hacerlo comparado con una herramienta de retoque fotográfico evitando además un proceso que es aburrido, repetitivo y manual. En Linux lo podemos hacer de la siguiente forma que busca todas las imágenes que su nombre cumpla el patrón imagen*.png y ejecuta el comando composite para cada una de ellas:

find . -name "imagen*.png" -type f -exec composite -gravity SouthEast -dissolve 20 watermark.png {} {} \;

La cantidad de posibilidades que ofrecen estas herramientas de ImageMagick a través de sus numerosos parámetros y opciones puede llegar a ser abrumadora por lo que es recomendable encontrar algún ejemplo con lo que necesitemos hacer o partir de algo similar al resultado final que queramos.

En el siguiente ejemplo puedes ver el resultado de aplicar una marca de agua a una imagen posicionándola en el sudeste de la imagen original usando el último comando composite de los ejemplos.

+
+
Image Magick
=
 

Otro asunto relacionado con automatizar tareas con ImageMagick es cambiar el formato, tamaño o realizar escalado de forma masiva a muchas imágenes.

Referencia:
ImageMagick
ImageMagick Watermarking
Convertir imágenes entre formatos y cambiar tamaño con ImageMagick

viernes, 6 de mayo de 2011

El impuesto Windows

Desde hace ya un tiempo estoy en buscando comprar un portátil (PC, no Mac). ¿Pero os habéis fijado? Todos vienen con Windows, incluso los menos potentes y baratos netbooks, donde probablemente el coste de la licencia Windows a pesar de ser más barata que la retail supondrá un importante porcentaje del coste total del equipo. Por desgracía en las marcas más conocidas (Sony, HP, Dell, Acer, ...) no he encontrado ningún modelo con alguna distribución GNU/Linux o al menos sin sistema operativo. Hay alguna marca de portátiles menos conocida como Ahtec que si ofrece esta posibilidad pero he leido algunas opiniones no muy buenas de su soporte.

Si hace ya un tiempo la comisión Europea obligó a Microsoft a no incluir su Internet Explorer en su sistema operativo para no abusar de posición dominante y a incluir la ballot screen para que los usuarios pudiesen elegir su navegador. ¿Por qué no hace algo parecido pero con el sistema operativo de los portátiles? ¿Por qué el consumidor prácticamente no puede comprar un equipo sin sistema operativo? ¿Por qué si no es justo imponer un canon indiscriminado a todos los medios de almacenamiento y dispositivos electrónicos se nos impone un "Impuesto Windows" en los portátiles a todos los usuarios aunque no seamos usuarios de ese sistema operativo y lo primero que hacemos es eliminarlo del disco duro? ¿Por qué ese impuesto se ha de pagar por cada equipo que se compra? ¿Si ya tengo una licencia porque tengo que comprar otra nueva OEM?


No veo impedimento para los fabricantes ya que ya ahora permiten personalizar ampliamente la configuración de los equipo en procesador, memoria, tarjeta gráfica, pantalla, etc... incluso en software. Y creo que hacen mal ya que los usuarios de GNU/linux les compraríamos muy probablemente a ellos aunque no seamos muchos en proporción al total de usuarios si son listos se darían cuenta de que por lo general somos usuarios con una media de conocimientos más elevados que la media de los usuarios, y como sabéis y pasa habitualmente, muchos de nuestros conocidos con menos conocimientos nos piden consejo al comprar su portátil y tenemos un gran peso en la decisión final de ellos. Por lo que quizá ya no seríamos tan pocos como pudiese parecer en un primer momento, no mayoría pero si unos cuantos más si multiplicamos a cada uno de nosotros por todas las personas que conocemos, nos piden consejo y decidiesen comprarlo sin la licencia de Windows si supiesen que son X€ más baratos (donde X = ¿20, 40, 70?).

Seguro que alguno sacaría el tema de la piratería y diría si eso fuera posible, seguro que se instalaría copias ilegales. ¿Pero realmente son capaces de hacer un sistema operativo y no son capaces de diseñar un sistema que lo evitase si realmente quisieran? Pero el problema es que no quieren prefieren antes que se copie ilegalmente a perder usuarios en favor de otras alternativas con riesgo de perder su posición dominante.

Los equipos con Chrome OS llegarán dentro de poco y habrá una opción más al menos pero los equipos con ese sistema operativo no se pueden comparar en igualdad de condiciones con Windows o una distribución GNU/Linux.

De las discusiones que estoy teniendo en algún foro ([1] y [2]) todavía nadie me ha dicho un motivo realmente importante de por que esto es así, y me parece que esta es una de esas situaciones injustas que como esta amplicamente extendida pocas personas se la plantean y simplemente la aceptan quizá sin ser conscientes realmente de ser victimas de los designios que en este caso ha decidido una empresa por ellos. Con todo lo que ha llovido desde [3] y [4] y todavía parece que en este país no se ha avanzado nada. Aunque quizá no este todo perdido, hay alguna sentencia favorable [5] (leer la parte QUE FINALMENTE) a los consumidores pero de difícil realidad ya que cuando se pregunta a un comercial de esos conocidos fabricantes la primera respuesta que dan es no y el hecho de que para reclamar esa cantidad signifique poner una denuncia o ir a juicio desanima a la mayoría de los consumidores y opta por lo fácil, pagar. La gente dice que con DELL es posible la devolución, yo he preguntado en Sony y me han dicho que no.

Artículos relacionados:
De Windows a Arch Linux
Como sería si Microsoft, Apple y Linux

Referencia:
[1] http://foro.noticias3d.com/vbulletin/showthread.php?t=362375
[2] http://www.archlinux-es.org/foros/viewtopic.php?f=12&t=4393
[3] http://www.elmundo.es/navegante/2007/05/26/tecnologia/1180175185.html
[4] http://devolucion.org/forum/t-113558/publico:condenado-por-no-querer-windows-en-su-ordenador
[5] https://sites.google.com/site/sentenciaimportante/sentencia

http://devolucion.org/
Impuesto Windows en Google 
http://www.muylinux.com/2011/01/25/demanda-judicial-colectiva-contra-microsoft-por-el-impuesto-windows/

Portátiles sin Windows Ahtec