Geolocalización en tu página web o blog

4 comentarios · Escrito el 10-Mar-2008 · 1.154 lecturas · manuales

Geolocalización es la palabra que designa la acción de informar la posición y localización geográfica de un determinado (en el caso que hablamos) visitante de una web.

geolocalizacion localizacion nacion pais ciudad geoip

En el siguiente manual voy a escribir una guía de pasos para dotar de soporte de geolocalización (de forma totalmente gratuita) un servidor web, y así utilizar esta información de manera sencilla y eficiente.

Así podremos guardar información acerca de la localización de los usuarios que han comentado, que han subido una foto, e incluso combinarlo con mod_rewrite y realizar redirecciones dependiendo de su pais, etc.

Requisitos previos


Para preparar el sistema de geolocalización nos vamos a basar en un servidor Apache (de la rama 2.x) bajo un sistema operativo Linux, en nuestro caso un CentOS. También necesitaremos soporte PHP y herramientas de compilación, que por lo general ya vienen instaladas en todo servidor Linux.

En este manual vamos a utilizar la base de datos de MaxMind, que incorpora GeoLite City una base de información de paises y ciudades, que además provee varios métodos de uso:

  • Formato CSV: Formato de texto plano, separado por comas, que puede utilizarse para desarrollar una aplicación de búsqueda y resolución de IPs, o por otra parte, importar en una base de datos SQL, para crear un sistema de consulta.
  • Formato binario: Un formato binario generado por MaxMind, mucho más eficiente y rápido, que permite hacer consultas de manera más ligera. El formato binario permite la manipulación con una API open source para diferentes lenguajes (PHP, C, Java, Perl, Python, C#, Pascal, Ruby...).

En este manual vamos a ir un poco más allá y compilaremos el código para utilizarlo como módulo de Apache, y ganar en rapidez y eficiencia, teniendo a nuestra disposición unas variables GEOIP_COUNTRY_CODE y GEOIP_COUNTRY_NAME con la información disponibles para utilizar en nuestro código PHP directamente.

Descarga y preparación de ficheros


  1. En primer lugar, nos descargamos los fuentes del módulo mod_geoip2 para Apache (versión 1.2.1 en estos momentos). Lo desempaquetamos con un tar -xzvf mod_geoip2_1.2.1.tar.gz y accedemos a la carpeta creada.
  2. También nos descargaremos la última API de GeoIP para C (1.4.4 en estos momentos), ya que se necesita para generar el módulo mod_geoip2 para Apache. Desempaquetamos entonces, con un tar -xzvf GeoIP.tar.gz y accedemos a la carpeta creada.

Compilación de la API para C


¡Ojo! Antes de compilar el módulo de Apache, necesitaremos esta segunda API (para C) instalada en nuestro sistema. Para ello, escribimos el mantra de compilación ./configure, make y finalmente, realizamos la instalación con un make install.

Esto habrá generado unas cabeceras en nuestra carpeta /usr/local/include, entre otros que nos permitirán compilar el módulo de Apache sin problemas.

Asi pues, salimos de la carpeta actual cd .., volviendo a la carpeta de las fuentes del mod_geoip2. Aquí escribiremos apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c. La utilidad apxs (APache eXtenSion tool) se encargará de compilar el modulo e instalarlo en su ubicación correspondiente (generalmente /usr/lib/httpd/modules/). Incluso, dará los permisos adecuados e insertará la linea en el fichero de configuración de Apache.

No obstante, puedes comprobar que, ha sido insertada, en el fichero /etc/httpd/httpd.conf o similar:

LoadModule geoip_module modules/mod_geoip.so

Configuración del módulo mod_geoip2


En el anterior fichero de configuración, podemos añadir una linea Include mod_geoip.conf para crear un fichero mod_geoip.conf donde ubicar la información básica para hacer funcionar el módulo:

# mod_geoip2 configuration file

GeoIPEnable On
GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat

GeoIPEnableUTF8 On
GeoIPOutput Env
#GeoIPOutput Notes
#GeoIPOutput All

Remarcar que esta configuración básica activa el módulo con nuestra base binaria GeoLiteCity.dat (~16MB) que tendremos que colocar en la ruta /usr/local/share/GeoIP. En la directiva GeoIPDBFile se pueden establecer varias bases con distinto nombre, para utilizar según necesidades de memoria, situación, etc.

Por último, existen dos formas de proporcionar información geolocalizable desde Apache, a través de variables de entorno (Environment) activando GeoIPOutput a Env o a través del comando apache_note de PHP. La primera es más cómoda, así que activamos sólo esta, y desactivamos las demás para ahorro de recursos, aunque si se desea se pueden activar las dos con All.

Ejemplo final


Finalmente, tenemos el sistema de geolocalización instalado y nos proporciona información adicional desde PHP, mediante el array asociativo SERVER, por ejemplo $_SERVER['GEOIP_CITY']:

Variable Valor
GEOIP_CONTINENT_CODEEU
GEOIP_COUNTRY_CODEES
GEOIP_COUNTRY_NAMESpain
GEOIP_REGION29
GEOIP_CITYMadrid
GEOIP_DMA_CODE0
GEOIP_AREA_CODE0
GEOIP_LATITUDE40.400002
GEOIP_LONGITUDE-3.683300

Como extra, en ip-to-country existen varios comprimidos de diferente tamaño, con un conjunto de banderas, ordenadas por su código de pais, que pueden servir para colocar imagen en nuestro código PHP.

Otros sistemas de Geolocalización


Si conoces alguno, mencionalo en los comentarios para añadirlo:

Tags:

MSN Messenger y MP3

8 comentarios · Escrito el 7-Feb-2005 · 4.177 lecturas · articulos

En la revista de El País Semanal de ayer, domingo 6 de febrero, leo un artículo muy curioso títulado Nos vemos en el 'messenger' por Juan Cueto, que escribe entre otras cosas lo siguiente:

[...]todas las tribus adolescentes y pandillas juveniles del globo, aproximadamente a la misma hora de la dispersión escolar; todas, pronuncian la misma frase: "Nos vemos en el messenger".

[...]La música sigue siendo el alimento vital en la célebre guarida inexpugnable del adolescente, claro, pero ahora se consume con potentes cascos o se piratea en Internet con los minúsculos auriculares del MP3, mientras teclean silenciosamente en el messenger o escriben frenéticamente rebeldes diarios de bitácora.

[...]La segunda cosa que ha cambiado [...] se citan masivamente a la salida de clase para escribir frenéticamente durante horas en las mensajerías instantáneas de la Red. Lo harán con faltas de ortografía, con vocabulario inventado y con una sintaxis y sindéresis que recuerda mucho a los experimentos vanguardistas de Joyce y Buurrouhgs...

[...]Y a mí, personalmente, la realidad seis veces millonaria de unas generaciones sincronizadas globalmente y que encima dedican las tardes-noches a aquel placer solitario de la escritura del que hablaba Barthes, escritura con cascos o sin cascos, me pone de muy buen humor nacional.

Única nota a añadir a un excelente artículo, el tildar -como siempre- de piratas en, no sólo éste, sino cualquier texto que tenga relación directa al mundo de Internet o los MP3, por culpa de una sociedad donde la discográfica había elaborado su filón de oro, y actualmente se ha visto hurtada por un mundo donde nunca había existido tanto conocimiento y cultura músical.

Tags:

El nuevo pasaporte

4 comentarios · Escrito el 2-Dec-2004 · 3.458 lecturas · articulos

Después de terminar un trabajito para Implantación, estuve ojeando unas revistas de El Pais de hace varias semanas, encuentro una, del 29 de agosto de este año, donde leo una sección de Manuel Rivas que me hizo bastante gracia, dice así:

[...]

El nuevo pasaporte. Con la resignación propia de quien siempre ha padecido la burocracia como jaula de hierro, me acerco a una comisaría a renovar el pasaporte. Primera sorpresa: lo entregan casi al momento, en minutos, con una desconcertante eficacia y un trato sonriente al ciudadano. ¿Ya está? El no oír el tradicional "¡Vuelva usted mañana!" nos produce un desasosiego, una pervertida nostalgia de la desidia. Noto que todos los solicitantes compartimos la extrañeza ante la rapidez en que se tramita la solicitud. Me dan ganas de presentar una queja ante el comportamiento de las funcionarias: ¿Por qué son amables? ¿A qué viene esta diligencia? ¿Es válido este documento entregado con una sonrisa? ¿A dónde vamos a parar? En definitiva, ¿por qué nos tratan bien? Segunda sorpresa: las hojas interiores están ilustradas, a buen trazo, con apuntes de fauna animal. Bonito pasaporte, si señor. ¡Parece el cuaderno de viaje de un naturalista!

[...]

Tags:

Páginas: 1