[mapserver-dev] Light Speed Map Server

Nishad N A nishad.n.a at gmail.com
Mon Jul 26 06:19:05 EDT 2010


Light Speed Map Server

This is a configuration of Map Server <http://mapserver.org?by-user=t> WMSas
fast-cgi <http://www.fastcgi.com?by-user=t> module of
Lighttpd<http://www.lighttpd.net?by-user=t>.
Here I am compiling all main software packages from the source code on a
64bit Linux operating system to get maximum performance. I hope my readers
having experience in installing & configuring software packages under Linux
platform. I prefer a CentOS 5.4 ×86_64
<http://www.centos.org?by-user=t>Linux minimal server installation,
because it is quite stable for me so far.
Prerequisites

Make sure that you have installed the following packages, normally it comes
with the operating system installation.

cc gcc-c++ python python-devel krb5-devel readline-devel make swig
pcre-devel libpng libpng-devel bzip2-devel fontconfig fontconfig-devel
libxml2-devel penssl-devel curl-devel giflib-devel zlib-devel gettext
libjpeg-devel libtiff-devel

If any of the package is not installed, install it by using YUM. For example
if gcc is missing

yum install gcc-c++

Ok, let’s start with the main software packages installation for Map Server,
PostgresSQL

The world’s most advanced open source database server.I prefer
PostgresSQL<http://www.postgresql.org?by-user=t>server to store the
vector map data, for fast searching and rendering of
WMS map tiles.
Download the source<http://nishad.us/docs/softwares/postgresql-8.4.2.tar.gz>

Installation & Configuration.

tar -xzf postgresql-8.4.2.tar.gz
cd postgresql-8.4.2/
./configure —prefix=/usr/local/pgsql —with-perl —with-python —with-krb5
make
make install
adduser postgres
mkdir /var/lib/pgsql
chown -R postgres /var/lib/pgsql
su postgres
/usr/local/pgsql/bin/initdb -D /var/lib/pgsql/data
/usr/local/pgsql/bin/postgres -i -h localhost -p 5432 -D /var/lib/pgsql/data
&

Now your PostgreSQL server is up and running. If you need an init.d startup
script, download it from here
/etc/init.d/postgresql<http://nishad.us/docs/softwares/postgresql.txt>
FastCGI

FastCGI <http://www.fastcgi.com?by-user=t> is a protocol for interfacing
interactive programs with a web server. This is a variation on the earlier
Common Gateway Interface (CGI). Unlike CGI, It cannot duplicates the
universality of CGI overnight. It runs applications in processes isolated
from the core Web server, which provides greater security than APIs. Not
only does FastCGI restore the strengths of CGI, it also adds two new
benefits like Distributed computing and Multiple extensible roles.
Download the source <http://nishad.us/docs/softwares/fcgi-2.4h4>. PROJ.4

Proj.4 <http://trac.osgeo.org/proj/> is Cartographic Projections library is
designed as a standard Unix filter utility to be employed with other
pro-grams in the generation of maps and charts and, in many cases, used in
map digitizing applications for conversion of State Plane Coordinate Systems
to and from geographic coordinates.

Download the source <http://nishad.us/docs/softwares/proj-4.7.0.tar.gz>

Installation & Configuration

tar -xzf proj-4.7.0.tar.gz
cd proj-4.7.0/
./configure —prefix=/usr/local/
make
make install

You have successfully compiled the Proj4 libraries required for Map
Server..0.tar.gz

Installation & Configuration

tar -xzf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0/
./configure —prefix=/usr/local/
make
make install

You have installed the FastCGI executables and libraries now, we will use
this later while configuring the Map Server.
LighHTTPD

Lighttpd <http://www.lighttpd.net/> is a web server designed and optimized
for high performance environments, with a small memory footprint compared to
other web-servers and effective management of the cpu-load. This is a
perfect solution for every server which is suffering load problems.

Download the source <http://nishad.us/docs/softwares/lighttpd-1.4.26.tar.gz>

Installation & Configuration

tar -xzf lighttpd-1.4.26.tar.gz
cd lighttpd-1.4.26/
p<>. ./configure —prefix /usr/local/ —bindir=/usr/local/bin/
—sbindir=/usr/local/sbin/ —libexecdir=/usr/local/libexec/
—libdir=/usr/local/lib/ —includedir=/usr/local/include
—sysconfdir=/usr/local/lighthttpd —datarootdir=/var/www/ —datadir=/var/www
—with-memcache
make
make install
install -Dp ./doc/lighttpd.conf /etc/lighttpd/lighttpd.conf
sed -e ‘s/FOO/lighttpd/g’ doc/rc.lighttpd.redhat > /etc/init.d/lighttpd
chmod a+rx /etc/init.d/lighttpd
/etc/init.d/lighttpd start

