WCS Wrapper Installation LinuxOP
Last updated 2010-12-13
Things to Consider About Security
The web.py framework and WCS service code has been written with security in mind, and there are no known security bugs. There is little code that writes on the disk, so running this service should not put your computer in danger.
To maximize the security of your computer, consider the following.
- Every file in every directory you put under OWS/web/static becomes readable by anybody. This is by design, since the whole framework is meant to publish public data. Do not put confidential information under OWS folder!
- Don't run the process as root. Create a low-rights account like WCS_RUNNER and use that.
Do you want to install as public or private?
The place to install is usually by default:
Installing to this directory, you will make the software packages available for everyone in that computer. It will also overwrite older versions, which is usually desirable but contains risks, or overwrite newer versions, which is usually not desirable. You need root privileges to install to /usr/local
Anyway, overwriting anything may break some other software, so in that case it is recommended to install somewhere else and not make the package automatically public. In that case, you don't need root privileges.
Get Python 2.6.6
Since python is usually installed in posix-like systems, this step may be skipped. Other versions of python 2.x may work, but python 3.x won't yet.
32 bit as well as 64 bit installations have been done and work as expected. This is more of an issue for 3rd party software in any case, so make sure you install the correct versions of the required packages (as far as they contain compiled code) or python might not be able to load them.
Install with command
# ./install.sh -I /usr/local
Warning: This will overwrite your existing python. It may or may not be OK to upgrade, but hardly good to downgrade. You can install several versions of python in the same machine and then edit your environment variables to use the desired version.
Get easy_install for python
# sh setuptools-0.6c11-py2.6.egg
Get the Datafed WCS Wrapper
A good place to install is /usr/local/OWS but any other is OK.
If you have modified the default OWS/web/static/index.html, make sure not to overwrite' it. Keep the main copy elsewhere and copy it back.
Open the download page in another tab.
If you are serving cubes from NetCDF files, get linux-ows-1.3.1.zip or later. This distribution contains point data support also. If you are serving only point data, you can just download ows-point-1.3.1.zip.
ows-point-1.3.1.zip = (linux-ows-1.3.1.zip) - (netcdf support) + (sample point provider)
Move the contents of the directory linux-ows-1.3.1 to OWS. You can install to other directories, this is just used as an example.
You will to have directories OWS/datafed and OWS/web
The directory datafed contains datafed package, which contains tools for ISO 8601 time parsing and some other utilities. Web is the WCS framework.
Using C based libraries enables delivering large amounts of data efficiently. Python is used only for query parsing, making minimal impact in speed.
Although the built-in webserver is intended mainly for development, you can use it to serve data from your own workstation just fine. For high load sites, look webpy.org/install documentation how to integrate webpy with apache server etc.
Get 3rd Party Components
Install webpy 0.34 or newer.
More detailed instructions are at webpy download.
Install lxml 2.2.8 or 2.3.x
In this case, Red Hat 4.1.1-52, the command installed 2.3.beta1
More detailed instructions are at lxml installation instructions.
Install numpy 1.5.1 from Numpy Files. Currently there is no easy_install.
Linux testing is done with 1.5.1, but if you have 1.4.1 installed, it should work. The commands issued were:
wget http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/numpy-1.5.1.tar.gz/download tar xvf numpy-1.5.1.tar.gz cd numpy-1.5.1 python setup.py install
If you don't have a fortran compiler installed, for example gfortran on Debian, you will get warnings. You can ignore them, since fortran is not used.
Choose your operating system from list of PyNIO binaries, write down the file name you want to download.
Then download PyNIO Version 1.4.0, Choose PyNIO Version 1.4.0 precompiled binaries, OPeNDAP-enabled. Click on Download files for this collection and Accept license. You'll get a list of different supported systems,
This version of PyNIO is compiled with 4.1.1 which has a known bug which occurs if all of the following conditions are true:
- writing a variable of any type with more than 2**32 values
- the variable must have 2 or more dimensions
- the platform on which the file is written must be 32-bit
- the file can be either classic format or 64-bit offset format
- the values to be written must begin beyond the first 2**32 values
In this case, a file offset is computed for writing using 32-bit arithmetic for a multiply, but it should be using 64-bit arithmetic. This results in an undetected integer overflow and can overwrite data earlier in the file, without an error or warning.
This has been fixed in 4.1.2 beta 1. If you need to process very large files, you need to compile PyNIO yourself using netcdf-4.1.2-beta1 or later.
WsgiLog (0.1) is optional, only if you want to log webpy output to a file.
Install and Start the OWS Server
- Unpack to your desired working directory. These instructions assume that your working directory is /usr/local/, and these instructions assume you unzipped to /usr/local/OWS directory.
- Add the path of the extracted OWS directory to your PYTHONPATH environment variable.
- IIf you followed the above example, PYTHONPATH should contain /usr/local/OWS to find the OWS/datafed package.
- Go to OWS/web and execute python ows.py and a server should be running on http://localhost:8080/ ready to be used.
- A different port can be passed to the server as an argument, python ows.py 8601 is used in the test code, don't use it.
- You will have to create the log directory /var/log/ows (lowercase ows!) before running the server for the first time.
- If the server is not being run as root, the user that runs it needs write access to the log directory.
- You can stop the server by pressing ctrl-c in the console window.
- To make the server available automatically at boot time, you can use an init script, an example script that starts the OWS server in a screen session as another user is available here.
- Typescript of installation on fresh and minimal Debian stable is here.
Putting your data into CF Compatible NetCDF Files
(Not required in point) This is for getting the demo run only.
How to use the wrapper libraries can be found in related page Creating NetCDF-CF Files.
Setting up the demo dataset:
OWS/web/static/testprovider/ contains files:
- CubeA.ncml is a NetCDF Markup Language description of the test coverage, same for teh rest of the .ncml files. The .nc files are files that are created from using the ncml as instructions.
- create_all.py is a script that creates the empty cube files and then fills it with test data. It servers as an example code how to create your own CF 1.0 compatible files. It has no user interface, just run it.
So do the following:
cd /usr/local/OWS/web/static/testprovider python create_all.py
Now you have data to serve.
The metadata queries of WCS, GetCoverage and DescribeCoverage need to be precompiled.
Run the following commands:
cd /usr/local/OWS/web python owsadmin.py wcs_prepare -o testprovider
or to extract metadata for all the providers:
python owsadmin.py wcs_prepare -ao
-o is for optimize, -a prepares every provider
it will create file /usr/local/OWS/web/static/testprovider/metadata.dat.
Press ctrl+C to terminate the server. Although this server is intended for development and debugging only, you can use it to server data from your own workstation just fine. For high load sites, look webpy.org/install documentation how to set up a high load site.
Where to go next
See Windows Installation for some platform-neutral information about installation.
How to create data for serving is documented at WCS Wrapper Configuration