Saludos,
Compilé Mapserver en CentOS y sobreviví para contarlo 🙂
Una cosa es clara, Mapserver no es un simple ./configure, make y make install. Para poder instalarlo tienes que saber lo que estás haciendo. Es por eso que les pido encarecidamente que primero lean mis 2 post anteriores:
Instalando Mapserver Para evaluar opciones alternativas a compliar Mapserver.
Compilando código fuente en Linux Ya que la decisión es compilar el código tengan en cuenta las pautas que sigo para conseguir compilar el software.
Dicho esto procedo a describir que tengo una máquina virtual con CentOS 5 de 32 bits. Intentaba en la medida de lo posible simular las condiciones de un servidor dedicado por lo que instalé webmin con la idea de tener un administrador al estilo cpanel, pero trabajar en consola para instalar mapserver.
Instalé postgres 8.4 del paquete binario de la página web y postgis 1.4 de su Stack Builder. (además del ODBC y el JDBC)
Otra cosa que hice antes de empezar propiamente la instalación fue configurar los repositorios:
1. Habilitar los repositorios [centosplus] y [contrib] activando el respectivo flag (enabled=1) en el archivo /etc/yum.repos.d/CentOS-Base.repo
2. Instalar el repositorio DAG
Si se trabaja con una pc 32 bits CentOS 5
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
3. Descargar los repositorios de Karan siguiendo los pasos de la página http://centos.karan.org/
Lo último que se requiere es actualizar php a la versión 5.2 siguiendo el siguiente tutorial http://www.freshblurbs.com/install-php-5-2-centos-5-2-using-yum sin olvidarse de los paquetes devel
yum install php-devel httpd-devel
Listo, esos fueron los pasos previos para tener listo CentOS para Mapserver.
En la página de Mapserver se puede ver una lista de las dependencias del código.
1. Desde una consola loguearse como root
su – root
2. Instalamos las librerías requeridas (recordar que tienen que ser los paquetes devel)
yum install libpng-devel freetype-devel gd-devel zlib-devel
3. Instalamos las librerías muy recomendadas
yum install proj-devel curl-devel gdal-devel agg-devel
Existe una librería proj-epsg sin la cual mapserver hacía problemas. Tendré que ver si es el mismo caso aquí porque no está mas que en los repositorios testing de Karan.
4. Instalamos los paquetes complementarios
yum install libtiff-devel libjpeg-devel libxml2-devel geos-devel ming-devel
5. Si es el primer código que compilan en la máquina necesitan el compilador.
yum install gcc gcc-c++
6. Todo listo… en teoría
En este punto ./configure funcionará pero make no y lanzará errores por falta de librerías en los enlaces ‘-lgif’ y ‘-lnetcdf’ y uno más que hacía referencia al ODBC, por lo cual se debe instalar estos paquetes que no están documentados como dependencias.
yum install unixODBC-devel giflib-devel netcdf-devel
7. Actualizamos los links a las librerías (no se si sea necesario pero no hace daño)
ldconfig
8. Descargamos Mapserver
wget http://download.osgeo.org/mapserver/mapserver-5.4.2.tar.gz
9. Descomprimimos y accedemos al directorio
tar xvfz mapserver-5.4.2.tar.gz
cd mapserver-5.4.2
10. Configuramos: Esta es la parte mas trabajosa del proceso. La documentación de Mapserver es de mucha ayuda para ver los parámetros. De la misma manera el reporte:
MapServer is now configured for
————– Compiler Info ————-
C compiler: gcc -O2 -fPIC -Wall
C++ compiler: g++ -O2 -fPIC -Wall
Debug: -DNEED_NONBLOCKING_STDERR
Generic NINT:
————– Renderer Settings ———
zlib support: -DUSE_ZLIB
png support:
palette rgba png support:
jpeg support:
iconv support: -DUSE_ICONV
AGG support: -DUSE_AGG
AGG Freetype support: -laggfontfreetype
Ming(flash) support:
PDFLib support:
————– Support Libraries ———
Proj.4 support: -DUSE_PROJ
Libxml2 support: -DUSE_LIBXML2
FriBidi support:
Curl support: -DUSE_CURL
FastCGI support:
Threading support: -DUSE_THREAD
GEOS support: -DUSE_GEOS
————– Data Format Drivers ——-
native tiff support: -DUSE_TIFF
PostGIS support: -DUSE_POSTGIS
EPPL7 support: -DUSE_EPPL
ArcSDE support:
OGR support: -DUSE_OGR
GDAL support: -DUSE_GDAL
Oracle Spatial support:
————– OGC Services ————–
WMS Server: -DUSE_WMS_SVR
WMS Client: -DUSE_WMS_LYR
WFS Server: -DUSE_WFS_SVR
WFS Client: -DUSE_WMS_LYR
WCS Server:
SOS Server:
————– MapScript —————–
PHP MapScript: yes
Con el cual se puede saber que se va a compilar, qué está bien enlazado y qué no.
En este caso el reporte se creó con la siguiente configuración:
./configure –with-png –with-agg –with-freetype –with-proj –with-xml2-config –with-curl-config –with-threads –with-geos –with-tiff –with-postgis=/opt/PostgreSQL/8.4/bin/pg_config –with-gdal –with-ogr –with-wmsclient –with-wms –with-wfsclient –with-wfs –with-gif=/usr –with-php=/usr/include/php –with-httpd=/usr/sbin/httpd
11. Compilación
Con mucha suerte y después de todo el esfuerzo todo estará listo y compilado despues del make
make
12. LISTO
Y listo, el la carpeta ‘mapcript’ tendrán los compilados para mapscript y en la carpeta donde se compiló habrá un archivo llamado mapserv que es el script cgi, lo mas importante de mapserver. Este último tiene que copiarse al directorio /var/www/cgi-bin o al directorio de scripts que utilice el servidor web.
EDIT: Probando el servidor que he creado me di cuenta que no reconocía las proyecciones. Me mandaba el siguiente error:
msProcessProjection(): Projection library error. no system list, errno: 2
Lo que se requiere es un archivo con las proyecciones llamado epsg, el cual se puede obtener de dos formas:
– Descargándolo del siguiente link : http://dl.maptools.org/dl/proj4-epsg-with-42xxx-and-esri.zip
– Instalando el paquete proj-epsg del repositorio testing de karan
En cualquiera de los dos casos se debe direccionar el archivo para que el servidor lo encuentra. esto se puede hacer editando el archivo de configuración de httpd.conf (/etc/httpd/conf/httpd.conf) y agregando la siguiente línea:
SetEnv PROJ_LIB “/usr/share/proj/”
Asumiendo que el archivo epgs está en la carpeta /usr/share/proj/