You have successfully compiled and configured your fast & secure Lighttpd
web server.
PROJ.4

Proj.4 <http://trac.osgeo.org/proj/> is Cartographic Projections library is
designed as a standard Unix filter utility to be employed with other
pro-grams in the generation of maps and charts and, in many cases, used in
map digitizing applications for conversion of State Plane Coordinate Systems
to and from geographic coordinates.

Download the source <http://nishad.us/docs/softwares/proj-4.7.0.tar.gz>

Installation & Configuration

tar -xzf proj-4.7.0.tar.gz
cd proj-4.7.0/
./configure —prefix=/usr/local/
make
make install

You have successfully compiled the Proj4 libraries required for Map Server.
FreeType

FreeType <http://www.freetype.org/> is a software font engine that is
designed to be small, efficient, highly customizable, and portable while
capable of producing high-quality output. It can be used in graphics
libraries, display servers, font conversion tools, text image generation
tools, and many other products as well.

Download the source <http://nishad.us/docs/softwares/freetype-2.3.12.tar.gz>

Installation & Configuration

tar -xzf freetype-2.3.12.tar.gz
cd freetype-2.3.12/
./configure —prefix=/usr/local/
make
make install

You have successfully compiled the FreeType libraries required for Map
Server.
GEOS

Geos <http://trac.osgeo.org/geos/> GEOS is a Geometry Engine which aims to
contain the complete functionality of Java Topology Suite. This includes all
the GIS Simple Features for SQL spatial predicate functions and spatial
operators, as well as specific JTS enhanced topology functions.

Download the source <http://nishad.us/docs/softwares/geos-3.2.0.tar.bz2>

Installation & Configuration

tar -xjf geos-3.2.0.tar.bz2
cd geos-3.2.0/
./configure —prefix=/usr/local/ —enable-python —enable-swig
make
make install

You have successfully compiled the Geos libraries required for Map Server.
GD

GD <http://www.libgd.org?by-user=t> is used for dynamic creation of images
like PNG, JPEG and GIF images, among other formats. GD is commonly used to
generate charts, graphics, thumbnails, and most anything else, on the fly.

Download the source <http://nishad.us/docs/softwares/gd-2.0.35.tar.gz>

Installation & Configuration

tar -xzf gd-2.0.35.tar.gz
cd gd-2.0.35/
./configure —prefix=/usr/local/ —with-png=/usr/ —with-jpeg=/usr/local/
—with-fontconfig=/usr/
make
make install

You have successfully compiled the GD binaries and it’s libraries required
for Map Server.
PHP

PHP <http://php.net?by-user=t> is a widely-used general-purpose scripting
language that is especially suited for Web development and can be embedded
into HTML. Here we are configuring PHP with PostgreSql and GD with is
required for PHP mapscript, and compiling as fast-cgi to get the maximum
security and speed.

Download the source <http://nishad.us/docs/softwares/php-5.3.2.tar.gz>

Installation & Configuration

tar -xzf php-5.3.2.tar.gz
cd php-5.3.2/
./configure —prefix=/usr/local/php5 —with-fastcgi=/usr/local —with-regex=php
—enable-debug —enable-magic-quotes —enable-libgcc
—with-libxml-dir=/usr/local/ —with-openssl=/usr —with-kerberos=/usr/local/
—with-zlib=/usr —with-bz2=/usr/local/ —with-curl=/usr/local/
—with-gettext=/usr/local/ —enable-mbstring —with-pgsql=/usr/local/pgsql/
—enable-soap —enable-zip —with-gd=/usr/local/ —with-jpeg-dir=/usr/local/
—with-png-dir=/usr/local/ —with-mhash=/usr/local/
make
make install
cp -pr php.ini-production /usr/local/php5/lib/php.ini

You have successfully compiled PHP as fast-cgi in the server.
PostGIS

PostGIS <http://postgis.refractions.net/> PostGIS adds support for
geographic objects to the PostgreSQL object-relational database. In effect,
PostGIS “spatially enables” the PostgreSQL server, allowing it to be used as
a backend spatial database for geographic information systems (GIS).

Download the source <http://nishad.us/docs/softwares/postgis-1.5.1.tar.gz>

Installation & Configuration

tar -xzf softwares/postgis-1.5.1.tar.gz
cd postgis-1.5.1/
./configure —prefix=/usr/local/ —with-geosconfig=/usr/local/bin/geos-config
—with-pgsql=/usr/local/pgsql/bin/pg_config
make
make install

You have successfully configured postGIS with PostgreSQL and Geos, compiled
the source and installed the binaries. Now you create a PostgreSQL database
and spatially enables it by importing the PostGIS sql functions.

createdb -U postgres testgis
createlang -U postgres plpgsql testgis
psql -U postgres testgis < postgis/postgis.sql
psql -U postgres testgis < spatial_ref_sys.sql
 GDAL

