.. -*- coding: utf-8 -*-
============
Installation
============
:Author: Étienne Loks
:date: 2012-11-28
:Copyright: CC-BY 3.0
This document presents the installation of Chimère.
It has been updated for version 2.0.0.
Prerequisites
*************
- `Apache `_ version 2.x
- `Python `_ versions 2.6 or 2.7
- `Django `_ >= version 1.4
- `South `_
- `Postgres `_ >= version 8.x
- `Gettext `_
- `Psycopg2 `_
- `Python Imaging Library `_
- `Pyexiv2 `_
- `Beautiful Soup `_
- python-simplejson
- python-gdal
- `Lxml `_
- `Jquery `_ version 1.7.1 or better
- `Jquery-ui `_
- `Universal Feed Parser `_
geodjango is a part of django since version 1.0 but it has some specific
(geographically related) additional dependencies:
- `geos `_ 3.0.x
- `proj.4 `_ 4.4 to 4.6
- `postgis `_ versions 1.2.1 or 1.3.x
- `gdal `_
Optionaly (but recommanded):
- `tinymce `_
- `gpsbabel `_
- django-celery if you want to manage large imports
The simpliest way to obtain these packages is to get them from your favorite
Linux distribution repositories. For instance on Debian Wheezy::
apt-get install apache2 python python-django python-django-south \
postgresql-9.1 gettext python-psycopg2 python-imaging \
python-pyexiv2 python-beautifulsoup python-simplejson python-gdal \
python-lxml libjs-jquery libjs-jquery-ui python-feedparser \
libgeos-3.3.3 proj-bin postgresql-9.1-postgis gdal-bin \
tinymce gpsbabel python-django-celery javascript-common
On Debian Squeeze (you need to activate backports)::
apt-get install -t squeeze-backports python-django libjs-jquery
apt-get install apache2 python python-django python-django-south \
postgresql-8.4 gettext python-psycopg2 python-imaging \
python-pyexiv2 python-beautifulsoup python-simplejson python-gdal \
python-lxml libjs-jquery libjs-jquery-ui python-feedparser \
libgeos-3.2.0 proj-bin postgresql-8.4-postgis gdal-bin \
tinymce gpsbabel javascript-common
The package *python-django-celery* doesn't exist for Debian Squeeze.
If these packages do not exist in your distribution's repository, please refer
to the applications' websites.
Database configuration
**********************
Now that postgres and postgis are installed, you need to create a new user for
Chimère::
su postgres
createuser --echo --adduser --createdb --encrypted --pwprompt chimere-user
Then, you have to create the database and initialize the geographic types (adapt
the paths accordingly to your needs)::
PG_VERSION=9.1 # 8.4 for debian Squeeze
createdb --echo --owner chimere-user --encoding UNICODE chimere "My Chimère database"
createlang plpgsql chimere # only necessary on Debian Squeeze
psql -d chimere -f /usr/share/postgresql/$PG_VERSION/contrib/postgis-1.5/postgis.sql
psql -d chimere -f /usr/share/postgresql/$PG_VERSION/contrib/postgis-1.5/spatial_ref_sys.sql
Installing the sources
**********************
.. Note::
If you are considering to contribute on Chimère get the Git master.
Choose a path to install your Chimère::
INSTALL_PATH=/var/local/django
mkdir $INSTALL_PATH
From an archive
+++++++++++++++
The last "stable" version is available in this `directory `_.
Take care of getting the last version in the desired X.Y branch (for instance
the last version for the 1.0 branch is version 1.0.2).::
wget http://www.peacefrogs.net/download/chimere -q -O -| html2text
(...)
[[ ]] chimere-1.0.0.tar.bz2 17-Nov-2010 16:51 53K
[[ ]] chimere-1.0.1.tar.bz2 17-Nov-2010 16:51 53K
[[ ]] chimere-1.0.2.tar.bz2 17-Nov-2010 16:51 53K
(...)
wget http://www.peacefrogs.net/download/chimere/chimere-1.0.2.tar.bz2
Download, unpack and move the files in an apache user (www-data for Debian)
readable directory::
cd $INSTALL_PATH
tar xvjf chimere-last.tar.bz2
chown -R myusername:www-data chimere
From the Git repository
+++++++++++++++++++++++
Another solution is to get it from the Git repository::
cd $INSTALL_PATH
git clone git://www.peacefrogs.net/git/chimere
cd chimere
git tag -l # list tagged versions
git checkout v2.0 # checkout the desired version
Creating a custom project template
**********************************
There, a default project is provided (*example_project*). Copy and modify
it (or get another project based on Chimère)::
cd $INSTALL_PATH/chimere
cp -ra example_project mychimere_project
Your project name is used for the name of the Python package of your template.
As a Python package it should follow the rule of Python variable name:
it must contain at least one letter and can have a string of numbers, letters and
underscores ("_") to any length. Don't use accentuated letters. Don't begin the
name by "_" because it has special significance in Python.
In your Chimère application directory create *local_settings.py* to fit to your
configuration.
A base template is provided (*local_settings.py.example*) and short descriptions
of the more relevant fields are given below (at least check them). Most of
these settings are initialized in *settings.py*. ::
cd $INSTALL_PATH/chimere/mychimere_project
cp local_settings.py.sample local_settings.py
vim local_settings.py
:Fields:
* DATABASES: parameters for the database
* PROJECT_NAME: name of the project
* SECRET_KEY: a secret key for a particular Django installation. This is
used to provide cryptographic signing, and should be set to a unique,
unpredictable value. **Change it!**
* ROOT_URLCONF: url configuration for your project something like:
'mychimere_project.urls'
* EMAIL_HOST: smtp of an email server to send emails
* TINYMCE_URL: url to tinymce path (default is appropriate for a Debian
installation with tinymce package installed)
* JQUERY_JS_URLS: list of jquery and jquery-ui javascript urls (default is
appropriate for a Debian installation with libjs-jquery libjs-jquery-ui
packages installed)
* JQUERY_CSS_URLS: list of jquery and jquery-ui CSS urls (default is
appropriate for a Debian installation with libjs-jquery libjs-jquery-ui
packages installed)
* GPSBABEL: path to gpsbabel (default is appropriate for a Debian
installation with gpsbabel package installed)
* TIME_ZONE: local time zone for this installation
* LANGUAGE_CODE: language code for this installation
Manage media path permission::
cd $INSTALL_PATH/chimere/mychimere_project
chown -R user:www-data media
chmod -R g+w media
Create log file::
mkdir /var/log/django
touch /var/log/django/chimere.log
chown -R root:www-data /var/log/django/
chmod -R g+w /var/log/django/
Regroup static files in one path::
cd $INSTALL_PATH/chimere/mychimere_project
./manage.py collectstatic
Compiling languages
*******************
If your language is available in the directory *chimere/locale/*, you will just
need to get it compiled. This can be done with the following command (here,
**fr** stands for French, replace it with the appropriate language code)::
cd $INSTALL_PATH/chimere/chimere/
django-admin compilemessages -l fr
If your language is not available, feel free to create the default po file and
to submit it, contributions are well appreciated. Procedure is as follows:
You first need to create the default po file (of course, replace **fr**
according to the language you choose to create)::
django-admin makemessages -l fr
There should now be a *django.po* file in *locale/fr/LC_MESSAGES*. Complete it
with your translation.
Now that the translation file is completed, just compile it the same way you
would have if the language file was already available.
Database initialisation
***********************
Create the appropriate tables (still being in your Chimère project directory)::
cd $INSTALL_PATH/chimere/mychimere_project
./manage.py syncdb
You will be prompted for the creation of an administrator account
(administration can be found at: http://where_is_chimere/admin/). Then you have
to create tables managed with Django-South::
./manage.py migrate
The database is set, congratulations!
You can load the default group permissions (it is at least a good start)::
./manage.py loaddata ../chimere/fixtures/auth_group.json
If you want to populate your installation with default data (don't do this on
an already populated instance!)::
./manage.py loaddata ../chimere/fixtures/default_data.json
Webserver configuration
***********************
Apache configuration with mod_wsgi
++++++++++++++++++++++++++++++++++
Install *mod_wsgi* for Apache::
apt-get install libapache2-mod-wsgi
Create and edit a configuration for Chimère::
cp $INSTALL_PATH/chimere/apache/django.wsgi \
$INSTALL_PATH/chimere/apache/mydjango.wsgi
vim $INSTALL_PATH/chimere/apache/mydjango.wsgi
cp $INSTALL_PATH/chimere/apache/apache-wsgi.conf \
/etc/apache2/sites-available/chimere
vim /etc/apache2/sites-available/chimere
# create log dir
mkdir /var/log/apache2/chimere/
chown www-data /var/log/apache2/chimere/
Adapt the files *mydjango.wsgi* (with the correct sys path and the correct
module) and Apache *chimere* (with the correct servername and correct paths).
To activate the website, reload apache::
a2ensite chimere
/etc/init.d/apache2 reload
If you encounter problem with the upload of files with Unicode chars in their
names, activate the appropriate locale in Apache. On a Debian server with UTF-8
as default encoding, in the file */etc/apache2/envvars* uncomment the following
line::
. /etc/default/locale