Instalar Geoserver no Ubuntu 9.10 (com ECW, MrSID e Jpeg2000)

== Prefácio ==
Este guia pretende congregar os diversos processos e guias dispersos na rede necessários à instalação do servidor de mapas Geoserver no sistema operativo Ubuntu na versão 9.10 (Karmic Koala).
O servidor de mapas Geoserver tem como principal característica a total congruência com as normas de serviços espaciais do Open Geospatial Consortium, nomeadamente Web Map Services (WMS) e Web Feature Services (WFS). O Gesoerver permite, entre outras coisas, a edição de informação vectorial através do serviço WFS, como sejam dados armazenados numa base de dados espacial (e.g. PostGis) ou em formato de ficheiro (e.g. Shapefile).
Para além desta característica o Geoserver pode servir um número considerável de formatos matriciais através de WMS recorrendo à biblioteca GDAL. Entre estes encontram-se os formatos criados com algoritmos de compressão baseados na Transformada de Onduletas, com sejam oJpeg2000, MrSID e ECW.
Existem de momento duas versão do Geoserver, uma em formato binário e outra em formato WAR. A primeira inclui um servidor de HTTP dedicado, o Jetty, a segunda serve para uma instalação com um servidor de HTTP existente (e.g. Tomcat). Este guia de instalação contempla apenas a versão binária do Geoserver. 
Nota: Em relação aos ECW é importante notar que para servir mapas neste formato é necessário adquirir uma licença ao fabricante, ER Mapper.
== Sun Java Development Kit ==
Esta secção é baseada na FAQ da nixCraft.
O Geoserver está assente na tecnologia Java, pelo que é necessária a instalação prévia do Java Development Kit (JDK). Os programadores do Geoserver aconselham a utilização do JDK distribuído pelo Sun, pois garante maior desempenho por parte do Geoserver. 
Para começar há qu garinti que o repositório Multiverse está activado. Para tal aceder a System → Administration → Software Sources. Na secção Ubuntu Software seleccionar a opção Software restricted by copyright or legal issues (multiverse).
A seguir abrir uma linha de comandos e dar início à instalação:
sudo apt-get install sun-java6-bin sun-java6-jre sun-java6-jdk
É também conveniente instalar o pacote de actualizações:
sudo update-java-alternatives -s java-6-sun
A instalação terminou, por defeito o JDK fica instalado no directório /usr/lib/jvm/ dentro de um sub-directório que reflecte a versão instalada; neste guia assume-se que a versão instalada é a 6 da Sun, pelo que este sub-directório será java-6-sun. Há agora que começar actualizar as variáveis de sistema. Para este tipo de edições pode ser usado um dos vários editores de texto instalados por defeito com o Ubuntu, vi, nano, gedit. Neste guia será usado o nano:
sudo nano /etc/jvm
No final deste ficheiro há que adicionar as seguintes linhas:
/usr/lib/jvm/java-6-sun
/usr/lib/jvm/java-gcj
/usr/lib/jvm/ia32-java-1.5.0-sun
/usr/lib/jvm/java-1.5.0-sun
/usr
Por fim há que actualizar as variáveis de ambiente globais, editando o ficheiro /etc/environment:
sudo nano /etc/environment
Neste ficheiro adicionar a linha:
JAVA_HOME="/usr/lib/jvm/java-6-sun"
E na linha que começa por PATH acrescentar no fim o mesmo caminho para o JDK, inserindo :/usr/lib/jvm/java-6-sun antes de fechar as aspas.
== Geoserver ==
Esta secção é baseada num guia de Fernando Quadro.
Para começar há que criar um directório para alojar o Geoserver, neste guia assume-se que este será /usr/lib/Geoserver:
sudo mkdir /usr/lib/Geoserver
sudo chmod 777 /usr/lib/Geoserver
cd /usr/lib/Geoserver/
Agora há que descarregar a versão correcta do Geoserver, aconselhando-se a que seja a última estável. O caminho para os ficheiros binários de intalação pode ser obtido na página do Geoserver. 
wget http://downloads.sourceforge.net/geoserver/geoserver-2.0.1-bin.zip
unzip geoserver-2.0.1-bin.zip
mv geoserver-2.0.1 geoserver
Os binários do Geoserver ficaram no directório /usr/lib/Geoserver
/geoserver, sendo também aqui que está o directório de dados. Fernando Quadro sugere que se mova o directório de dados para fora dos binários de modo a facilitar actualizações futuras:
mv geoserver/data_dir .
Fica a faltar a configuração do ambiente de execução do Geoserver, mas isso será efectuado no final, depois da instalação da extensão para o GDAL.
== Imageio-ext ==
De modo a poder ler e servir ficheiros em formatos matriciais mais complexos e Geoserver usa um conjunto de bibliotecas do GDAL, com o nome de Imageio-ext. Estas bibliotecas têm de ser uma versão específica, pelo que, mesmo que já exista uma versão do GDAL instalada no sistema, tem de ser descarregadas e instaladas.
Verifique através da página do Imageio-ext qual o endereço da última versão estável para descarregar. É aconselhável criar um directório específico para esta extensão; neste guia será /usr/lib/Geoserver/imageio-ext:
mkdir /usr/lib/Geoserver/imageio-ext
cd /usr/lib/Geoserver/imageio-ext
wget https://imageio-ext.dev.java.net/files/documents/7505/144611/imageio-ext-1.0.5-linux32-mrsid-ecw-lib.tar.gz
tar -xvvzf imageio-ext-1.0.5-linux32-mrsid-ecw-lib.tar.gz
É agora necessário descarregar um conjunto de informação necessário ao GDAL para a descodificação de sistemas de coordenadas. Este pacote pode ser descarregado a partir do mesmo repositório de onde foi retirado o Imageio-ext.
mkdir /usr/lib/Geoserver/gdal_data
cd /usr/lib/Geoserver/gdal_data
wget https://imageio-ext.dev.java.net/files/documents/7505/133661/gdal_data-1.4.4.zip
unzip gdal_data-1.4.4.zip
== Configuração do ambiente de execução ==
Com todos os binários instalados no sistema é por fim necessário criar um ficheiro de configuração do ambiente de execução. Este ficheiro define um conjunto de variáveis de ambiente que indicam ao Geoserver a localização dos diversos recursos, nomeadamente:
* GEOSERVER_DATA_DIR – directório de dados para o Geoserver;
* GEOSERVER_HOME – raíz dos binários do Geoserver;
* JAVA_HOME – raíz dos binários do JDK;
* LD_LIBRARY_PATH – directório das bibliotecas do Imageio-ext;
* GDAL_DATA – directório dos sistemas de coordenadas do GDAL.
Cria-se então um novo ficheiro de ambiente para o Geoserver:
sudo nano /etc/init.d/geoserver
Neste ficheiro inserir estas linhas:
#! /bin/sh -e
#
# Author: Luís de Sousa
# http://wiki.osgeo.org/wiki/Instalar_Geoserver_no_Ubuntu_9.10_%28com_ECW,_MrSID_e_Jpeg2000%29
#
# Adapted from Fernando Quadro:
# http://www.fernandoquadro.com.br/html/2009/05/14/instalando-o-geoserver-no-ubuntu/
export GEOSERVER_DATA_DIR=/usr/lib/Geoserver/data_dir
export GEOSERVER_HOME=/usr/lib/Geoserver/geoserver
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export LD_LIBRARY_PATH=/usr/lib/Geoserver/imageio-ext
export GDAL_DATA=/usr/lib/Geoserver/gdal_data
case "$1" in
 start)
 /usr/lib/Geoserver/geoserver/bin/startup.sh
 ;;
 stop)
 /usr/lib/Geoserver/geoserver/bin/shutdown.sh
 ;;
 force-reload|restart)
 $0 stop
 $0 start
 ;;
 *)
 exit 1
 ;;
esac
exit 0
Caso o Geoserver esteja instalado num directório diferente do sugerido neste guia deverá modificar os caminhos de acordo. Agora há que dar permissões de execução sobre este ficheiro:
sudo chmod +x /etc/init.d/geoserver
Por fim há que incluir o comando de arranque do Geoserver no ficheiro /etc/rc.local:
sudo nano /etc/rc.local
Acrescente a seguinte linha antes de “exit 0”.
/etc/init.d/geoserver start &
== Conclusão ==
No final deste guia ficarão instalados no sistema o JDK da Sun e o Geoserver, com capacidades de serviço de ficheiros matriciais MrSID, Jpeg2000 e ECW.
Para fechar e/ou iniciar o Geoserver use os comandos:
/etc/init.d/geoserver start &
/etc/init.d/geoserver stop &