Closed MaelREBOUX closed 5 years ago
pour mémo
apt-get install -y nano htop multitail zip unzip git wget curl
apt-get install postgresql postgis postgresql-contrib
nano /etc/postgresql/9.5/main/postgresql.conf
listen_addresses = '*' shared_buffers = 2GB work_mem = 256MB maintenance_work_mem = 1GB wal_level = minimal synchronous_commit = off min_wal_size = 64MB max_wal_size = 64MB checkpoint_timeout = 15min checkpoint_completion_target = 0.5
autovacuum = off fsync = off
nano /etc/postgresql/9.5/main/pg_hba.conf
host all all 127.0.0.1/32 md5
chown -R postgres:postgres /data/db/postgresql/ psql -c "CREATE TABLESPACE osm LOCATION '/data/db/postgresql';" createuser osm psql -c "ALTER USER osm WITH PASSWORD 'osmbr';" createdb -E UTF8 -O osm --tablespace osm osm psql -c "CREATE EXTENSION hstore;" -d osm psql -c "CREATE EXTENSION postgis;" -d osm
adduser osm => osm / osm
nano .pgpass localhost:5432:osm:osm:osmbr chmod 0600 .pgpass psql -h localhost -d osm -U osm
cd /data/osm/dumps/ wget http://download.geofabrik.de/europe/france/bretagne-latest.osm.pbf
osm2pgsql -H localhost -d osm -U osm --hstore --slim --cache 5000 -E 3857 /data/osm/dumps/bretagne-latest.osm.pbf
psql -d osm - a -f create_view.sql
Toutes les vues sont bien crées dans la base osm.
on vérifie mod_tile
apache2ctl -M
=> ok
#-----------------------------------------------------------------------
# tile.openstreetmap.bzh
#-----------------------------------------------------------------------
<VirtualHost *:80>
ServerName tile.openstreetmap.bzh
ServerName teol.openstreetmap.bzh
DocumentRoot /data/tiles/
<Directory /data/tiles>
Options Indexes Includes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
# mod_tile pour OSM
LoadTileConfigFile /etc/renderd.conf
ModTileRenderdSocketName /var/run/renderd/renderd.sock
# Timeout before giving up for a tile to be rendered
ModTileRequestTimeout 0
# Timeout before giving up for a tile to be rendered that is otherwise missing
ModTileMissingRequestTimeout 120
TimeOut 300
ErrorLog /data/www/logs/tile.openstreetmap.bzh_error.log
CustomLog /data/www/logs/tile.openstreetmap.bzh.log combined
ServerAdmin webmaster@openstreetmap.bzh
</VirtualHost>
test : https://teol.openstreetmap.bzh/ ==> ok
sudo apt-get install -y fonts-noto-cjk fonts-noto-hinted fonts-noto-unhinted ttf-unifont
le fichier de config est /etc/renderd.conf
La config :
[renderd]
socketname=/var/run/renderd/renderd.sock
stats_file=/var/run/renderd/renderd.stats
num_threads=12
tile_dir=/data/tiles
[mapnik]
plugins_dir=/usr/lib/mapnik/3.0/input/
font_dir=/usr/share/fonts/truetype
font_dir_recurse=1
[br]
URI=/br
TILEDIR=/data/tiles
XML=/data/styles/br/style.xml
HOST=teol.openstreetmap.bzh
TILESIZE=256
MAXZOOM=20
test en mode debug
sudo renderd -f -c /etc/renderd.conf
On teste le calcul de tuiles : https://teol.openstreetmap.bzh/br/0/0/0.png ==> ok
On zoome http://teol.openstreetmap.bzh/br/8/124/88.png ==> ok
On zoome http://teol.openstreetmap.bzh/br/17/64899/45548.png ou http://teol.openstreetmap.bzh/br/13/4055/2847.png ==> KO : il manque toutes les étiquettes / textes.
On a donc un problème sur les fontes. --> checker la liste des fontes entre ma VM le serveur.
Ok : il manque les fontes Open Sans
@sans_lt: 'Open Sans Regular';
@sans_lt_italic: 'Open Sans Italic';
@sans: 'Open Sans Semibold';
@sans_italic: 'Open Sans Semibold Italic';
@sans_bold: 'Open Sans Bold';
@sans_bold_italic: 'Open Sans Bold Italic';
Et en fait j'avais tout prévu sauf la doc car les fontes utilisées sont dans le répertoire fonts du dépot https://github.com/osm-bzh/osmbr-mapstyle/tree/master/fonts
Je me souviens maintenant du truc : il faut télécharger les ttf et les installer à la main. cf https://gist.github.com/lightonphiri/5811226a1fba0b3df3be73ff2d5b351c
Donc :
cd /usr/share/fonts/truetype
cp -R /data/styles/br/fonts/open-sans/ ./
cp -R /data/styles/br/fonts/dejavu-sans/ ./
fc-cache -fv
On efface le cache de tuiles et on redémarre renderd.
test : http://teol.openstreetmap.bzh/br/13/4055/2847.png et http://teol.openstreetmap.bzh/br/17/64899/45548.png
Bingo : ok
Du coup les fontes noto sont inutiles mais je les laisses.
Il doit être aussi possible d'installer les font via des paquets debian, genre fonts-open-sans et fonts-dejavu.
sudo apt-get install osmctools
Il doit être aussi possible d'installer les font via des paquets debian
Non pas celles-là. j'en suis certain. Faut télécharger depuis le site Googlefonts et les installer à la main.
Bon. Alors en testant tout avec renderd en mode debug : tout marche.
sudo renderd -f -c /etc/renderd.conf
Mais si je relance le service et que je demande un render_list
sudo -s
service render start
render_list -a -m br -s /var/run/renderd/renderd.sock -n 3 -t /data/tiles/ -z 16 -Z 16 -x 32255 -y 22867 -X 32279 -Y 22882
J'obtiens :
debug: init_storage_backend: initialising file storage backend at: /data/tiles/
Rendering client
Starting 3 rendering threads
Rendering all tiles from zoom 16 to zoom 16
Rendering all tiles for zoom 16 from (32255, 22867) to (32279, 22882)
Waiting for rendering threads to finish
socket connect failed for: /var/run/renderd/renderd.sock
socket connect failed for: /var/run/renderd/renderd.sock
socket connect failed for: /var/run/renderd/renderd.sock
*****************************************************
*****************************************************
Total for all tiles rendered
Meta tiles rendered: Rendered 8 tiles in 0.00 seconds (30651.34 tiles/s)
Total tiles rendered: Rendered 512 tiles in 0.00 seconds (1961685.75 tiles/s)
Total tiles handled: Rendered 8 tiles in 0.00 seconds (30651.34 tiles/s)
*****************************************************
*****************************************************
*****************************************************
Et si je demande une tuile par url, j'obtiens à peu près la même chose dans le log d'erreur de apache :
[Sun Dec 10 16:08:26.888844 2017] [tile:warn] [pid 246:tid 140604897990400] [client 10.0.0.25:39510] request_tile: Failed to read response from rendering socket No such file or directory
[Sun Dec 10 16:10:20.725311 2017] [tile:warn] [pid 246:tid 140604889597696] [client 10.0.0.25:18166] socket connect failed for: /var/run/renderd/renderd.sock with reason: Connection refused
[Sun Dec 10 16:10:20.725344 2017] [tile:notice] [pid 246:tid 140604889597696] [client 10.0.0.25:18166] Failed to connect to renderer
Je n'ai pas rencontré cette erreur dans ma VM. Va falloir que je fasse des recherches.
Gasp : les 12 process renderd raccrochent dès qu'on leur demande un rendu. Dans htop on le voit bien : ils sont là puis plus là dès qu'on demande une tuile.
Si on ne demande rien : ça raccroche quand même au bout de qqs secondes. On a le temps de voir que presque tous les process sont en état "S" soit "disk sleep". J'ai cru comprendre que ça signale des problèmes de I/O qq part, possiblement des pbs de permissions.
Je remarque que l'utilisateur qui lance renderd est www-data. Conclusion : rajouter www-data sur /data/tiles/
Les tuiles vont être générées par le user www-data (apache) il faut que /data/tiles ait les bonnes permissions.
chown www-data -R /data/tiles
render_list doit aussi être éxécuté par www-data pour que les mises à jour futures puissent être faites par mod_tile/renderd.
sudo -u www-data render_list ...
2017-12-10 17:45 GMT+01:00 Maël REBOUX notifications@github.com:
Dans syslog je note cette ligne dans la liste des message renderd :
Dec 10 16:33:51 bzh202 systemd[1]: Failed to reset devices.list on /system.slice/renderd.service: Operation not permitted
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/osm-fr/infrastructure/issues/18#issuecomment-350561275, or mute the thread https://github.com/notifications/unsubscribe-auth/ABJZ7AI5sbD_wsUriR539yfEFq56_CSyks5s_AqsgaJpZM4QzvhG .
-- Christian Quest - OpenStreetMap France
Et je remarque que l'utilisateur qui lance renderd est www-data. Conclusion : rajouter www-data sur /data/tiles/
chown -R www-data:www-data /data/tiles
sudo -u www-data ./calculer_tiles_br_low.sh
Forcément ça passe mieux.
Je vais lancer la génération et comparer les perfs avec mon humble machine.
J'ai recréé avec succès toutes les dalles comme je le fais d'habitude. Je ne sais plus quelle version de Mapnik j'ai dans ma VM mais visiblement le pb de rendu des ponts est caduque avec la version 3. Une bonne nouvelle ça.
Côté perfs : l'import du dump est presque 50 % plus rapide mais j'ai l'impression que le rendu est plus lent malgré le fait de passer de 3 fils à 8. Bizarre : je vérifierai mieux ultérieurement.
Rotation des logs
sudo nano /etc/logrotate.d/apache2
# osm tiles
# une rotation par jour pour une analyse par piwik
/data/www/logs/tile.*.log {
daily
missingok
rotate 20
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
if /etc/init.d/apache2 status > /dev/null ; then \
/etc/init.d/apache2 reload > /dev/null; \
fi;
endscript
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
}
Bon : je bute sur un problème pour l'étape 3, cf https://github.com/osm-bzh/osmbr-mapstyle/issues/9
@MaelREBOUX pourquoi chercher les polices chez Google ? http://dl.1001fonts.com/open-sans.zip
Pour le suivi : je reprend toute la carte en faisant des requêtes classiques sur la base de données.
La basemap (occupation du sol + routes + rail + hydro) est en place.
Reste :
cf les commits sur la branche vm-test : https://github.com/osm-bzh/osmbr-mapstyle/commits/vm_test
Je me donne encore 3 semaines max pour mettre en production.
On avance on avance : https://github.com/osm-bzh/osmbr-mapstyle/releases/tag/v2.0
Il ne me reste que 3 vues matérialisées :
# on vire la base OSM
su postgres
psql -c "DROP database osm ;"
logout
# as root
service renderd stop
service postgresql stop
# sauvegarder les fichiers de conf
mkdir /data/db/postgresql/conf
mkdir /data/db/postgresql/conf/9.5
cp /etc/postgresql/9.5/main/* /data/db/postgresql/conf/9.5/
dpkg -l | grep postgres
ii pgdg-keyring 2017.3 all keyring for apt.postgresql.org
ii postgresql 9.5+173ubuntu0.1 all object-relational SQL database (supported version)
ii postgresql-9.5 9.5.10-0ubuntu0.16.04 amd64 object-relational SQL database, version 9.5 server
ii postgresql-9.5-postgis-2.2 2.2.1+dfsg-2 amd64 Geographic objects support for PostgreSQL 9.5
ii postgresql-9.5-postgis-scripts 2.2.1+dfsg-2 all Geographic objects support for PostgreSQL 9.5 -- scripts
ii postgresql-client-9.5 9.5.10-0ubuntu0.16.04 amd64 front-end programs for PostgreSQL 9.5
ii postgresql-client-common 173ubuntu0.1 all manager for multiple PostgreSQL client versions
ii postgresql-common 173ubuntu0.1 all PostgreSQL database-cluster manager
ii postgresql-contrib 9.5+173ubuntu0.1 all additional facilities for PostgreSQL (supported version)
ii postgresql-contrib-9.5 9.5.10-0ubuntu0.16.04 amd64 additional facilities for PostgreSQL
apt-get --purge remove postgresql-9.5-postgis-scripts postgresql-9.5-postgis-2.2
apt-get --purge remove postgresql-9.5 postgresql-client-9.5 postgresql-client-common postgresql-common postgresql-contrib ostgresql-contrib-9.5
# check version Ubuntu
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
# déclarer un nouveau dépôt dans les sources pour aptitude
echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' >> /etc/apt/sources.list.d/postgresql.list
# récupérer le certificat
wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
# mettre à jour la liste des paquets
apt-get update
# vérifier
apt-cache search postgresql-10
# installer la version désirée
apt-get install postgresql-10 postgresql-10-postgis-2.4
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
liblwgeom-2.4-0 libpq-dev libpq5 postgresql-10-postgis-2.4-scripts postgresql-client-10 postgresql-client-common
postgresql-common
Suggested packages:
postgresql-doc-10 locales-all libjson-perl
The following NEW packages will be installed:
liblwgeom-2.4-0 postgresql-10 postgresql-10-postgis-2.4 postgresql-10-postgis-2.4-scripts postgresql-client-10
postgresql-client-common postgresql-common
The following packages will be upgraded:
libpq-dev libpq5
2 upgraded, 7 newly installed, 0 to remove and 155 not upgraded.
Need to get 8,308 kB of archives.
After this operation, 124 MB of additional disk space will be used.
Do you want to continue? [Y/n]
# tester la version
psql --version
psql (PostgreSQL) 10.3 (Ubuntu 10.3-1.pgdg16.04+1)
# test
service postgresql status
reboot
nano /etc/postgresql/10/main/postgresql.conf
#------------------------------------------------------------------------------
# OSM BZH configuration
#------------------------------------------------------------------------------
listen_addresses = '*'
port = 5432
max_connections = 100
#shared_buffers = 2GB
#work_mem = 256MB
#maintenance_work_mem = 1GB
#wal_level = minimal
#synchronous_commit = off
#min_wal_size = 64MB
#max_wal_size = 64MB
#checkpoint_timeout = 15min
#checkpoint_completion_target = 0.5
#default_statistics_target = 1000
autovacuum = on
#fsync = off
# parallélisme
max_worker_processes = 8
max_parallel_workers_per_gather = 2
max_parallel_workers = 8
nano /etc/postgresql/10/main/pg_hba.conf
host all all 127.0.0.1/32 md5
service postgresql restart
su postgres
psql -c "CREATE TABLESPACE osm LOCATION '/data/db/postgresql';"
createuser osm
psql -c "ALTER USER osm WITH PASSWORD 'osmbr';"
createdb -E UTF8 -O osm --tablespace osm osm
psql -c "CREATE EXTENSION hstore;" -d osm
psql -c "CREATE EXTENSION postgis;" -d osm
Chargement de la base OK. Rendu dynamique par renderd OK.
apt-get install mysql-server mysql-client
mysql_secure_installation
service mysql stop
cd /data/
mkdir db
cd db
# on copie pour rien casser
cp -R /var/lib/mysql/ /data/db/
# on renomme l'ancien répertoire (30 Mo)
mv /var/lib/mysql/ /var/lib/mysql_org
# on fait le lien symbolique
ln -s /data/db/mysql/ /var/lib/mysql
# on met bien les mêmes droits
chown -R mysql:mysql mysql
# on redémarre et on teste
service mysql start
service mysql status
# test
mysql --user=root --password=XXXXX
SHOW DATABASES ;
CREATE DATABASE matomo;
CREATE USER 'matomo'@'localhost' IDENTIFIED BY 'le-mdp';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON matomo.* TO 'matomo'@'localhost';
apt-get install php7.0 libapache2-mod-php7.0 php7.0-mysql php7.0-xml php7.0-dom php7.0-mbstring hp7.0-gd
# Activation des extensions PHP
phpenmod pdo_mysql
phpenmod xml
phpenmod dom
service apache2 restart
wget https://builds.piwik.org/piwik-3.0.3.zip && unzip piwik-3.0.3.zip
mv piwik current
La suite est l'installation classique de Piwik / matomo.
Je viens de faire la bascule DNS.
Ça passe. :D
Les stats piwik / matomo ont bien été migré (avec une purge des old visits à la clé 1 Go de gagné...) et les logs apache sont bien analysés et les rapports consolidés chaque nuit.
Faut juste que je retrouve comme on met un site en public pour que ce soit visible sur http://stats.openstreetmap.bzh/
@cquest prochaine étape : auto-expiration des tuiles.
j'ai rajouté install moniteur munin pour mod_tile&renderd :)
C'était mon prochain ticket !
Va juste falloir m'expliquer comment on y accès ; ) https://munin.openstreetmap.fr ??
l'ajout du moniteur se fait sur bzh202 répertoire /etc/munin/plugins/
selon @ybon c'est 2 fichiers a prendre sur le dépot github
ensuite redémarrer le service systemct restart munin-node
le graph devrait apparaître automatiquement sur https://munin.openstreetmap.fr/ après 10min (maj toutes les 5 min, il faut 2 cycles pour un nouveau module)
c'est 2 fichiers a prendre sur le dépot github
Quel dépôt ? Il n'y a rien dans https://github.com/osm-fr/infrastructure
@yohanboniface m'a transmis les infos suivantes : le dépot github https://github.com/tilery/pianoforte/tree/master/scripts/munin un ls des moniteurs présent sur osm13 https://paste.sh/jrvR90W-#U8LOZPmnHCJ5ZvwXW-QDsMQg les mod_tile https://paste.sh/qVjjI9kh#vwJ0_6Z0fZIF_bnvHeCNXR_0 les renderd https://paste.sh/YL1VVnuO#deNSf1q3FZz-E-LhPCraSLGI je ne sais pas encore si ce sont les mêmes que ceux du github ou si l'un des 2 est + à jour que l'autre ce serra justement l'occasion de tester afin de pouvoir documenter cela
EDIT: dépot de TomH pour osm.org https://github.com/openstreetmap/chef/tree/master/cookbooks/munin/files/default/plugins
le dépot github https://github.com/tilery/pianoforte/tree/master/scripts/munin
Non lui c'est le dépôt git de https://tiles.quaidorsay.fr/ (rien à voir avec osm-fr donc) ;) Pour HOT, c'est https://github.com/hotosm/HDM-CartoCSS mais la partie server n'y est pas.
@MaelREBOUX tu t'en sort ? besoin d'aide pour les moniteurs munin ?
Bonjour @Marc-marc-marc J'ai été bien occupé sur divers sujets + les congés. Je compte bien rattaquer la semaine prochaine.
Et oui : j'ai besoin d'un coup de main pour munin car j'ai rien compris ;) munin j'y ai encore jamais touché. J'ai cru comprendre qu'il faut que je pose des fichiers qq part.
On a fait une petite réunion de suivi du projet et c'est en priorité de finaliser le serveur avant de passer à la suite.
Tu peux me proposer un créneau semaine prochaine à 21h00 ?
Bonjour @MaelREBOUX les quelques jours à venir, je peux me libérer normalement tous les soirs. J'ai entre temps copié les fichiers des plugins munin dans le conteneur bzh et j'ai ajouté le conteneur dans la config du munin central http://munin.openstreetmap.fr/osm25.openstreetmap.fr/bzh202.osm25/index.html à voir si les moniteurs munin vont retourner des valeurs (pour l'instant tous les mod_tiles et renderd sont à 0) ou s'il y a des ajustements de config à faire
Bonjour @Marc-marc-marc Je te propose 05/06 ou 06/06 21h00. @cquest m'a dit que vous étiez souvent / beaucoup sur osm-fr-tech.
ok pour le 5/6 21h :) oui on est souvent sur #osm-fr-tech :)
Demande à @cquest pour le script d'expiration des tuiles dans #42
Demande à @jocelynj pour 2 redirections (kosmtik et monit) dans #43
Reste #34 en suspend
installation de kosmtik
sudo -s
cd /data
git clone https://github.com/kosmtik/kosmtik.git
Cloning into 'kosmtik'...
remote: Counting objects: 2192, done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 2192 (delta 11), reused 20 (delta 6), pack-reused 2159
Receiving objects: 100% (2192/2192), 3.05 MiB | 1.41 MiB/s, done.
Resolving deltas: 100% (1272/1272), done.
Checking connectivity... done.
cd kosmtik
npm install
npm WARN deprecated nomnom@1.8.1: Package no longer supported. Contact support@npmjs.com for more info.
> mapnik@4.0.1 install /data/kosmtik/node_modules/mapnik
> node-pre-gyp install --fallback-to-build
node-pre-gyp WARN Using request for node-pre-gyp https download
[mapnik] Success: "/data/kosmtik/node_modules/mapnik/lib/binding/mapnik.node" is installed via remote
kosmtik@0.0.17 /data/kosmtik
npm ls -G --depth=0
kosmtik@0.0.17 /data/kosmtik
├── carto@1.1.0
├── eslint@4.19.1
├── js-yaml@3.12.0
├── json-localizer@0.0.3
├── leaflet@1.3.4
├── leaflet-formbuilder@0.2.3
├── leaflet-hash@0.2.1
├── mapnik@4.0.1
├── mapnik-pool@0.1.3
├── mocha@3.5.3
├── nomnom@1.8.1
├── npm@4.6.1
├── request@2.88.0
└── semver@5.5.1
On teste
node /data/kosmtik/index.js serve /data/styles/br/project.mml --host 10.1.0.202
Et ça passe :D
Note en passant : la VM est configurée avec 4 core. Les réglages de renderd ont donc été mis à 3 core.
Bon avec la mise en place de monit on va dire que ce tuileur est opérationnel ^_^
La maj des tuiles se fait pour le moment de 2 façons différentes. Je ré-attaquerais l'utilisation des dump minutes ultérieurement.
Donc je ferme ce ticket. Ouf.
Pour mémoire : hier j'ai installé tous les patches de sécurité via unattended-upgrades --verbose
Merci à tous pour le suivi.
Choses à faire par moi-même sur osm202
Étape 1
Étape 2
Étape 3
Étape 4
Étape 5