Installation
Install from Conda-Forge (suggested)
Create an Anaconda environment named ravenwps-env:
$ conda env create -n ravenwps-env python=3.7
$ source activate ravenwps-env
This should now prepend the environment to your shell commands (ie: (ravenwps-env) $). Now install directly from conda-forge:
(ravenwps-env) $ conda install -c conda-forge raven-wps
Install from GitHub
Check out code from the Raven GitHub repo and start the installation:
$ git clone https://github.com/Ouranosinc/raven.git
$ cd raven
Environment Setup with Anaconda (macOS/Linux)
Create Conda environment named raven:
$ conda env create -n ravenwps-env -f environment.yml
# or alternatively,
$ make conda_env
The environment can then be activated with:
$ source activate ravenwps-env
This should now prepend the environment to your shell commands (ie: (ravenwps-env) $).
Environment Setup using System Libraries and Sources (Linux)
Warning
This approach is not formally supported, but is presently working for the time being. It is up to the user to install the raven model and ostrich model optimization binaries. Those can be downloaded from source via the following links:
Note
While the following shows how to install raven for an Deb-based Linux, if the OS-equivalent dependencies are available to Python, raven should be able to run on any modern operating system (macOS/Windows/*nix).
First we need to install several system libraries that RavenWPS and RavenPy depend upon and make a virtual environment:
$ sudo apt-get install libhdf5-dev netcdf-bin libnetcdf-dev libgdal-dev libproj-dev libgeos-dev libspatialindex-dev python3-dev
$ pip3 install virtualenv
$ virtualenv ravenwps-env
$ . ravenwps-env/bin/activate
We then need to install the ravenpy python library from sources:
(ravenwps-env) $ git clone https://github.com/CSHS-CWRA/RavenPy/
(ravenwps-env) $ pip install RavenPy/.[gis]
(ravenwps-env) $ pip install RavenPy/. --verbose --install-option="--with-binaries"
If we want to perform an interactive/editable installation for dev purposes, substitute the following for the final installation command:
(ravenwps-env) $ pip install -e RavenPy/. --verbose --install-option="--with-binaries"
Installing and Launching RavenWPS
Now we can install the raven-wps service:
(ravenwps-env) $ pip install -e .
# or alternatively,
(ravenwps-env) $ make install
For development you can use this command:
(ravenwps-env) $ pip install -e .[dev]
# or alternatively,
(ravenwps-env) $ make develop
Then clone the Raven Test Data repo somewhere on your disk:
(ravenwps-env) $ git clone https://github.com/Ouranosinc/raven-testdata.git
You can then run the test suite by doing:
(ravenwps-env) $ export RAVENPY_TESTDATA_PATH=/path/to/raven-testdata
(ravenwps-env) $ pytest
Start Raven PyWPS service
After successful installation you can start the service using the raven
command-line.
(ravenwps-env) $ raven-wps --help # show help
(ravenwps-env) $ raven-wps start # start service with default configuration
# or alternatively,
(ravenwps-env) $ raven-wps start --daemon # start service as daemon
loading configuration
forked process id: 42
The deployed WPS service is by default available on:
http://localhost:9099/wps?service=WPS&version=1.0.0&request=GetCapabilities.
You can find which process uses a given port using the following command (here for port 5000):
$ netstat -nlp | grep :5000
Check the log files for errors:
$ tail -f pywps.log
… or do it the lazy way
You can also use the Makefile
to start and stop the service:
(ravenwps-env) $ make start
(ravenwps-env) $ make status
(ravenwps-env) $ tail -f pywps.log
(ravenwps-env) $ make stop
You can also run Raven as a Docker container.
Use Ansible to deploy Raven on your System
Use the Ansible playbook for PyWPS to deploy Raven on your system.