GDAL <http://www.gdal.org?by-user=t> (Geospatial Data Abstraction Library)
is a library for reading and writing raster geospatial data formats. As a
library, it presents a single abstract data model to the calling application
for all supported formats. It may also be built with a variety of useful
command-line utilities for data translation and processing.

Download the source <http://nishad.us/docs/softwares/gdal-1.7.1.tar.gz>

Installation & Configuration

tar -xzf gdal-1.7.1.tar.gz
cd gdal-1.7.1/
./configure —prefix=/usr/local/ —with-png=/usr/ —with-libtiff=/usr/local/
—with-jpeg=/usr/local/ —with-gif=/usr/
—with-pg=/usr/local/pgsql/bin/pg_config —with-geos=/usr/local/ —with-python
make
make install

You have successfully compiled Gdal with png,tiff,jpeg,gif,PostgreSQL and
python. Now your Gdal library is available to build the Map Server.
Map Server

Map Server <http://mapserver.org?by-user=t> MapServer is geographic data
rendering engine, providing spatial context where needed. It allows you to
create geographic image maps that can direct users to content. It was
originally developed by the University of Minnesota (UMN) ForNet project in
cooperation with NASA. The main features are,

   - Advanced cartographic output
   - Scale dependent feature drawing and application execution
   - Feature labeling including label collision mediation
   - Fully customizable, template driven output
   - TrueType fonts
   - Map element automation (scalebar, reference map, and legend)
   - Thematic mapping using logical- or regular expression-based classes
   - Support for popular scripting and development environments, ie PHP,
   Python, Perl, Ruby, Java.
   - Cross-platform support
   - Support of numerous Open Geospatial Consortium (OGC) standards,
ie WMS,WFS,
   WMC, WCS, Filter Encoding, SLD, GML, SOS, OM
   - A multitude of raster and vector data formats, ie TIFF/GeoTIFF, EPPL7,
   ESRI shapfiles, PostGIS, ESRI ArcSDE, Oracle Spatial, MySQL
   - On-the-fly map projection with 1000s of projections through the Proj.4
   library.

Download the source <http://nishad.us/docs/softwares/mapserver-5.6.1.tar.gz>

Installation & Configuration

tar -xzf mapserver-5.6.1.tar.gz
cd mapserver-5.6.1/
./configure —prefix=/usr/local/ —with-gdal=/usr/local/bin/gdal-config
—with-ogr=/usr/local/bin/gdal-config —with-httpd=/usr/local/sbin/lighttpd
—with-curl=/usr/bin/curl-config —enable-debug —with-proj=/usr/local/
—with-tiff=/usr/ —with-gd=/usr/local/ —with-jpeg=/usr/local/
—with-freetype=/usr/local/ —with-threads
—with-postgis=/usr/local/pgsql/bin/pg_config
—with-xml2-config=/usr/bin/xml2-config —with-png=/usr/ —with-wmsclient
—with-wmsserver —with-fastcgi=/usr/local/ —with-wfs with-wfsclient
—with-gif=/usr/ —with-geos=/usr/local/bin/geos-config
—with-php=/usr/local/php5
make
make install
cp -pr mapserv /var/www/cgi-bin/

You have successfully compiled the Map Server with all it’s prerequisites
and bindings,and as fast-cgi binary. Now you can test your installation by
running “mapserv” binary. If you get below output, it seems your
installation is successful.


./mapserv -v
MapServer version 5.6.1 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP
OUTPUT=SVG
SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=WMS_SERVER
SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS
SUPPORTS=GEOS INPUT=TIFF INPUT=EPPL7 INPUT=POSTGIS INPUT=OGR INPUT=GDAL
INPUT=SHAPEFILE

PHP & Map server FastCGI configuration with Lighttpd. Edit Lighttpd.conf,

vi /etc/lighttpd/lighttpd.conf

and insert below configuration under the fastcgi section.

fastcgi.server = ( “.php” =>
( “localhost” =>
(
“socket” => “/tmp/php-fastcgi.socket”,
“bin-path” => “/usr/local/php5/bin/php-cgi”
)
),
“/map” =>
( “localhost” =>
(
“socket” => “/tmp/mapserver-fastcgi.socket”,
“bin-path” => “/var/www/cgi-bin/mapserv”,
“max-procs” => 1,
“check-local” => “disable”
)
)
)

Restart your Lighttpd server.

/etc/init.d/lighttpd restart

Your Light Speed FastCGI Map Server Web Map Service(WMS) is up and running
now. :) Try it from the URL http://localhost/maps?map=yourmapfile.map

Contact me for any further help.

Nishad Aliyar
nishad.n.a at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-dev/attachments/20100726/8d824903/attachment-0001.html


More information about the mapserver-dev mailing list