Geoserver en entorno de producción (I): Instalación básica
Este post inicia un serie de otros post que vendrán más adelante, en los cuales voy a detallar como voy a diseñar e introducir un servidor de mapas ( en un entorno de producción. Esta guía trata de resumir todo lo que he investigado, a lo largo de unas semanas, para realizar todo lo mejor posible, y con el mayor rendimiento posible también.
En este post, sólo voy a instalar Geoserver y dejarlo funcionando como una aplicación de Tomcat. Nada más. En siguientes post, hablaremos de la arquitectura de red que plantearemos, las librerías que pueden mejorar el rendimiento, y como añadir alguna funcionalidad extra.
Para empezar, voy a explicar porqué elegimos Geoserver, entre tantos y tantos servidores de mapas. Aunque este servidor, esta desarrollado en Java, resulta ser bastante rápido, cuando se configura correctamente, plantando cara a Mapserver, que se encuentra desarrollado en C++ (se pueden ver muchas comparativas sobre estos dos servidores de mapas), y además esta avanzando a pasos agigantados versión tras versión. Es (como no) software libre, con una gran comunidad detrás, que suelen dar soluciones a todos los problemas encontrados. Aparte de ser “relativamente sencillo” su manejo.
En cuanto al sistema operativo, me decanto por un linux, en mi caso un “Ubuntu Server 9.10“, simplemente por costumbre, ya que se podría usar cualquier otra distribución de linux para hacer la implantación.
Bueno, manos a la obra. Os detallo los pasos a seguir, para realizar una instalación básica:
- Instalar “Java JDK“, primero comprobaremos que no está ya instalada (en mi caso ya está instalado el Java):
linux@svrmapas:~$ dpkg --get-selections | grep sun-java sun-java6-bin install sun-java6-jdk install sun-java6-jre install
En caso de no tenerlo instalado, lo hacemos vía “apt“:
sudo apt-get install sun-java6-jdk
Si todo ha ido bien, encontraras algo parecido a esto al teclear el siguiente comando:
linux@svrmapas:~$ java -server -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.6.1) (6b16-1.6.1-3ubuntu1) OpenJDK Client VM (build 14.0-b16, mixed mode, sharing)
Si tienes cualquier otra salida a este comando, tienes que revisar tu instalación de Java ya que es muy importante para el rendimiento usar la versión de Sun más moderna posible.
- Ahora toca el Tomcat, y es muy recomendable usar el “Tomcat 6“, aunque creo que es el que se instala por defecto desde la “Ubuntu 9.04“.
sudo apt-get install tomcat6 tomcat6-admin tomcat6-common tomcat6-user tomcat6-docs tomcat6-examples
- Tenemos Tomcat funcionando, solo nos queda configurar quien tiene acceso al “Gestor de aplicaciones” de Tomcat, mediante la ruta: “http://tuserver:8080/manager/html“. Si entras, te pedirá un usuario y una clave. ¿Pero si no me la han preguntado?. Tranquilo, ve al fichero “/etc/tomcat6/tomcat-users.xml“, editarlo como sigue:
<tomcat-users> <role rolename="tomcat"/> <role rolename="role1"/> <role rolename="manager"/> <user username="tomcat" password="tomcat" roles="tomcat,manager"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/> </tomcat-users>
Hemos hecho lo siguiente, definir un nuevo rol, llamado “manager“, el cual es el necesario para manejar las aplicaciones instaladas, y luego al usuario genérico “tomcat” le hemos datos el rol de “manager“. Revisa que no este comentado (por defecto vienen comentados todos los usuarios), ya que si no, no hacemos nada.
Muy importante: Esto que he hecho no es seguro, solo para comprobar que todo funciona, tendrías que crear un usuario/password seguros si vas a dar acceso a tu servidor a todo el mundo, una vez comprobado que todo funciona, ya que si no sería muy fácil que alguien “malo” adivine lo que has hecho y pueda acceder a este gestor… e imagino que no quieres que ocurra. - Ahora reiniciamos el servidor Tomcat:
sudo /etc/init.d/tomcat6 restart
- Ya podremos acceder al “manager“, con el usuario con el rol de “manager“, mediante la dirección: “http://tuserver:8080:/manager/html“. Ahora nos vamos a la web oficial de Geoserver y nos bajamos la versión “Web Archive“, como indica la siguiente captura de la web (cuando redacto esto, vamos por la versión 2.0.1):

