Installation de uMap

Transcription

Installation de uMap
Installation de uMap
Attention La peinture est fraîche, cette page est amenée à
évoluer. Si vous avez besoin de plus de détails, la
documentation officielle (en anglais) se trouve sur le dépôt
de uMap.
uMap est le logiciel de personnalisation de cartes
géographiques que nous proposons sur Framacarte en partenariat
avec OpenStreetMap France.
Voici un tutoriel pour vous aider à l’installer sur votre
serveur.
N’hésitez pas à poser des questions dans les commentaires. Si
vous êtes parvenu à l’installer, donnez-nous le lien vers
votre instance et dites-nous dans quelle mesure ce tutoriel
vous aura été utile
Informations
Dans la suite de ce tutoriel, les instructions seront données
pour un serveur dédié sous Debian Jessie avec une base de
données PostgreSQL et un serveur web NginX.
Nous supposerons que vous avez déjà fait pointer votre nom de
domaine sur votre serveur auprès de votre registraire.
Prérequis
Python 3.4, PostgreSQL, PostGIS, Git
Pour faire fonctionner uMap, il est nécessaire d’installer
Python 3.4, PostgreSQL 9.4, PostGIS et quelques dépendances.
Sur Debian :
apt-get install postgresql postgresql-server-dev-9.4 postgis
python-pip git python-virtualenv virtualenvwrapper python3-dev
python3-setuptools libtiff5-dev libjpeg62-turbo-dev zlib1g-dev
libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev
python-tk python3.4-dev python-dev
apt-get build-dep python-imaging
Installation
1 – Préparer la terre
Tout d’abord, connectez-vous en tant que root sur votre
serveur et créez un compte utilisateur umap ainsi que son
dossier /home/umap dans lequel seront copiés les fichiers avec
les droits d’accès correspondants.
useradd -N umap -m
usermod -s /bin/bash umap
2 – Semer
Connectez-vous avec l’utilisateur umap : su umap
Téléchargez le
/home/umap/src
dépôt
git
officiel
dans
un
dossier
cd /home/umap
git clone https://github.com/umap-project/umap src
Créez un environnement virtuel Python :
mkvirtualenv umap --python=`which python3.4`
source .virtualenvs/umap/bin/activate
Installez les librairies requises :
cd src
pip install django-appconf
pip install -r requirements.txt
3 – Arroser
PostgreSQL
Il faut maintenant créer la base de données et configurer
uMap. Ajoutez tout d’abord un utilisateur umap et sa base de
données associée dans PostgreSQL :
sudo -u postgres createuser umap
sudo -u postgres createdb umap -O umap
Puis crée l’extension PostGis
sudo -u postgres psql umap
CREATE EXTENSION postgis;
(\q pour sortir de psql)
uMap
Maintenant que la base de données est prête, il faut
configurer uMap. Éditez le fichier umap/settings/local.py sur
le modèle du fichier local.py.sample :
cp umap/settings/local.py.sample umap/settings/local.py
nano umap/settings/local.py
Dans ce fichier, il est important de définir les paramètres :
SECRET_KEY : une longue chaîne de caractères aléatoires
DEBUG = False
ADMINS avec vos identifiants et adresse email
SOCIAL_AUTH_OPENSTREETMAP_KEY,
SOCIAL_AUTH_OPENSTREETMAP_SECRET
et
AUTHENTICATION_BACKENDS si vous voulez proposer à vos
utilisateurs d’avoir un compte pour gérer leurs cartes
(nous recommandons OpenStreetMap ici mais vous pouvez
aussi utiliser Twitter, Github ou Bitbucket)
UMAP_DEMO_SITE = False
SITE_URL = "https://votre-site.org"
SHORT_SITE_URL = "https://votre-site.org" (vous pouvez
utiliser un nom de domaine plus court s’il est configuré
comme un alias du nom de domaine principal)
MAPQUEST_KEY pour permettre la recherche de lieu
Clé OpenStreetMap et MapQuest
Pour obtenir les clés OpenStreetMap, il faut que vous ayez
enregistré un compte sur openstreetmap.org. Dans « Mes
options », « paramètres OAuth » ajoutez une « application
cliente ».
Pour obtenir la clé MapQuest, même chose : rendez-vous sur
developer.mapquest.com et remplissez le formulaire pour
obtenir votre clé d’API.
Le principe est quasiment le même pour Twitter, Github et
Bitbucket.
Il reste maintenant à remplir la base de données, importer en
cache les fichiers statiques, créer le compte administrateur
d’uMap.
python manage.py migrate
python manage.py collectstatic
python manage.py createsuperuser
4 – Pailler
À ce stade, si tout s’est bien passé, lorsque vous exécutez
cette commande :
python manage.py runserver 0.0.0.0:8019
uMap est fonctionnel. La page d’accueil sur l’URL
http://ip_de_votre_serveur:8019/ tourne mais il ne sera pas
encore possible de créer des cartes tant qu’on aura pas ajouté
des fonds de carte.
Fonds de carte
Pour cela, connectez-vous avez le compte admin précédemment
créé sur http://ip_de_votre_serveur:8019/admin et cliquez sur
« Tile layers → Ajouter ».
Voici ci-dessous la liste des fonds de carte présents sur
Framacarte :
Fonds de carte de Framacarte
Nom
URL
Attribution
Map tiles by
CartoDB, under
Positron
https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png
CC BY 3.0.
Data by
OpenStreetMap,
under ODbL.
Nom
URL
Attribution
Map tiles by
CartoDB, under
Dark Matter
https://cartodb-basemaps-{s}.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png
CC BY 3.0.
Data by
OpenStreetMap,
under ODbL.
“OpenCycleMap”
OpenCycleMap
Outdoors
https://{s}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png
https://{s}.tile.thunderforest.com/outdoors/{z}/{x}/{y}.png
and
“OpenStreetMap
contributors”
Tiles ©
Gravitystorm /
map data
OpenStreetMap
Processus silencieux – UWSGI
Pour lancer uMap en tant que service afin d’éviter devoir
garer un terminal ouvert en permanence, on utilise uswgi.
Installez uwsgi apt-get install uwsgi.
Dans le dossier /home/umap créer un
contenant :
fichier
[uwsgi]
uid = umap
gid = users
# Django-related settings
# the base directory (full path)
chdir
= /home/umap/src
# Django's wsgi file
module
= umap.wsgi
# the virtualenv (full path)
home
= /home/umap/.virtualenvs/umap
# process-related settings
# master
master
= true
# maximum number of worker processes
processes
= 8
# the socket (use the full path to be safe
socket
= /home/umap/umap.sock
# ... with appropriate permissions - may be needed
chmod-socket
= 666
# clear environment on exit
vacuum
= true
uswgi.ini
plugins
= python3
Ainsi qu’un fichier uwsgi_params (utilisé par Nginx) :
uwsgi_param
uwsgi_param
uwsgi_param
uwsgi_param
QUERY_STRING
REQUEST_METHOD
CONTENT_TYPE
CONTENT_LENGTH
$query_string;
$request_method;
$content_type;
$content_length;
uwsgi_param
uwsgi_param
uwsgi_param
uwsgi_param
uwsgi_param
uwsgi_param
REQUEST_URI
PATH_INFO
DOCUMENT_ROOT
SERVER_PROTOCOL
REQUEST_SCHEME
HTTPS
$request_uri;
$document_uri;
$document_root;
$server_protocol;
$scheme;
$https if_not_empty;
uwsgi_param
uwsgi_param
uwsgi_param
uwsgi_param
REMOTE_ADDR
REMOTE_PORT
SERVER_PORT
SERVER_NAME
$remote_addr;
$remote_port;
$server_port;
$server_name;
et créer un lien symbolique pour activer « l’application »
dans UWSGI
sudo
ln
-s
/home/umap/uwsgi.ini
enabled/umap.ini
service uwsgi restart
/etc/uwsgi/apps-
Pour lancer uMap, il suffira maintenant de taper service uwsgi
start umap
Nginx
Nous allons maintenant configurer uMap pour le rendre
accessible depuis un nom de domaine avec Nginx.
Installez nginx apt-get install nginx.
Dans le dossier /etc/sites-available, en tant que root, créez
un fichier votre-site.org.vhost s’il n’existe pas déjà
contenant :
# the upstream component nginx needs to connect to
upstream umap {
server unix:///home/umap/umap.sock;
}
proxy_cache_path
/tmp/nginx_ajax_proxy_cache
keys_zone=ajax_proxy:10m inactive=60m;
proxy_cache_key "$args";
# configuration of the server
server {
# the port your site will be served on
listen
80;
listen
[::]:80;
listen
443 ssl;
listen
[::]:443 ssl;
# the domain name it will serve for
server_name votre-site.org www.votre-site.org;
charset
utf-8;
levels=1:2
# https redirection
if ($scheme = http) {
return 301 https://votre-site.org$request_uri;
}
if ($host = www.votre-site.org) {
return 301 https://votre-site.org$request_uri;
}
# SSL conf
ssl_certificate
/etc/ssl/private/votresite.org.chained.pem;
ssl_certificate_key /etc/ssl/private/votre-site.org.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:5m;
ssl_dhparam /etc/ssl/private/dh2048.pem;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # not possible to do
exclusive
ssl_ciphers
'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EEC
DH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128
:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEE
D:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128SHA';
# OCSP conf
ssl_stapling on;
ssl_stapling_verify on;
resolver_timeout 5s;
resolver 80.67.188.188
valid=300s;
[2001:913::8]
80.67.169.12
# STS conf
add_header Strict-Transport-Security max-age=15768000; #
six months
# max upload size
client_max_body_size 25M;
# adjust to taste
# Django media
location /uploads/ {
alias /home/umap/.virtualenvs/umap/var/uploads/;
expires 30d;
}
location /static/ {
alias /home/umap/.virtualenvs/umap/var/static/;
}
# X-Accel-Redirect
location /internal/ {
gzip off;
add_header Content-Encoding gzip;
internal;
alias /home/umap/.virtualenvs/umap/var/uploads/;
}
location /ajax-proxy/ {
valid_referers server_names;
if ($invalid_referer) {
return 404;
}
if ($args !~ ^url=(.*)$) {
return 404;
}
if ($args ~ ^url=(.*)$) {
set $target $1;
}
add_header X-Proxy-Cache $upstream_cache_status;
proxy_pass $target;
proxy_cache ajax_proxy;
proxy_cache_valid 3m;
}
# Finally, send all non-media requests to the Django
server.
location / {
uwsgi_pass umap;
include
/home/umap/uwsgi_params;
}
}
Copiez votre clé et votre certificat SSL (votre-site.org.key
et votre-site.org.chained.pem) pour l’utilisation du https
dans le dossier /etc/ssl/private/.
Créez un lien symbolique pour activer le site et enfin,
relancez Nginx :
sudo
ln
-s
/etc/nginx/sites-available/votre-site.org
/etc/nginx/sites-enabled/votre-site.org
service nginx restart

Documents pareils

Installation

Installation Scrumblr est capable de fonctionner seul sur un port standard, mais il est possible que nous ne dédiions pas notre machine à ce service et que nous ayons d’autres applications Web à lui adjoindre. ...

Plus en détail