Quizás hayáis escuchado hablar del módulo mpm worker para apache. Si no, yo os hago un breve resumen (corregidme si me equivoco).

Al compilar apache podemos escoger el modo en que éste maneja los procesos del servidor. Según el modo que utilicemos se nos ofrecen ciertos pros y contras. Los pros del modo worker de apache es que es bastante más rápido que el modo prefork (que es el que viene habilitado por defecto). Los “contras” del modo worker es que el módulo de php para apache no es compatible con él y en lugar de ello deberemos utilizar el módulo de cgi.

A pesar de que he dicho lo de “al compilar”, no os preocupéis; podemos cambiar el modo en que funciona apache de manera rápida con aptitude.

Podéis encontrar más información y diferencias entre MPMs en: http://httpd.apache.org/docs/2.2/mpm.html.

Paquetes que necesitamos:

  • apache2
  • apache2-mpm-worker
  • libapache2-mod-fcgid
  • php5-cli
  • php5-cgi
1
sudo apt-get install apache2 apache2-mpm-worker libapache2-mod-fcgid php5-cli php5-cgi

Una vez instalados, vamos a configurar apache para que ejecute ficheros php utilizando el módulo fastCGI:

1
sudo nano /etc/apache/conf.d/php

Pegad esto:

1
2
3
4
5
6
7
8
9
10
11
12
<Directory /usr/share>
  AddHandler fcgid-script .php
  FCGIWrapper /usr/lib/cgi-bin/php5 .php
  Options ExecCGI FollowSymlinks Indexes
</Directory>

<Files ~ (\.php)>
  AddHandler fcgid-script .php
  FCGIWrapper /usr/lib/cgi-bin/php5 .php
  Options +ExecCGI
  allow from all
</Files>

Nota: Al actualizar a php 5.4 he necesitado descomentar el último trozo del fichero de configuración /etc/apache2/mods-enabled/php5_cgi.conf ya que sinó me descargaba los ficheros php en lugar de ejecutarlos. El trozo al que me refiero es este:

1
2
3
4
5
6
7
8
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory '/usr/lib/cgi-bin'>
  AllowOverride None
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  Order allow,deny
  Allow from all
</Directory>
Acton application/x-httpd-php /cgi-bin/php5

Reiniciad apache:

1
sudo service apache2 restart

Y para acabar de finiquitar, provad un fichero php en vuestro servidor:

1
sudo echo '<?php phpinfo()' > /var/www/index.php

Si el parámetro no funciona simplemente cread un fichero index.php en vuestro webroot con el contenido

1
<?php phpinfo();

Accedéis a http://localhost et voilà; Apache2 con módulo MPM-worker y PHP5 con FastCGI funcionando.

Si queréis verificar que realmente apache está funcionando en modo worker, podéis ejecutar el comando

1
2
3
4
5
6
7
8
:~$ apache2 -l
Compiled in modules:
  core.c
  mod_log_config.c
  mod_logio.c
  worker.c
  http_core.c
  mod_so.c

Fijaros que está cargado el módulo worker.c. Os recuerdo que por defecto apache viene con prefork.c por defecto.

Ahora vendría “lo wapo”: el fine tuning. Una de las mejores fuentes que encontraréis para saber como “tunear” vuestro apache es la propia documentación de apache:

httpd.apache.org/docs/2.2/mod/mpm_common.html

E id revisando con herramientas como top o ps los recursos que consume.

Éste otro enlace puede que os dé alguna ayuda, a pesar de que está enfocado a funcionar con glassfish:

http://alexandru-ersenie.com/2011/09/19/performance-tuning-for-apache-worker-model-with-glassfish-application-server/

Además tendríais que hacerle algún tipo de test de estrés, claro.. pero ese es un tema como para hacer un artículo entero, así que yo lo dejo para otro día, pero os animo a que busquéis por google, que seguro que encontráis unas cuantas vías para “estresar” vuestro servidor.

Más información y fuentes:

PS. A todo esto.. todo el tutorial lo he hecho utilizando Ubuntu Server 12.04 x64 :)

Podéis instalar la versión más reciente estable de PHP 5.4 en vuestro Ubuntu muy fácilmente gracias a este repositorio:

https://launchpad.net/~ondrej/+archive/php5

Añadid el repositorio siguiendo estos pasos y debería funcionar (provado en Ubuntu 12.04):

1
sudo add-apt-repository ppa:ondrej/php5

Nota (a 23/11/2013): Parece ser que este repositorio es en el que el usuario (ondrej) pretende tener los paquetes más actualizados (php 5.5 y apache 2.4 ahora mismo). Si lo que queréis es utilizar la última versión de php 5.4 (old stable) tenéis que utilizar este otro repositorio en su lugar: ppa:ondrej/php5-oldstable

Si no tenéis el comando add-apt-repository es porque no tenéis el paquete python-software-properties instalado. Instaladlo con aptitude si es así y podréis ejecutar el comando sin problemas. Una vez añadido el repositorio actualizáis la lista de paquetes:

1
sudo apt-get update

E instaláis php5:

1
sudo apt-get install php5 php5-cli php5-whatever

Probado en Ubuntu 11.10 y 12.04 x64 tanto con el módulo de apache mod_php5 como con fastFCGI (con apache en modo worker).

El modo pantalla completa es un modo bastante molón que quizás ya hayáis visto en algunas páginas (como fb por ejemplo; el botón de pantalla completa de las fotos).

Por ahora sólo es compatible con navegadores basados en Gecko (como Firefox) y Webkit (como Chrome).

Este artículo ha sido actualizado el 14 de mayo de 2016 añadiendo los navegadores que faltaban.

Sabiendo esto, simplemente tendremos que poner algún IF :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var fullscreen = function(elem) {
  if (elem.requestFullscreen) {
    elem.requestFullscreen();
  } else if (elem.msRequestFullscreen) {
    elem.msRequestFullscreen();
  } else if (elem.mozRequestFullScreen) {
    elem.mozRequestFullScreen();
  } else if (elem.webkitRequestFullscreen) {
    elem.webkitRequestFullscreen();
  }
}
document.getElementById('ejemplo-fullscreen').onclick = function(){
  fullscreen(document.getElementById('content'));
}

Podéis probarlo haciendo click aquí

Seguramente no os acordéis, pero Raúl de priosanchez.com publicó hace tiempo cómo llevar a cabo una instalación visual para mapear sobre superficies delimitadas.

Os pongo un vídeo de uno de sus últimos trabajos: un mapping realizado en el hotel Renaissance que bien seguro os va a gustar :)

A pesar de que el vídeo habla bastante por sí solo, lamentamos no poder dar más detalles sobre el montaje.. no nos sobra el tiempo precisamente últimamente :\