.. image:: https://img.shields.io/pypi/v/geokey.svg :alt: PyPI Package :target: https://pypi.python.org/pypi/geokey
.. image:: https://img.shields.io/travis/ExCiteS/geokey/master.svg :alt: Travis CI Build Status :target: https://travis-ci.org/ExCiteS/geokey
.. image:: https://coveralls.io/repos/ExCiteS/geokey/badge.svg?branch=master&service=github :alt: Coveralls Test Coverage :target: https://coveralls.io/github/ExCiteS/geokey?branch=master
.. image:: https://requires.io/github/ExCiteS/geokey/requirements.svg?branch=master :alt: Requirements Status :target: https://requires.io/github/ExCiteS/geokey/requirements/?branch=master
GeoKey is a platform for participatory mapping, that is developed by Extreme Citizen Science <http://ucl.ac.uk/excites>
_ research group at University College London.
Download and install Docker CE <https://www.docker.com/community-edition#download>
_ for your platform. This will include the docker-compose
command used below. (Note that when using Ubuntu, most of these commands need to be run as root or prefixed with sudo).
.. code-block:: console
docker-compose up --build
.. code-block:: console
docker-compose exec geokey python manage.py migrate
.. code-block:: console
docker-compose exec geokey python manage.py collectstatic --noinput
.. code-block:: console
docker-compose exec geokey python manage.py runserver 0.0.0.0:8000
If everything went well, there should be a GeoKey instance available on your system at http://localhost:9000
.
For development purposes, the source code is also mounted as a volume in the geokey
container, which means that changes made to the source code on the host machine are reflected in the container.
In order for Grunt to compile the Handlebars templates within the container, in a new terminal window run:
.. code-block:: console
docker-compose exec geokey npm run grunt
Updated documentation: The following link will direct you to the updated guide that aims to install GeoKey on a cloud server running on a Ubuntu machine, specifically version 18.04 that will be supported until 2028. This documentation aims to simplify the processes as much as possible to make it suitable for everyone including non-technical people not familiar with Python / Linux environment but keen on running GeoKey on their own cloud servers. https://github.com/ExCiteS/geokey/blob/master/GeoKey_updated_documentation.pdf
For advanced users, please follow below.
GeoKey can be run on Python 2.7 or Python 3 (Geokey 1.8 onwards).
.. code-block:: console
sudo apt-get update && sudo apt-get upgrade
official guides <http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS21UbuntuPGSQL93Apt>
_):.. code-block:: console
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt wheezy-pgdg main" >> /etc/apt/sources.list'
wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.4-postgis-2.1 postgresql-contrib postgresql-server-dev-9.4
Note that for Ubuntu 16.04, you don't need to add the repo and can install 9.5:
.. code-block:: console
sudo apt-get install postgresql-9.5-postgis-2.2 postgresql-contrib postgresql-server-dev-9.5
.. code-block:: console
sudo apt-get install python-pip python-virtualenv python-dev libjpeg-dev libmagickcore-dev libmagickwand-dev imagemagick binutils libproj-dev libav-tools gdal-bin python-gdal
Change ImageMagick permissions for it to be able to write:
sed -i 's/\(<policy domain="coder" rights=\)"none" \(pattern="PDF" \/>\)/\1"read|write"\2/g' /etc/ImageMagick-6/policy.xml
For Ubuntu you might also need to install libavcodec-extra-52 or libavcodec-extra-53.
For Ubuntu 18.04 you may have to use the following advice <https://askubuntu.com/a/1070698/89097>
_ if installing libav-tools doesn't work and you can't find avconv.
.. code-block:: console
sudo su - postgres
.. code-block:: console
psql -d template1 -c 'create extension hstore;'
.. code-block:: console
psql
.. code-block:: console
postgres=# CREATE USER django WITH PASSWORD 'django123';
.. code-block:: console
postgres=# ALTER ROLE django WITH superuser;
.. code-block:: console
postgres=# CREATE DATABASE geokey OWNER django;
.. code-block:: console
postgres=# \q
psql -d geokey
.. code-block:: console
geokey=# CREATE EXTENSION postgis;
geokey=# CREATE EXTENSION hstore;
.. code-block:: console
geokey=# \q
logout
.. code-block:: console
git clone https://github.com/ExCiteS/geokey.git
.. code-block:: console
cd geokey
pip install -e .
pip install -r requirements.txt
pip install -r requirements-dev.txt
You may need to add sudo before the pip commands, unless you are logged in as root or working within a virtual environment.
.. code-block:: console
cp -r local_settings.example local_settings
Add your database settings <https://docs.djangoproject.com/en/1.11/ref/settings/#databases>
_:
.. code-block:: python
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'geokey',
'USER': 'django',
'PASSWORD': 'xxxxxxxxx',
'HOST': 'host', # usually 'localhost'
'PORT': ''
}
}
Set the secret key <https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-SECRET_KEY>
_:
.. code-block:: python
SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
Set the STATIC_ROOT directory <https://docs.djangoproject.com/en/1.11/howto/static-files/#deployment>
_:
.. code-block:: python
STATIC_ROOT = '/some/path/'
.. code-block:: console
python manage.py migrate
.. code-block:: console
python manage.py createsuperuser
.. code-block:: console
python manage.py collectstatic
.. code-block:: console
python manage.py runserver 0.0.0.0:8000
.. code-block:: console
python manage.py test
Running tests will remove all uploaded images of contributions from the assets directory. If you require to keep them, please use custom test settings with a --settings flag.
GeoKey was built using some amazing open-source technology. We would like to thank all contributors to these projects:
Django <https://www.djangoproject.com/>
_django-rest-framework <http://www.django-rest-framework.org/>
_django-rest-framework-gis <https://github.com/djangonauts/django-rest-framework-gis>
_django-hstore <https://github.com/djangonauts/django-hstore>
_django-braces <https://github.com/brack3t/django-braces>
_django-pgjson <https://github.com/djangonauts/django-pgjson>
_django-allauth <https://github.com/pennersr/django-allauth>
_django-oauth-toolkit <https://github.com/evonove/django-oauth-toolkit>
_django-model-utils <https://github.com/carljm/django-model-utils>
_django-simple-history <https://github.com/treyhunner/django-simple-history>
_django-aggregate-if <https://github.com/henriquebastos/django-aggregate-if>
_django-youtube <https://github.com/laplacesdemon/django-youtube>
_psycopg2 <http://initd.org/psycopg/>
_iso8601 <https://bitbucket.org/micktwomey/pyiso8601>
_pillow <http://python-pillow.github.io/>
_django_nose <https://github.com/django-nose/django-nose>
_pytz <http://pytz.sourceforge.net/>
_gdata <https://code.google.com/p/gdata-python-client/>
_easy-thumbnails <https://github.com/SmileyChris/easy-thumbnails>
_moment <https://github.com/zachwill/moment>
_requests <http://docs.python-requests.org/en/latest/>
_factory-boy <http://factoryboy.readthedocs.org/en/latest/>
_Handlebars <http://handlebarsjs.com>
_Modernizr <https://modernizr.com>
_Leaflet <http://leafletjs.com/>
_Leaflet.Draw <https://github.com/Leaflet/Leaflet.draw>
_jQuery <http://jquery.com/>
_Bootstrap <http://getbootstrap.com/>
_bootstrap-colorpicker <https://mjolnic.com/bootstrap-colorpicker/>
_bootstrap-datetimepicker <https://eonasdan.github.io/bootstrap-datetimepicker/>
_bootstrap-fileinput <https://github.com/kartik-v/bootstrap-fileinput>
_