[mapserver-dev] Light Speed Map Server

Jeff McKenna jmckenna at gatewaygeomatics.com
Wed Jul 28 08:27:19 EDT 2010


It would be great if you could add this as a new wiki page on the 
MapServer wiki (see the lower section of 
http://trac.osgeo.org/mapserver/).  That way others can find this 
document, and maybe even add to it over the years.  Thanks!

-jeff



-- 
Jeff McKenna
MapServer Consulting and Training Services
http://www.gatewaygeomatics.com/




Nishad N A wrote:
> 
>     Light Speed Map Server
> 
> This is a configuration of Map Server <http://mapserver.org?by-user=t> 
> WMS as 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 <mailto:nishad.n.a at gmail.com>
> 


More information about the mapserver-dev mailing list