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-fcgi2. 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/mapserv3. 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 startAnd 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
Макс! Респект!
ОтветитьУдалитьСпасибо огромное за материал. Сидел целый день по кускам собирал информацию... И вот увидел твой работающий мануал!
Маленькое замечание - в ubuntu у меня возникли проблемы с функцией killproc (не очень я в ubuntu пока), заменил на killall - проверил, вроде скрипт поднятия-опускания mapserver-a работает правильно.
Еще раз спасибо!
Андрей.
Я на самом деле никогда не стопил скрипт поэтому не могу сказать как работает killproc.
ОтветитьУдалитьThank you, your post helped me a lot.
ОтветитьУдалить