source: trunk/docs/workshop/2010/using_zoo_from_osgeolivevm.txt @ 256

Last change on this file since 256 was 256, checked in by djay, 13 years ago

Add the workshop 2010 material as Restructured text. Some issues with table of content and pdf production due to number of sub title level used in the workshop material.

File size: 8.3 KB
Line 
1.. _using_zoo_from_osgeolivevm:
2
3Using ZOO from an OSGeoLive virtual machine
4#############################################
5
6.. contents:: Table of Contents
7    :depth: 5
8    :backlinks: top
9
10`OSGeoLive <http://live.osgeo.org/>`__ is a live DVD and virtual machine based on  `Xubuntu <http://www.xubuntu.org/>`__ that allows you to try a wide variety of open source geospatial software without installing anything. It is composed entirely of free software and include ZOO 1.0 this year, for testing purpose.
11
12ZOO Kernel Installation
13************************
14
15As already said in introduction, an OSGeoLive virtual machine image disk has been installed on your computer, allowing you to use ZOO Kernel in a development environment directly. Using a virtual machine image disk seems to be the simplest way to use ZOO Kernel and to develop ZOO Services locally, as we can ensure that everything requested for compiling C Services and running Python ones is available and ready to use. Every ZOO related material and source code have been placed in ``/home/user/zoows`` directory. We will work inside it during this workshop. As the binary version of ZOO Kernel is already compiled and stored in ``/home/user/zoows/sources/zoo-kernel``, you only have to copy two important files inside the ``/usr/lib/cgi-bin`` directory : ``zoo_loader.cgi`` and the ``main.cfg`` in order to make ZOO Kernel available, using the following commands :
16
17.. code-block:: guess
18
19    sudo cp ~/zoows/sources/zoo-kernel/zoo_loader.cgi /usr/lib/cgi-bin
20    sudo cp ~/zoows/sources/zoo-kernel/main.cfg /usr/lib/cgi-bin
21
22
23Please note that we will talk about ZOO Kernel or ``zoo_loader.cgi`` script without any distinction during this workshop.
24
25The ``main.cfg`` file contains metadata informations about the identification and provider but also some important settings. The file is composed of various sections, namely main, identification and provider per default. Obviously, you are free to add new sections to the file if you need them for a specific Service. Nevertheless, you have to know that the env and lenv sections name are used in a specific way.
26
27The env section lets you define environment variables that your Service requires during its runtime. For instance, if your Service requires to access to a X server running on framebuffer, then you will have to set the ``DISPLAY`` environnement variably, in this case you would add ``DISPLAY=:1`` line in your env section.
28
29As for the env section, there is the section lenv where specific informations about status informations of a running Service will be written by the ZOO Kernel or the ZOO Services. For instance, when your service failed, you can set the value for message in lenv to see it displayed in the Status node of the ExecuteResponse returned back to the client. If your service will take long time and can get informations about processing status, you can then set a value between 0 and 100 to status in lenv to represent the percentage completed of the running Service task, we will talk deeper about this later in this workshop.
30
31Please take a look to your local file ``main.cfg`` file. Three important parameters are commented bellow:
32
33  - serverAddress : The url to access to the ZOO Kernel
34  - tmpPath : The full path to store temporary files
35  - tmpUrl : The url path relative to serverAddress to access temporary directory.
36
37The values of the main.cfg file used from the running virtual machine are the following :
38
39.. code-block:: guess
40
41    serverAddress=http://localhost/zoo
42    tmpPath=/var/www/temp
43    tmpUrl=../temp/
44
45You could have noticed that the tmpUrl is a relative url from ``serverAddress``, so it must be a directory. Even if ZOO Kernel can be used with the full url of the ``zoo_loader.cgi`` script, for better readability and fully functional ZOO Kernel, you have to modify the default Apache configuration in order to be able to use the  http://localhost/zoo/ url directly.
46
47First, please create a ``zoo`` directory in the existing ``/var/www`` which is used by Apache as the ``DocumentRoot``. Then, please edit the ``/etc/apache2/sites-available/default`` configuration file and add the following lines after the ``Directory`` block related to ``/var/www`` directory :
48
49.. code-block:: none
50
51    <Directory /var/www/zoo/>
52        Options Indexes FollowSymLinks MultiViews
53        AllowOverride All
54        Order allow,deny
55        allow from all
56    </Directory>
57
58Now create a small ``.htaccess`` file in the ``/var/www/zoo`` containing the following lines:
59
60.. code-block:: guess
61
62    RewriteEngine on
63    RewriteRule call/(.*)/(.*) /cgi-bin/zoo_loader.cgi?request=Execute&service=WPS&version=1.0.0&Identifier=$1&DataInputs=sid=$2&RawDataOutput=Result [L,QSA]
64    RewriteRule (.*)/(.*) /cgi-bin/zoo_loader.cgi?metapath=$1 [L,QSA]
65    RewriteRule (.*) /cgi-bin/zoo_loader.cgi [L,QSA]
66
67For this last file to be taken into account by Apache, you must activate the rewrite Apache module by copying a load file as bellow :
68
69.. code-block:: guess
70
71    sudo cp /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/
72
73Or using the ``a2enmod`` tool this way :
74
75.. code-block:: guess
76
77    a2enmod rewrite
78
79Now you should be able to access the ZOO Kernel using a simplified by restarting your Apache Web server :
80
81.. code-block:: guess
82
83    sudo /etc/init.d/apache2 restart
84
85
86Two other softwares form the OSGeoLive environment will be used during this workshop. MapServer will first be used to provide WFS input data for the ZOO Services we are going to develop. The MapServer dataset providen by Orkney (japanese regions polygons) will be passed to our service during `section 4 <http://zoo-project.org/trac/wiki/ZooWorkshop/FOSS4GJapan/CreatingOGRBasedWebServices#CallingthesinglegeometryservicesfromJavaScript>`__.
87
88OpenLayers library is also available on the OSGeoLive virtual machine image disk, and it will be used during `section 4 <http://zoo-project.org/trac/wiki/ZooWorkshop/FOSS4GJapan/CreatingOGRBasedWebServices#CallingthesinglegeometryservicesfromJavaScript>`__, for building a simple WPS client application able to query the newly developed ZOO Services.
89
90As we planned to use OGR C-API and Python module of the GDAL library, we will need the corresponding header files, libraries and associated files. Hopefully everything was already available per default and so ready to use on the OSGeoLive packaging.
91
92Testing the ZOO installation with GetCapabilities
93***************************************************
94
95
96You can now simply query ZOO Kernel using the following request from your Internet browser:
97
98http://localhost/cgi-bin/zoo_loader.cgi?Request=GetCapabilities&Service=WPS
99
100You should then get a valid Capabilities XML document, as the following :
101
102.. image:: ./images/Practical-introduction-to-ZOO-2.png
103   :width: 458px
104   :height: 159px
105   :align: center
106
107Please note that no Process node is returned in the ProcessOfferings section, as no ZOO Service is available yet. You can also proceed to a GetCapabilities request from the command line, using the following command:
108
109.. code-block:: none
110
111    cd /usr/lib/cgi-bin
112    ./zoo_loader.cgi “request=GetCapabilities&service=WPS”
113
114The same result as in your browser will be returned, as shown in the following screenshot:
115
116.. image:: ./images/Practical-introduction-to-ZOO-3.png
117   :width: 395px
118   :height: 251px
119   :align: center
120
121Invoking ZOO Kernel from command line can be helpful during development process of new Services.
122
123Preparing your ZOO Services Provider directory
124*************************************************
125
126In order to simplify the task, we will first comment the directory structure which should be used when creating a new Services Provider :
127
128  - The main Services Provider directory including :
129
130    - A ``cgi-env`` directory which will contain all the zcfg metadata files and the service shared object (C Shared Library or Python module)
131    - The ``Makefile`` and the ``*c`` files needed to compile your Services Provider.
132
133Please create a ws_sp main Services Provider directory in the existing zoo-services one located in ``/home/user/zoows/sources/``, respecting the tree above .
134
135.. code-block:: guess
136
137    mkdir -p /home/user/zoows/sources/zoo-services/ws_sp/cgi-env
138
139The Makefile and the code of the C and Python Service Shared Object will be detailed in the next sections.
140
Note: See TracBrowser for help on using the repository browser.

Search

Context Navigation

ZOO Sponsors

http://www.zoo-project.org/trac/chrome/site/img/geolabs-logo.pnghttp://www.zoo-project.org/trac/chrome/site/img/neogeo-logo.png http://www.zoo-project.org/trac/chrome/site/img/apptech-logo.png http://www.zoo-project.org/trac/chrome/site/img/3liz-logo.png http://www.zoo-project.org/trac/chrome/site/img/gateway-logo.png

Become a sponsor !

Knowledge partners

http://www.zoo-project.org/trac/chrome/site/img/ocu-logo.png http://www.zoo-project.org/trac/chrome/site/img/gucas-logo.png http://www.zoo-project.org/trac/chrome/site/img/polimi-logo.png http://www.zoo-project.org/trac/chrome/site/img/fem-logo.png http://www.zoo-project.org/trac/chrome/site/img/supsi-logo.png http://www.zoo-project.org/trac/chrome/site/img/cumtb-logo.png

Become a knowledge partner

Related links

http://zoo-project.org/img/ogclogo.png http://zoo-project.org/img/osgeologo.png