= !HowTo Install ZOO-Kernel on CentOS 5.5 = This documentation was done thanks to Guillaume Sueur from Neogeo Technologies which takes time to test installing the ZOO-Kernel on CentOS 5.5 environment. == Requirements == Installing some standard tools to be able to run ZOO-Kernel on your platform : {{{ #!sh yum install apache2 yum install build-essentials yum install gcc-c++ yum install zlib-devel yum install libxml2-devel yum install bison yum install openssl yum install python-devel yum install subversion }}} Compile then install FastCGI library from source {{{ #!sh wget http://www.fastcgi.com/dist/fcgi.tar.gz tar xzf fcgi-2.4.0.tar.gz ./configure make make install echo /usr/local/lib >> /etc/ld.so.conf.d/local.conf ldconfig }}} Compile then install the autoconf tools : {{{ #!sh wget http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz tar xzf autoconf-latest.tar.gz ./configure --prefix=/usr make make install }}} Compile then install the flex tool : {{{ #!sh wget http://downloads.sourceforge.net/project/flex/flex/flex-2.5.35/flex-2.5.35.tar.gz?r=http%3A%2F%2Fflex.sourceforge.net%2F&ts=1292529005&use_mirror=switch tar xzf flex-2.5.35.tar.gz cd flex-2.5.35 ./configure --prefix=/usr make make install }}} Using the curl providen in the CentOS distribution will produce ZOO-Kernel unable to run any Service. Indeed, some segmentation fault occurs when trying to run {{{Execute}}} request on the ZOO-Kernel, compiling the ZOO-Kernel seting {{{USE_GDB}}} flag in the {{{CFLAGS}}} of your {{{Makefile}}} will let you run ZOO-Kernel from gdb and be able to get more information on what is going wrong with your ZOO-Kernel. Doing this we can figure out that code on line [browser:trunk/zoo-kernel/ulinet.c#L173 173] and line [browser:trunk/zoo-kernel/ulinet.c#L175 175] have to be commented in the {{{ulinet.c}}} file to get a ZOO-Kernel working using the curl available in CentOS (curl version 7.15.5). If you don't apply the modification, you will get an error from a gdb session pointing segfault in {{{Curl_cookie_clearall}}}. As the curl segfault, you can compile then install curl from source : {{{ #!sh wget http://curl.haxx.se/download/curl-7.21.3.tar.bz2 tar xjf curl-7.21.3.tar.bz2 cd curl-7.21.3 ./configure --prefix=/usr make make install }}} Compile then install Python : {{{ #!sh wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tar.bz2 tar xjf Python-2.6.6.tar.bz2 cd Python-2.6.6 ./configure make make install }}} Compile then install your own GDAL library : {{{ #!sh wget http://download.osgeo.org/gdal/gdal-1.7.3.tar.gz tar xzf gdal-1.7.3.tar.gz cd gdal-1.7.3 ./configure # add your options here make make install }}} Install the Sun JAVA SDK into {{{/usr/share}}} then use the following command to ensure that the {{{libjvm.so}}} will be found at runtime from any context. {{{ #!sh echo /usr/share/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/client/ >> /etc/ld.so.conf.d/jvm.conf ldconfig }}} == Compile ZOO-Kernel and ZOO-Services == Compile then install ZOO-Kernel and your first ZOO-Services. First of all, compile the cgic library providen in the SVN source tree: {{{ #!sh svn co http://svn.zoo-project.org/svn/trunk zoo-project cd zoo-project/thirds/cgic206 make }}} Compile then install ZOO-Kernel. {{{ #!sh cd ../../zoo-kernel ./configure --with-java=/usr/share/jdk1.6.0_23/ --with-python make zoo_loader.cgi cp main.cfg /var/www/cgi-bin/ cp zoo_loader.cgi /var/www/cgi-bin/ }}} Compile then deploy your first ZOO-!ServicesProviders (simple !HelloPy - line 1 and 2- and the OGR base-vect-ops !ServiceProvider - line 3 to 6): {{{ #!Lineno #!c cp ../zoo-services/hello-py/cgi-env/*.zcfg /var/www/cgi-bin/ cp ../zoo-services/hello-py/test_service.py /var/www/cgi-bin/ cd ../ogr/base-vect-ops/ make cp ./cgi-env/* /var/www/cgi-bin/ vi /var/www/cgi-bin/main.cfg --> set your own informations here }}} To ensure that the libjvm.so will be found from apache, please restart it : {{{ #!sh /etc/init.d/httpd restart }}} == Testing your ZOO-Kernel == Testing your ZOO-Kernel from command line. {{{ #!sh cd /var/www/cgi-bin ./zoo_loader.cgi "request=Execute&service=WPS&version=1.0.0&Identifier=HelloPy&DataInputs=a=Djay" ./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&RawDataOutput=Result@mimeType=application/json" }}}