Installation

Install from Conda

Warning

TODO: Prepare Conda package.

Install from GitHub

Check out code from the c4cds-wps GitHub repo and start the installation:

$ git clone https://github.com/cp4cds/c4cds-wps.git
$ cd c4cds

Create Conda environment named c4cds:

$ conda env create -f environment.yml
$ source activate c4cds

Install c4cds-wps app:

$ pip install -e .
OR
make install

For development you can use this command:

$ pip install -e .[dev]
OR
$ make develop

Start c4cds-wps PyWPS service

After successful installation you can start the service using the c4cds command-line.

$ c4cds --help # show help
$ c4cds start  # start service with default configuration

OR

$ c4cds start --daemon # start service as daemon
loading configuration
forked process id: 42

The deployed WPS service is by default available on:

http://localhost:5000/wps?service=WPS&version=1.0.0&request=GetCapabilities.

Note

Remember the process ID (PID) so you can stop the service with kill PID.

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:

$ make start
$ make status
$ tail -f pywps.log
$ make stop

Run c4cds-wps as Docker container

You can also run c4cds-wps as a Docker container.

Warning

TODO: Describe Docker container support.

Use Ansible to deploy c4cds-wps on your System

Use the Ansible playbook for PyWPS to deploy c4cds-wps on your system. Here we show an example for remote deployment.

Get the playbook:

$ git clone https://github.com/bird-house/ansible-wps-playbook.git
$ cd ansible-wps-playbook
# install roles
$ ansible-galaxy -p roles -r requirements.yml install

Edit config:

$ cp etc/sample-emu.yml custom.yml
$ vim custom.yml

Make sure to configure the extra parameters for the data archive:

---
wps_user: wps
wps_group: wps
wps_services:
  - name: c4cds
    hostname: wpsdemo
    port: 80
    extra_config: |
      [data]
      c3s_cmip5_archive_root = /data/c3s-cmip5/output1
      cordex_archive_root = /data/cordex/output

Add an inventory file for remote deployment:

$ vim wpsdemo.cfg
$ cat wpsdemo.cfg
wpsdemo ansible_ssh_user=ansible

Run ansible for remote deployment:

$ ansible-playbook --ask-sudo-pass -i wpsdemo.cfg playbook.yml