Before starting work on the GeoNode, you will need to have the following software installed and in your PATH:
The git command-line client, version 1.5.3 or higher: - To verify that it is available, run
git --versionand verify the
version is something like
git version 220.127.116.11
- If not, you can download one of the installers from http://git-scm.com/ or from your operating system provider.
The Subversion command-line client, version 1.5 or higher. - To verify that is is available, run
svn --versionand verify the output
starts with something like
svn, version 1.6.9 (r901367)
- If not, you can find the appropriate installer at http://subversion.apache.org/packages.html
The GEOS geometry handling library: http://trac.osgeo.org/geos/
The GDAL geographic raster access library: http://www.gdal.org/
The OGR geographic vector data access library: http://www.gdal.org/ogr/
Sun Java Development Kit 1.5 or Higher: - To verify that it is available, run
javac -help -versionand verify that it reports a list of usage flags, ending with a line like
javac 1.5.0_18(the numbers will vary with your installed version).
- If not, download from http://java.sun.com/javase/downloads/index.jsp (Make sure to install the JDK!)
Python 2.6: - To verify that it is available, run
python --versionand verify that it reports a version number like
- If not, download from http://python.org/download/
- Python must be compiled w/ SSL support and sqlite support to support the geonode development setup. Installing the sqlite and openssl development headers before building Python will suffice.
Apache Maven 2.0.10 or Later: - To verify that it is available, run
mvn -versionand verify that it reports version information like:
Maven version: 2.0.10 Java version: 1.5.0_18 OS name: "linux" version: "18.104.22.168-64.fc11.x86_64" arch: "amd64" Family: "unix"
- If not, download from http://maven.apache.org/download.html
Additionally, GeoNode uses a number of native-code libraries in Python. You can install these libraries manually, or allow the GeoNode setup script to compile them for you. In the latter case, you will need to install a C compiler such as GCC, as well as any requisite development libraries. GCC packages are available for Mac OSX and all Linux distributions; consult your operating system provider for installation instructions.
The native libraries needed include:
- PIL http://www.pythonware.com/products/pil/
- ReportLab http://www.reportlab.com/software/opensource/rl-toolkit/
- simplejson http://code.google.com/p/simplejson/
For GCC, packages are available for Mac OSX and all Linux distributions; consult your operating system provider for installation instructions. When build PIL from source, ensure that you have development libraries available for libpng, libjpeg, and libgif if you want to be able to use those formats in your GeoNode site.
The following steps should prepare a Python virtual environment for you:
git clone git://github.com/GeoNode/geonode.git geonode cd geonode git submodule update --init python bootstrap.py --no-site-packages # see note below source bin/activate paver build django-admin.py createsuperuser --settings=geonode.settings paver host
Once fully started, you should see a message indicating the address of your geonode:
Development GeoNode is running at http://localhost:8000/ The GeoNode is an unstoppable machine Press CTRL-C to shut down
python bootstrap.py the
--no-site-packages option is
not required. If enabled, the bootstrap script will sandbox your virtual
environment from any packages that are installed in the system, useful if
you have incompatible versions of libraries such as Django installed
system-wide. On the other hand, sometimes it is useful to use a version of
ReportLab or the Python Imaging Library provided by your operating system
vendor, or packaged other than on PyPI. When in doubt, however, just leave
this option in.
django-admin.py createsuperuser --settings=geonode.settings
can be used to create additional administrative user accounts. The administrative control panel is not linked from the main site, but can be accessed at http://localhost:8000/admin/
Get and run geonode-client:
$ git clone git://github.com/GeoNode/geonode-client.git geonode-client $ cd geonode-client $ ant init debug
Set the GEONODE_CLIENT_LOCATION entry in :file:`src/geonode/settings.py` to
http://localhost:8080/and run paver as described above.
Note that this requires ant (http://ant.apache.org/) in addition to the above build requirements.
To test the application in different browsers in VirtualBox guests, the
following needs to be done before running
Start the guest in VirtualBox. Set the network adapter mode to "Host-only adapter". Then set it back to "NAT".
On the host, do ifconfig and write down the IP address of the vboxnet0 adapter.
Edit :file:`src/GeoNodePy/geonode/settings.py` and change the line:
to use the IP address you have written down above:
To start the web server, run:
$ paver host -b 192.168.56.1
Now GeoNode is available in your browser at http://192.168.56.1:8000/
For Java Developers
How GeoNode Finds GeoServer
Java Developers can point the application at a particular GeoServer instance by setting the GEOSERVER_BASE_URL entry in settings.py to the context path of the GeoServer instance. This should include the trailing slash. For example, the GeoServer used for http://geonode.capra.opengeo.org/ is:
The default value is
http://localhost:8001/geoserver/. The GeoServer module
in :file:`src/geonode-geoserver-ext/` is configured to provide a GeoServer
instance at that port with the following commands:
cd src/geonode-geoserver-ext/ sh startup.sh
mvn jetty:run-war would be sufficient. However, we use the
shell script to add some extra parameters to the JVM command-line used to
run Jetty in order to workaround a JVM bug that affects GeoNetwork.
If you want to change this service URL, edit :file:`src/geonode/settings.py` and change the line:
to indicate the GeoServer URL that you want to use.
To run the Django app when Jetty is started independently, use:
paster serve --reload shared/dev-paste.ini
in the base of your working directory.
Alternative GeoServer Data Directories
This server defaults to using :file:`gs-data/` as the data directory by default.
If you need you need to use an alternative data directory, you can specify it
startup.sh to specify a different data directory:
Adding an email gateway to GeoNode can be very useful, the two main reasons are
REGISTRATION_OPEN settings explained below.
Here is a sample configuration to setup a Gmail account as the email gateway:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = 'firstname.lastname@example.org' EMAIL_HOST_PASSWORD = 'bar' EMAIL_PORT = 587 EMAIL_USE_TLS = True
More informacion can be found in the django docs:
DEBUG=False django will not display the usual error page, but will
email the people in the ADMINS tuple with the error traceback:
ADMINS = ( ('Carlos Valderrama', 'email@example.com'), ('Diego Maradona', 'firstname.lastname@example.org'), )
In order to let people autoregister to the GeoNode, set:
This needs email to be configured and your website's domain name properly set in the Sites application (the default is example.com):
To automatically import uploaded shapefiles to a PostGIS database, open the settings.py file and set 'DB_DATASTORE' to 'True'. Then assign the appropriate connection values to the other DB_DATASTORE_* settings below it:
DB_DATASTORE_NAME = '<Name of your PostGIS database>' DB_DATASTORE_USER = '<Database user name>' DB_DATASTORE_PASSWORD = '<Database user password>' DB_DATASTORE_HOST = '<Database hostname (typically localhost)' DB_DATASTORE_PORT = '<Database port (typically 5432)>' DB_DATASTORE_TYPE='postgis'
docs/ - ? I think this is to help paver find our docs so whit doesn't have to maintain two checkouts to build them.
hazard.json - a data dump for the hazard categories
package - this directory is where distributable bundles of the GeoNode pieces end up (in theory? I don't think we used this for the most recent deployment)
pavement.py - the main build script for everything
paver-minilib.zip - a zip archive of the paver library used by pavement.py
setup.py - a shim to make the entire GeoNode source tree look like a Python package. This probably should not be there since our Python modules have their own source tree with a setup.py now.
shared/ - where "build configuration" lives. This includes some dependency lists for the Python modules and stuff like the ini file with the location of the sample data archive.
src/ - where the source code for the actual project lives. This is divided up like so:
- GeoNodePy/ - the Python/Django modules. Inside, geonode/ is the "core" and capra/ contains CAPRA-specific extensions.
- geoserver-geonode-ext/ - the GeoServer extensions used by the GeoNode. Actually, the build script for this project is set up to create a WAR that includes those extensions, not just a bundle with the extension.
GeoNode is Copyright 2010 OpenPlans.
GeoNode is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
GeoNode is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with GeoNode. If not, see <http://www.gnu.org/licenses/>.