.. include:: .. include:: .. _install-onwindows: Installation on Windows |trade| ==================== Compile ZOO-Project from source ------------------------------- .. warning:: Ensure to first perform the :ref:`prerequisite steps ` before compiling the ZOO Kernel. The following steps are for use with the Microsoft Visual Studio compiler (and tested with MSVC 2010). 1. Make sure the gnuwin32 tools ``bison.exe`` and ``flex.exe`` are found in your path. You can download the GNUwin32 tools `here `__. 2. Modify the ``nmake.opt`` file to point to your local libraries. Note that you can also use definition directly in the command line if you prefer. See :ref:`win_configure_options` for details about this options. 3. Execute: :: nmake /f makefile.vc 4. A file ``zoo_loader.cgi`` and ``libzoo_service.dll`` should be created. Note that if another file named ``zoo_loader.cgi.manifest`` is also created, you will have to run another command: :: nmake /f makefile.vc embed-manifest 5. Copy the files ``zoo_loader.cgi``, ``libzoo_service.dll`` and ``main.cfg`` into your cgi-bin directory. 6. Using the command prompt, test the ZOO-Kernel by executing the following command: :: D:\ms4w\Apache\cgi-bin> zoo_loader.cgi which should display a message such as: :: Content-Type: text/xml; charset=utf-8 Status: 200 OK Parameter <request> was not specified 7. Edit the ``main.cfg`` file so that it contains values describing your WPS service. An example of such a file running on Windows is: :: [main] encoding = utf-8 version = 1.0.0 serverAddress = http://localhost/ lang = en-CA tmpPath=/ms4w/tmp/ms_tmp/ tmpUrl = /ms_tmp/ [identification] title = The Zoo WPS Development Server abstract = Development version of ZooWPS. See http://www.zoo-project.org fees = None accessConstraints = none keywords = WPS,GIS,buffer [provider] providerName=Gateway Geomatics providerSite=http://www.gatewaygeomatics.com individualName=Jeff McKenna positionName=Director role=Dev adressDeliveryPoint=1101 Blue Rocks Road addressCity=Lunenburg addressAdministrativeArea=False addressPostalCode=B0J 2C0 addressCountry=ca addressElectronicMailAddress=info@gatewaygeomatics.com phoneVoice=False phoneFacsimile=False 8. Open a web browser window, and execute a GetCapababilites request on your WPS service: http://localhost/cgi-bin/zoo_loader.cgi?request=GetCapabilities&service=WPS The response should be displayed in your browser, such as: :: The Zoo WPS Development Server Development version of ZooWPS. See http://www.zoo-project.org WPS GIS buffer WPS 1.0.0 ... .. _win_configure_options: Build options ............. Various build options can be set in the ``nmake.opt`` file to define the location of the built libraries you want to use to build your ZOO-Kernel. Some are optional and some are required, they are listed below exhaustively: .. contents:: :local: :depth: 1 :backlinks: top gettext (Required) ****************** The location of the libintl (built when building gettext) should be specified by defining the ``INTL_DIR`` environment variable. It supposes that the header and the ``intl.lib`` file are available. So for instance, in case you build the gettext in ``\buildkit\srcs\gettext-0.14.6``, you may define the following before running ``nmake /f makefile.vc``: .. code:: set INTL_DIR=\buildkit\srcs\gettext-0.14.6\gettext-runtime\intl libCURL (Required) ****************** The location of the libCURL should be specified by defining the ``CURL_DIR`` environment variable. It supposes that there are 2 sub-directory ``include`` containing the libCURL header and ``lib`` which contains the ``libcurl.lib`` file. So for instance, in case you build the libCURL in ``\buildkit\srcs\curl-7.38.0``, you may define the following before running ``nmake /f makefile.vc``: .. code:: set CURL_DIR=\buildkit\srcs\curl-7.38.0\builds\libcurl-vc10-x86-release-dll-ssl-dll-zlib-dll-ipvs6-sspi libFCGI (Required) ****************** The location of the libFCGI should be specified by defining the ``FCGI_DIR`` environment variable. It supposes that there are 2 sub-directory ``include`` containing the FastCGI header and ``libfcgi/Release`` which contains the ``libfcgi.lib`` file. So for instance, in case you build the libXML2 library in ``\buildkit\srcs\fcgi-2.4.1``, you may define the following before running ``nmake /f makefile.vc``: .. code:: set FCGI_DIR=\buildkit\srcs\fcgi-2.41.1 libXML2 (Required) ****************** The location of the libXML2 should be specified by defining the ``XML2_DIR`` environment variable. It supposes that there are 2 sub-directory ``include`` containing the libXML2 header and ``win32\bin.msvc`` which contains the ``libxml2.lib`` file. So for instance, in case you build the libXML2 library in ``\buildkit\srcs\libxml2-2.9.0``, you may define the following before running ``nmake /f makefile.vc``: .. code:: set XML2_DIR=\buildkit\srcs\libxml2-2.9.0 OpenSSL (Required) ****************** The location of the OpenSSL library should be specified by defining the ``SSL_DIR`` environment variable. It supposes that there are 2 sub-directory ``inc32`` containing the header files and ``out32dll`` which contains the ``ssleay32.lib`` file. So for instance, in case you build the libXML2 library in ``\buildkit\srcs\openssl-1.0.2c``, you may define the following before running ``nmake /f makefile.vc``: .. code:: set SSL_DIR=\buildkit\srcs\openssl-1.0.2c GDAL (Required) ****************** The location of the GDAL library should be specified by defining the ``GDAL_DIR`` environment variable. It corresponds to the path where you uncompress and built GDAL, it supposes that you have the ``gdal_i.lib`` file available in this directory. So for instance, in case you build the libXML2 library in ``\buildkit\srcs\gdal-1.10.1``, you may define the following before running ``nmake /f makefile.vc``: .. code:: set GDAL_DIR=\buildkit\srcs\gdal-1.10.1 MapServer (Optional) ******************** The location of the MapServer library path should be specified by defining the ``MS_DIR`` environment variable. It corresponds to the path where you build MapServer on your system, this directory should contain the ``nmake.opt`` file used. So for instance, in case you build Python in ``\buildkit\srcs\mapserver-6.2.0``, you may define the following before running ``nmake /f makefile.vc``: .. code:: set MS_DIR=\buildkit\srcs\mapserver-6.2.0 Python (Optional) ***************** The location of the Python binaries path should be specified by defining the ``PY_DIR`` environment variable. It corresponds to the path where you build Python on your system. The location of the ``pythonXX.lib`` files should be specified by setting the ``PY_LIBRARY`` environment variable. So for instance, in case you build Python in ``\buildkit\srcs\Python-2.7``, you may define the following before running ``nmake /f makefile.vc``: .. code:: set PY_DIR=\buildkit\srcs\Python-2.7 set PY_LIBRARY=\buildkit\srcs\Python-2.7\PCBuild\python27.lib JavaScript (Optional) ********************* The location of libmozjs should be specified by defining the ``JS_DIR`` environment variable. It corresponds to the path where you build libmozjs on your system, it supposes that the header and the ``mozjs185-1.0.lib`` file are available in this directory. So for instance, in case you build libmozjs in ``\buildkit\srcs\js-1.8.5``, you may define the following before running ``nmake /f makefile.vc``: .. code:: set JS_DIR=\buildkit\srcs\js-1.8.5 PHP (Optional) ***************** The location of PHP should be specified by defining the ``PHP_DIR`` environment variable. It corresponds to the path where you build PHP on your system. The location of the ``php5embed.lib`` files should be specified by setting the ``PHP_LIB`` environment variable. So for instance, in case you build PHP in ``\buildkit\srcs\php-5.5.10``, you may define the following before running ``nmake /f makefile.vc``: .. code:: set PHP_DIR=\buildkit\srcs\php-5.5.10 set PHP_LIB=\buildkit\srcs\php-5.5.10\Release_TS\php5embed.lib Database backend (Optional) *************************** ZOO-Kernel can use a database backend to store ongoing status informations of running services, for activating this operation mode, you should define the evironment variable ``DB`` and set it to any value. So, to activate this option, you may use the following before running ``nmake /f makefile.vc``: .. code:: set DB=activated .. note:: To learn how to setup the corresponding database, please refer to :ref:`this section `. Optionally Compile Individual Services ............................................................. An example could be the *OGR base-vect-ops* provider located in the ``zoo-project\zoo-services\ogr\base-vect-ops`` directory. 1. First edit the *makefile.vc* located in that directory, and execute: :: nmake /f makefile.vc Inside that same directory, the *ogr_service.zo* file should be created. 2. Copy all the files inside ``zoo-services\ogr\base-vect-ops\cgi-env`` into your ``cgi-bin`` directory 3. Test this service provider through the following URL: http://localhost/cgi-bin/zoo_loader.cgi?request=Execute&service=WPS&version=1.0.0&Identifier=Buffer&DataInputs=BufferDistance=1@datatype=interger;InputPolygon=Reference@xlink:href=http%3A%2F%2Fwww.zoo-project.org%3A8082%2Fgeoserver%2Fows%3FSERVICE%3DWFS%26REQUEST%3DGetFeature%26VERSION%3D1.0.0%26typename%3Dtopp%3Astates%26SRS%3DEPSG%3A4326%26FeatureID%3Dstates.15 The response displayed in your browser should contain: :: Service "Buffer" run successfully.