Ya tenemos, el archivo “war” (te bajaras un .zip, mira dentro), y la intentamos desplegar (es decir, algo parecido a instalar) en nuestro servidor Tomcat, mediante el siguiente interfaz que nos sale por defecto en el gestor de aplicaciones:
Una vez hecho, solo nos queda buscar “geoserver” en el listado de aplicaciones, y dar a arrancar… y tras unos instantes: FALLO. Bueno, todo no podía ser tan sencillo, pero no os pongáis nerviosos, está controlado. El error que lanza el interfaz es algo así:FALLO – No se pudo arrancar la aplicación en trayectoria de contexto /geoserver
- El problema anterior, es un problema de permisos, ya que por razones desconocidas, Tomcat viene con los permisos muy recortados y Geoserver necesita prácticamente todos los permisos. Por lo tanto, nos vamos a “/etc/tomcat6/policy.d/04webapps.policy” y al final del fichero (justo antes de cerrar la llave) incluimos esta línea:
permission java.security.AllPermission;
Volvemos a reiniciar el Tomcat, y probamos de nuevo. No me voy a meter si esto es bueno o malo, si relaja mucho las políticas de seguridad… simplemente hace que funcione.
Tras esto, al dar a arrancar a la aplicación, nos encontramos con:OK – Arrancada aplicación en trayectoria de contexto /geoserver
- Accedemos a la aplicación Geoserver, en “http://tuserver:8080/geoserver“. Cruza los dedos, y allí tendrás tu panel de administración de Geoserver.
Referencias usadas:
- http://lab.usgin.org/groups/usgin-amazon-virtual-server-development/installing-geonetwork-242-under-tomcat-mysql-backend
- http://grimmeister.wordpress.com/2008/07/28/revisiting-geoserver-on-ubuntu/
- http://grimmeister.wordpress.com/2008/11/10/revving-up-geoserver-on-ubuntu-hh-lts/
- http://www.lintips.com/?q=node/105










[...] de las dos partes iniciales (I y II) sobre como estoy instalando un servidor Geoserver, dentro de mi organización con miras a que [...]
hola como estas, gracias por la informacion que compartes, me gustaria saber si de casualidad sabes como puedo hacer un espejo de la informacion que cargamos en geoserver, es decir, tenemos geoserver en un servidor pero queremos que al momento de cargar se vaya actualizando al mismo tiempo en otra maquina.
lo anterior lo queremos hacer en caso de tener problemas con un servidor inmediatamente accesar al otro.
muchas gracias y saludos.
jose alberto
Gran pregunta. Aunque se aleja un poco de la temática Geoserver.
El tema de la replicación de datos es bastante complejo, ya que depende mucho de donde alojes los datos que utiliza Geoserver. La verdad que nunca me he planteado como hacerlo, y te comento las cosas que recuerdo, aunque es posible que haya alguna solución mejor que las que te planteo.
Si usas cartografía almacenada en una base de datos, lo más sencillo es que ambos servidores usen la mismas tablas del mismo servidor de la base de datos. Otra posibilidad es que busques alternativas de alta disponibilidad de dicha base de datos, como por ejemplo si usas Postgis, pues buscar como montar un espejo en PostgreSQL. Si tuviera dos Geoserver separados y quisiera cargar en ambas máquinas la misma base de datos (en servicios de BBDD distintos), pues montaria un espejo con las bases de datos, habría una base de datos maestra, donde incluiría los nuevos datos, y otra esclava en la cual solo podría leer. Este es un doc que explica bastante bien el tema:
http://rockfloat.com/howto/gentoo-postgres-replication-native.html#create-dbs
En cambio si lo que usas es cartografía cargada desde un directorio (en tu GEOSERVER_DATADIR), la replicación se podría realizar mediante cualquier herramienta tipo rsync, para mover los datos de un servidor a otro. ES IMPORTANTE __NO__ compartir el directorio de datos entre dos instancias de Geoserver, ya que cada instancia espera el uso exclusivo de dicho directorio de datos.
La ultima idea que se me ocurre basada en Geoserver, es usar la API de Geoserver, basada en peticiones REST. La verdad que no he mirado mucho este tema, pero permite subir información… Esto requiere que os hagáis unos scripts, o programar un poco, pero puede ser lo más potente a largo plazo.
http://docs.geoserver.org/stable/en/user/extensions/rest/index.html
Otra idioma mucho más general, es montar los servidores en alta disponibilidad con lo que se puede montar cualquier servicio como servidores web, bases de datos,… y estar seguro que estará siempre online (salvo que ambos servidores caigan xD).
Básicamente funcionaria así: 2 maquinas en la que solo funciona una y cuando cae esta, la segunda entra como si fuera la primera. Casi todas las herramientas que podéis encontrar están en esta web:
http://www.linux-ha.org/
Espero orientaros un poco.
Buenas,disculpa Taber por comentar algo más fuera de tu tema, es que tengo el mismo dilema que ESPEJO, necesito replicar datos espaciales por alli escuche acerca simmetricds pero no he podido dar la talla para que me lo permita, sabes si pgpool, o pgcluster replican datos espaciales, bueno mas bien si hay diferencia entre replicar datos espaciales y datos normales, Gracias
Gracias por la excelente información!!
TEngo un problema con el acceso al manager de tomcat, hice los pasos que das y todo ok..pero al momento de logearme en el manager de tomcat ningún usuario y contraseña me funciona. ¿¿POdrias hecharme una manito porfavor?? de antemano muchas gracias.
JOel
ESTIMADOS!!
Solucioné mi problema de acceso y era solo el tema de la creación de cuenta del manager. Seguiré con esta interesante web. SALUDOS Y GRACIAS.