Hi.
Im new with Linux. But try to tell how to start with Mapserver on Ubuntu.
1. Installing
Add UbuntuGis repository:
sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable
sudo apt-get update
Before install MapServer dont forget that its needed in some libraries: curl, gdal,org, agg. Here more inforamtion about this - MapServer Site
Install MapServer, nginx,FastCGI and libgd:
sudo apt-get install libgd2-xpm-dev
sudo apt-get install cgi-mapserver mapserver-bin
sudo apt-get install nginx
sudo apt-get install spawn-fcgi
2. FastCGI config
Create file /etc/init.d/mapserv/ and put into:
#! /bin/sh
#
# description: Mapserver Service Manager
# processname: lt-mapserv
# pidfile: /var/run/mapserv.pid
# Source function library.
#. /etc/init.d/functions
# Check that networking is up.
#. /etc/sysconfig/network
if [ "$NETWORKING" = "no" ]
then
exit 0
fi
PREFIX=/usr
NAME=mapserv
PID=/var/run/mapserv.pid
DAEMON=$PREFIX/bin/spawn-fcgi
DAEMON_OPTS=" -a 127.0.0.1 -p 9999 -F 4 -u user -U user -P $PID $PREFIX/lib/cgi-bin/mapserv"
start () {
echo -n $"Starting $NAME "
exec $DAEMON $DAEMON_OPTS >> /dev/null
daemon --pidfile $PID
RETVAL=$?
echo
[ $RETVAL -eq 0 ]
}
stop () {
echo -n $"Stopping $NAME "
killproc -p $PID
#make sure all mapservers are closed
pkill -f lt-mapserv
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ; then
rm -f $PID
fi
}
restart () {
stop
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status lt-mapserv
RETVAL=$?
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
RETVAL=2
;;
esac
exit $RETVAL
Make this file executable:
chmod +x /etc/init.d/mapserv
3. nginx config
Create file /etc/nginx/sites-enabled/your-file-name
server {
##another server config
listen 80;
server_name your_server.name www.mapserver.your_server.name;
#MapServer
location / {
fastcgi_pass 127.0.0.1:9999;
fastcgi_index mapserv?*;
fastcgi_param SCRIPT_FILENAME /usr/lib/cgi-bin/mapserv$fastcgi_script_name;
include fastcgi_params;
}
}
I was make all thing on localhost. So i not create new file, but just add lines with:
location /map/ {
fastcgi_pass 127.0.0.1:9999;
fastcgi_index mapserv?*;
fastcgi_param SCRIPT_FILENAME /usr/lib/cgi-bin/mapserv$fastcgi_script_name;
include fastcgi_params;
}
into /etc/nginx/sites-enabled/default.
Its all with configurations. Now you can start FastCGI script:
service mapserv start
And start nginx:
/etc/init.d/nginx start
Go to the localhost/map/ and if you do all right you'll see:
No query information to decode. QUERY_STRING is set, but empty.
Its mean that MapServer+nginx work fine.
4. Create map.
Now lets do your first map.For this we need some data. I take Shape files: http://gis-lab.info/other/mapserver-begin-example.zip. Extract it everywhere you want, i do it into /home/my-user/example.
MapServer have no admin panel like Geoserver. For make map you gonna create *.map files. In zip already contain some. We'll use file polt.map:
# Аннотированный map-файл (за основу взят файл из учебника
# http://biometry.gis.umn.edu/tutorial/)
#
# Все, что идет за символом решетки - комментарий и программой не обрабатывается
#
# Map-файлы начинаются с ключевого слова MAP, обозначающего начало
# "map"-объекта. Закрывает map-объект ключевое слово END в конце файла. Вся
# карта, которая будет отображаться пользователю описывается внутри.
MAP
IMAGETYPE GIF
EXTENT 34.59 49.58 34.63 49.6
SIZE 400 300
SHAPEPATH "/home/user/example/shp/"
IMAGECOLOR 255 255 255
# Внутри MAP-объекта определяются новые объекты - слои (LAYER).
# Обязательно нужно определить по крайней мере один слой.
# Количество слоев ограничено сверху (по умолчанию - не больше 100 слоев),
# если нужно большее количество слоев, придется перекомпилировать
# MapServer (см. map.h)
LAYER # Определяем полигональный слой
NAME veget
DATA Poltava10_Vegetation_region
STATUS ON
TYPE POLYGON
# Внутри слоя нужно определить как минимум один класс. Классов может быть
# несколько, но не больше 10 (иначе опять придется перекомпилировать MapServer)
CLASS
NAME "Растительность"
# Внутри класса определяются стили: как именно данный класс отобразить
# на карте.
STYLE
COLOR 232 232 232
OUTLINECOLOR 32 32 32
END
END
END # Конец определения слоя
END # Конец определения карты
There much comments on russian, but don't worry this files works fine. This map contains only one layer veget There you gonna change only SHAPEPATH parameter if you extract your zip archive in another place.
For see this map add in your address line:
http://localhost/map/?map=/home/user/example/polt.map&layer=veget&mode=map
If you see map image:
Its mean all works fine.
Thanks for Yodeski Rodríguez Álvarez for nginx and FasrCGI configuration files. Part with map creating takes from gis-lab.ru