Difference between revisions of "Trabajo Cristian"
(→Recuperación de Grub de servidor) |
(→Script de 19:13) |
||
(36 intermediate revisions by 2 users not shown) | |||
Line 33: | Line 33: | ||
IP: 192.168.100.1 | IP: 192.168.100.1 | ||
Mask: 255.255.255.0 | Mask: 255.255.255.0 | ||
+ | |||
+ | Por otro lado, para la configuración del servidor es necesario que se fije estáticamente la IP a la tarjeta de red em2. Para ello editamos el archivo <code>/etc/network/interfaces</code> y agregamos las líneas: | ||
+ | |||
+ | auto em2 | ||
+ | iface em2 inet static | ||
+ | address 192.168.100.1 | ||
== Configuración en el servidor == | == Configuración en el servidor == | ||
Line 77: | Line 83: | ||
Luego para upsmon editamos el archivo /etc/nut/upsmon.conf y modificamos las siguientes líneas: | Luego para upsmon editamos el archivo /etc/nut/upsmon.conf y modificamos las siguientes líneas: | ||
− | MONITOR | + | MONITOR snmpv1 1 upsmon pass master |
POWERDOWNFLAG /etc/killpower | POWERDOWNFLAG /etc/killpower | ||
SHUTDOWNCMD "/sbin/shutdown -h now" | SHUTDOWNCMD "/sbin/shutdown -h now" | ||
Line 96: | Line 102: | ||
Se espera que con esta configuración, el servidor que está conectado directamente con la UPS se apague cuando la UPS esté con poca energía, sin embargo falta aún la configuración del otro servidor, el cual se debe hacer modificando las configuraciones de upsd y upsmon respectivamente. | Se espera que con esta configuración, el servidor que está conectado directamente con la UPS se apague cuando la UPS esté con poca energía, sin embargo falta aún la configuración del otro servidor, el cual se debe hacer modificando las configuraciones de upsd y upsmon respectivamente. | ||
+ | |||
+ | == Ver estado de la UPS == | ||
+ | |||
+ | Para ver en que estado se encuentra la UPS, podemos ver todos los detalles gracias al comando: | ||
+ | |||
+ | upsc snmpv1 | ||
+ | |||
+ | En caso de que no exista conexión, puede ser a causa de que el dirver no se encuentre corriendo, la solución para levantar dicho driver es ejecutar | ||
+ | |||
+ | upsdrvctr start | ||
+ | |||
+ | == Agregar -18 y .14 al apagado == | ||
+ | |||
+ | http://2tazasdelinux.blogspot.cl/2014/11/controlar-nuestro-sai-con-nut.html | ||
= Mantención VM MiCiudad= | = Mantención VM MiCiudad= | ||
Line 107: | Line 127: | ||
Luego de esto ya es posible la actualización e instalación de aplicaciones via apt-get | Luego de esto ya es posible la actualización e instalación de aplicaciones via apt-get | ||
+ | |||
+ | |||
+ | = omeka.org = | ||
+ | |||
+ | == Ubuntu == | ||
+ | |||
+ | Se propuso la instalación del servicio Omeka, para ello utilizamos una VM con Ubuntu, en el caso de prueba se utiliza Ubuntu 15.04. | ||
+ | |||
+ | Primero, con permisos de administrador, se actualiza la VM y se instalan las dependencias para Omeka | ||
+ | |||
+ | sudo apt-get update | ||
+ | sudo apt-get install -y unzip php5 php5-mysql apache2 mysql-server imagemagick | ||
+ | |||
+ | Luego se descargan los archivos para la instalación de Omeka | ||
+ | |||
+ | cd | ||
+ | wget http://omeka.org/files/omeka-2.3.1.zip | ||
+ | unzip omeka-2.3.1.zip | ||
+ | |||
+ | Se mueven los archivos al directorio web | ||
+ | |||
+ | sudo mv omeka-2.0/* /var/www/ | ||
+ | sudo mv omeka-2.0/.htaccess /var/www/ | ||
+ | sudo rm /var/www/index.html | ||
+ | |||
+ | Configurar la base de datos, creando un usuario y sus permisos | ||
+ | |||
+ | sudo groupadd webdev | ||
+ | sudo usermod -a -G webdev ubuntu | ||
+ | cd /var | ||
+ | sudo chown -R root.webdev www | ||
+ | sudo chmod 775 www | ||
+ | cd /var/www | ||
+ | sudo find . -type d | xargs sudo chmod 775 | ||
+ | sudo find . -type f | xargs sudo chmod 664 | ||
+ | sudo find files -type d | xargs sudo chmod 777 | ||
+ | sudo find files -type f | xargs sudo chmod 666 | ||
+ | |||
+ | Crear la base de datos | ||
+ | |||
+ | mysql -u root -p | ||
+ | |||
+ | create database omeka; | ||
+ | grant all privileges on omeka.* to 'ubuntu' identified by 'reverse'; | ||
+ | flush privileges; | ||
+ | quit; | ||
+ | |||
+ | Editar el archivo db.ini modificando | ||
+ | |||
+ | [database] | ||
+ | host = "localhost" | ||
+ | username = "ubuntu" | ||
+ | password = "reverse" | ||
+ | dbname = "omeka" | ||
+ | prefix = "omeka_" | ||
+ | |||
+ | Finalmente activar mod_rewrite | ||
+ | |||
+ | sudo a2enmod rewrite | ||
+ | |||
+ | Editar el archivo /etc/apache2/sites-available/default cambiando "AllowOverride None" a "AllowOverride All". | ||
+ | |||
+ | Listo :) | ||
+ | |||
+ | Lamentablemente esta instalación trae problemas con la activación de mod_rewrite. | ||
+ | |||
+ | == Fedora Server 23 == | ||
+ | |||
+ | Lo primero son las dependencias | ||
+ | |||
+ | dnf install unzip mysql-server php php-mysql ImageMagick | ||
+ | |||
+ | chkconfig --levels 235 httpd on | ||
+ | chkconfig --levels 235 mariadb on | ||
+ | |||
+ | setenforce 0 | ||
+ | systemctl start mariadb | ||
+ | |||
+ | mysql_secure_installation | ||
+ | |||
+ | Colocar contraseña para cuenta de administrador en base de datos | ||
+ | |||
+ | mysql -u root -p | ||
+ | mysql> use mysql | ||
+ | mysql> insert into user(host, user, password) values('localhost','omeka_user',password('test')); | ||
+ | mysql> insert into db(host,db,user,Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv) values ('localhost','omeka_db','omeka_user','Y','Y','Y','Y','Y','Y'); | ||
+ | mysql> quit | ||
+ | |||
+ | mysqladmin -u root -p create omeka_db | ||
+ | mysqladmin -u root -p reload | ||
+ | mysql> ALTER DATABASE omeka_db DEFAULT CHARACTER SET 'utf8' DEFAULT COLLATE 'utf8_unicode_ci'; | ||
+ | mysql> quit | ||
+ | |||
+ | |||
+ | Editar el archivo /etc/httpd/conf/httpd.conf, cambiando el valor de AllowOverride que se encuentra dentro del bloque <Directory "/var/www/html"> por All. | ||
+ | |||
+ | systemctl restart httpd | ||
+ | |||
+ | wget http://omeka.org/files/omeka-2.3.1.zip | ||
+ | |||
+ | descomprimir archivo zip y renombrar carpeta por <code>omeka</code> | ||
+ | |||
+ | editar el archivo <code>omeka/db.ini</code> con sus respectivos datos: | ||
+ | [database] | ||
+ | host = "localhost" | ||
+ | username = "omeka_user" | ||
+ | password = "test" | ||
+ | name = "omeka_db" | ||
+ | prefix = "omeka_" | ||
+ | ;port = "" | ||
+ | |||
+ | = Extractor de tweets = | ||
+ | |||
+ | dependencias de trabajo: | ||
+ | |||
+ | sudo apt-get install git vim | ||
+ | |||
+ | dependencias: tweepy y psycopg2 | ||
+ | |||
+ | sudo pip install tweepy | ||
+ | sudo apt-get install python-psycopg2 | ||
+ | |||
+ | También es necesario instalar y crear un usuario en postgresql | ||
+ | |||
+ | sudo apt-get install postgresql postgresql-contrib | ||
+ | sudo -i -u postgres | ||
+ | createuser --interactive | ||
+ | # csfuente as superuser | ||
+ | createdb csfuente | ||
+ | logout | ||
+ | |||
+ | luego clonar el repositorio git | ||
+ | |||
+ | git clone http://146.155.17.18:18080/csfuente/twitter_extractor.git | ||
+ | cd twitter_extractor | ||
+ | |||
+ | Aquí tenemos dos archivos que ejecutar, primero es main.py el cual, al ser ejecutado por primera vez hay que poner un -r al final para crear la tabla de la base de datos (también borra todo dato anterior). | ||
+ | |||
+ | python main.py <Cuenta de twitter> [-r] | ||
+ | |||
+ | Luego que finalice el anterior, se debe ejecutar el streaming, para recepcionar los tweets que vendrán. | ||
+ | |||
+ | python stream <Cuenta de twitter> | ||
+ | |||
+ | Ejemplo | ||
+ | |||
+ | python main.py Cristian_F_G -r | ||
+ | python main.py Cristian_F_G | ||
+ | |||
+ | = OwnCloud = | ||
+ | |||
+ | backup location after clicking on OwnCloud update: /var/www/html/owncloud/data/updater_backup/8.2.2.2-8fa08547 | ||
+ | |||
+ | Variable for URL name: | ||
+ | 'overwrite.cli.url' => 'http://146.155.17.18:17080/owncloud', | ||
+ | |||
+ | = OpenTripPlanner = | ||
+ | |||
+ | == Instalación == | ||
+ | |||
+ | Son necesarios dos programas escenciales, Java 8 y Maven mayor a 3.1.1 | ||
+ | |||
+ | Para Java ejecutamos | ||
+ | |||
+ | sudo add-apt-repository ppa:openjdk-r/ppa | ||
+ | sudo apt-get update | ||
+ | sudo apt-get install openjdk-8-jdk | ||
+ | |||
+ | Para Maven | ||
+ | |||
+ | sudo apt-get install gdebi | ||
+ | wget http://ppa.launchpad.net/natecarlson/maven3/ubuntu/pool/main/m/maven3/maven3_3.2.1-0~ppa1_all.deb | ||
+ | sudo gdebi maven3_3.2.1-0~ppa1_all.deb | ||
+ | sudo ln -s /usr/share/maven3/bin/mvn /usr/bin/mvn | ||
+ | |||
+ | Luego necesitamos git | ||
+ | |||
+ | sudo apt-get install git | ||
+ | |||
+ | Y finalmente procedemos con la copia e instalación de OpenTripPlanner | ||
+ | |||
+ | git clone https://github.com/opentripplanner/OpenTripPlanner.git | ||
+ | cd OpenTripPlanner | ||
+ | mvn clean package -DskipTests | ||
+ | |||
+ | Creamos la carpeta con la data | ||
+ | |||
+ | mkdir /home/csfuente/otp | ||
+ | cd /home/csfuente/otp | ||
+ | |||
+ | Descargamos la data en esta carpeta.... | ||
+ | |||
+ | wget http://www.dtpm.cl/descargas/gtfs/GTFS.zip | ||
+ | |||
+ | Ejecutamos OTP desde su directorio con el comando | ||
+ | |||
+ | ./otp --build /home/csfuente/otp --inMemory | ||
+ | |||
+ | Y para todo Chile: | ||
+ | ./otp --build /home/csfuente/otpTransantiago --inMemory | ||
+ | |||
+ | == Actualizar la información == | ||
+ | |||
+ | Para actualizar la información es necesario ir revisando los cambios de los archivos GTFS que se encuentran disponibles en la red, cuando notemos que uno es más nuevo es necesario descargarlo y ubicarlo en la carpeta que contiene todos los archivos similares (Actualmente se está utilizando la carpeta /home/csfuente/otpTransantiago ) por lo que entramos a dicha carpeta y descargamos los datos con '''wget'''. Finalmente reiniciamos la VM, esperamos a que inicie (cerca de ~10 minutos) y estará con todos los datos actualizados. | ||
+ | |||
+ | = OSM + Overpass = | ||
+ | |||
+ | == Instalación de servidor de OSM == | ||
+ | |||
+ | Para la instalación se utiliza una VM con Ubuntu 14.04. Las instrucciones fueron sacadas de: | ||
+ | * https://switch2osm.org/serving-tiles/manually-building-a-tile-server-14-04/ | ||
+ | Y actualizadas con la nueva versión de osm2pgsql | ||
+ | * https://github.com/openstreetmap/osm2pgsql | ||
+ | |||
+ | Lo primero es instalar las dependencias necesarias para proceder con la instalación de los componentes que utiliza OSM. | ||
+ | |||
+ | sudo apt-get install libboost-all-dev subversion git-core tar unzip wget bzip2 build-essential \ | ||
+ | autoconf libtool libxml2-dev libgeos-dev libgeos++-dev libpq-dev libbz2-dev libproj-dev munin-node \ | ||
+ | munin libprotobuf-c0-dev protobuf-c-compiler libfreetype6-dev libpng12-dev libtiff4-dev libicu-dev \ | ||
+ | libgdal-dev libcairo-dev libcairomm-1.0-dev apache2 apache2-dev libagg-dev liblua5.2-dev ttf-unifont \ | ||
+ | lua5.1 liblua5.1-dev libgeotiff-epsg node-carto | ||
+ | |||
+ | Luego hay que instalar Postgresql y postgis | ||
+ | |||
+ | sudo apt-get install postgresql postgresql-contrib postgis postgresql-9.3-postgis-2.1 | ||
+ | |||
+ | Ahora es necesario crear la base de datos, para ello necesitaremos de un usuario en postgres, por ahora se utilizará 'username' para la documentación. | ||
+ | |||
+ | sudo -u postgres -i | ||
+ | createuser username | ||
+ | createdb -E UTF8 -O username gis | ||
+ | exit | ||
+ | |||
+ | Lo mismo para el sistema Unix | ||
+ | |||
+ | sudo useradd -m username | ||
+ | sudo passwd username | ||
+ | |||
+ | Creamos las tablas de postgres y las asignamos al usuario | ||
+ | |||
+ | sudo -u postgres psql | ||
+ | \c gis | ||
+ | CREATE EXTENSION postgis; | ||
+ | ALTER TABLE geometry_columns OWNER TO username; | ||
+ | ALTER TABLE spatial_ref_sys OWNER TO username; | ||
+ | \q | ||
+ | exit | ||
+ | |||
+ | Pasamos a la instalación de osm2pgsql, para ello crearemos la carpeta 'src' en la raiz de root para adjuntar los archivos | ||
+ | |||
+ | mkdir ~/src | ||
+ | cd ~/src | ||
+ | git clone https://github.com/openstreetmap/osm2pgsql.git | ||
+ | |||
+ | Instalamos sus dependencias | ||
+ | |||
+ | sudo apt-get install make cmake g++ libboost-dev libboost-system-dev \ | ||
+ | libboost-filesystem-dev libexpat1-dev zlib1g-dev \ | ||
+ | libbz2-dev libpq-dev libgeos-dev libgeos++-dev libproj-dev lua5.2 \ | ||
+ | liblua5.2-dev | ||
+ | |||
+ | Compilamos e instalamos | ||
+ | |||
+ | mkdir build && cd build | ||
+ | cmake .. | ||
+ | make | ||
+ | sudo make install | ||
+ | |||
+ | Procedemos a instalar Mapnik | ||
+ | |||
+ | cd ~/src | ||
+ | git clone git://github.com/mapnik/mapnik | ||
+ | cd mapnik | ||
+ | git branch 2.2 origin/2.2.x | ||
+ | git checkout 2.2 | ||
+ | python scons/scons.py configure INPUT_PLUGINS=all OPTIMIZATION=3 SYSTEM_FONTS=/usr/share/fonts/truetype/ | ||
+ | make | ||
+ | sudo make install | ||
+ | sudo ldconfig | ||
+ | |||
+ | Podemos verificar que Mapnik funciona con | ||
+ | |||
+ | python | ||
+ | >>> import mapnik | ||
+ | >>> | ||
+ | |||
+ | Ahora la instalación de mod_tile y render | ||
+ | |||
+ | cd ~/src | ||
+ | git clone git://github.com/openstreetmap/mod_tile.git | ||
+ | cd mod_tile | ||
+ | ./autogen.sh | ||
+ | ./configure | ||
+ | make | ||
+ | sudo make install | ||
+ | sudo make install-mod_tile | ||
+ | sudo ldconfig | ||
+ | |||
+ | Se crea la carpeta /usr/local/share/maps/style para los archivos stylesheet y los recursos necesarios, además instalamos y configuramos OSM Bright | ||
+ | |||
+ | sudo mkdir -p /usr/local/share/maps/style | ||
+ | sudo chown username /usr/local/share/maps/style | ||
+ | cd /usr/local/share/maps/style | ||
+ | wget https://github.com/mapbox/osm-bright/archive/master.zip | ||
+ | wget http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip | ||
+ | wget http://data.openstreetmapdata.com/land-polygons-split-3857.zip | ||
+ | mkdir ne_10m_populated_places_simple | ||
+ | cd ne_10m_populated_places_simple | ||
+ | wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places_simple.zip | ||
+ | unzip ne_10m_populated_places_simple.zip | ||
+ | rm ne_10m_populated_places_simple.zip | ||
+ | cd .. | ||
+ | unzip '*.zip' | ||
+ | mkdir osm-bright-master/shp | ||
+ | mv land-polygons-split-3857 osm-bright-master/shp/ | ||
+ | mv simplified-land-polygons-complete-3857 osm-bright-master/shp/ | ||
+ | mv ne_10m_populated_places_simple osm-bright-master/shp/ | ||
+ | cd osm-bright-master/shp/land-polygons-split-3857 | ||
+ | shapeindex land_polygons.shp | ||
+ | cd ../simplified-land-polygons-complete-3857/ | ||
+ | shapeindex simplified_land_polygons.shp | ||
+ | cd ../.. | ||
+ | |||
+ | Ahora configuramos OSM Bright | ||
+ | |||
+ | vim osm-bright/osm-bright.osm2pgsql.mml | ||
+ | |||
+ | Acá hay que buscar las direcciones que se encuentran al lado derecho del tag 'file' y cambiar la dirección por la ruta de los archivos que cambiamos anteriormente, además agregamos su característica de 'type' tal como se muestra a continuación | ||
+ | |||
+ | "file": "/usr/local/share/maps/style/osm-bright-master/shp/land-polygons-split-3857/land_polygons.shp", | ||
+ | "type": "shape" | ||
+ | |||
+ | "file": "/usr/local/share/maps/style/osm-bright-master/shp/simplified-land-polygons-complete-3857/simplified_land_polygons.shp", | ||
+ | "type": "shape", | ||
+ | |||
+ | "file": "/usr/local/share/maps/style/osm-bright-master/shp/ne_10m_populated_places_simple/ne_10m_populated_places_simple.shp", | ||
+ | "type": "shape" | ||
+ | |||
+ | Hay que ser riguroso con no olvidar las comas finales de cada línea. | ||
+ | Luego, en la sección 'ne-places', reemplazar 'srs' y 'srs-name' con esto: | ||
+ | |||
+ | "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" | ||
+ | |||
+ | Guardamos y salimos. | ||
+ | |||
+ | Nos queda ahora compilar todo para que Mapnik pueda ser utilizado. Creamos el archivo de configuración y cambiamos la linea de pointing de ~/Documents/Mapbox/project a /usr/local/share/maps/style y cambiamos dbname de osm a gis. Guardamos y salimos. | ||
+ | |||
+ | cp configure.py.sample configure.py | ||
+ | vim configure.py | ||
+ | #Realizar cambios nombrados | ||
+ | ./make.py | ||
+ | cd ../OSMBright/ | ||
+ | carto project.mml > OSMBright.xml | ||
+ | |||
+ | Listo con ésto, ahora debemos configurar el render. Como root es necesario editar el archivo de configuración de render ubicado en /usr/local/etc/renderd.conf y cambiar las siguientes lineas en las secciones de render, mapnik y default. | ||
+ | |||
+ | socketname=/var/run/renderd/renderd.sock | ||
+ | plugins_dir=/usr/local/lib/mapnik/input | ||
+ | font_dir=/usr/share/fonts/truetype/ttf-dejavu | ||
+ | XML=/usr/local/share/maps/style/OSMBright/OSMBright.xml | ||
+ | HOST=localhost | ||
+ | |||
+ | Las líneas que se encuentran comentadas con un ; deben ser descomentadas. | ||
+ | |||
+ | Ahora creamos las carpetas necesarias para usar el sistema de mod_tile | ||
+ | |||
+ | sudo mkdir /var/run/renderd | ||
+ | sudo chown username /var/run/renderd | ||
+ | sudo mkdir /var/lib/mod_tile | ||
+ | sudo chown username /var/lib/mod_tile | ||
+ | |||
+ | creamos en archivo /etc/apache2/conf-available/mod_tile.conf y agregamos una sola línea: | ||
+ | |||
+ | LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so | ||
+ | |||
+ | Y editamos el archivo /etc/apache2/sites-available/000-default.conf agregando esto justo después del email del administrador | ||
+ | |||
+ | LoadTileConfigFile /usr/local/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 30 | ||
+ | |||
+ | Finalmente agregamos mod_tile a apache y lo reiniciamos | ||
+ | |||
+ | sudo a2enconf mod_tile | ||
+ | sudo service apache2 reload | ||
+ | |||
+ | Ahora debemos dejar mas potente postgres para que no funcione lento al momento de solicitar datos, editamos con sudo el archivo /etc/postgresql/9.3/main/postgresql.conf para cambiar: | ||
+ | |||
+ | shared_buffers = 128MB | ||
+ | checkpoint_segments = 20 | ||
+ | maintenance_work_mem = 256MB | ||
+ | autovacuum = off | ||
+ | |||
+ | editamos tambien con sudo el archivo /etc/sysctl.conf para agregar una línea entre las definiciones de kernel | ||
+ | |||
+ | # Increase kernel shared memory segments - needed for large databases | ||
+ | kernel.shmmax=268435456 | ||
+ | |||
+ | Reiniciamos la VM y luego ejecutamos: | ||
+ | |||
+ | sudo sysctl kernel.shmmax | ||
+ | |||
+ | y verificamos que nos muestre el número que pusimos | ||
+ | |||
+ | Ahora nos queda cargar las tiles correspondientes al servidor, para este trabajo se utilizan solo las tiles de Chile. | ||
+ | |||
+ | sudo mkdir /usr/local/share/maps/planet | ||
+ | sudo chown username /usr/local/share/maps/planet | ||
+ | cd /usr/local/share/maps/planet | ||
+ | wget http://download.geofabrik.de/south-america/chile-latest.osm.pbf | ||
+ | |||
+ | Importamos la data descargada en la base de datos, el número que se encuentra luego de -C debe ser cambiado dependiendo de la memoria RAM disponible para la máquina. Se sugiere comenzar con un númerp 16000 y si excede la memoria entonces reducir dicho número. Para las pruebas fue posible ejecutar el comando con un -C de 3500 | ||
+ | |||
+ | osm2pgsql --slim -d gis -C 3500 --number-processes 3 /usr/local/share/maps/planet/chile-latest.osm.pbf | ||
+ | |||
+ | Tomar café y esperar. Dependiendo de la información a cargar, puede tardar entre 10 minutos hasta 24 horas. | ||
+ | |||
+ | Finalmente levantamos el servidor y lo hacemos correr, para ello ejecutamos | ||
+ | |||
+ | sudo mkdir /var/run/renderd | ||
+ | sudo chown username /var/run/renderd | ||
+ | sudo -u username renderd -f -c /usr/local/etc/renderd.conf | ||
+ | |||
+ | y en una terminal diferente | ||
+ | |||
+ | sudo service apache2 reload | ||
+ | |||
+ | Podemos probar que el servidor se encuentra corriendo entrando a la dirección http://localhost/osm_tiles/0/0/0.png para ver una imagen del mundo. Para otras imágenes es necesario rescatarlas con http://localhost/osm_tiles/{z}/{x}/{y}.png (localhost puede ser cambiado por la IP de la VM) | ||
+ | |||
+ | == Instalación de Overpass API == | ||
+ | |||
+ | La información fue extraida desde las siguientes páginas con modificación en los link de descarga de la data: | ||
+ | |||
+ | http://overpass-api.de/no_frills.html | ||
+ | http://overpass-api.de/full_installation.html | ||
+ | |||
+ | Los comandos utilizados fueron: | ||
+ | |||
+ | Primero son las dependencias base | ||
+ | |||
+ | sudo apt-get install wget g++ make expat libexpat1-dev zlib1g-dev | ||
+ | |||
+ | Luego se realiza la instalación del software de Overpass, para ello se utiliza como directorio de ejecutables la misma base del archivo a descargar (perfectamente se podría cambiar) | ||
+ | |||
+ | wget http://dev.overpass-api.de/releases/osm-3s_v0.7.52.tar.gz | ||
+ | gunzip <osm-3s_v0.7.52.tar.gz | tar xvf - | ||
+ | cd osm-3s_v0.7.52/ | ||
+ | ./configure --prefix="`pwd`" | ||
+ | make CXXFLAGS="-O3" | ||
+ | |||
+ | Se crea la carpeta de la base de datos, se descarga la información y se adjunta a Overpass (Es posible solo utilizar Chile) | ||
+ | |||
+ | mkdir db | ||
+ | wget -O planet.osm.bz2 "http://planet.osm.org/planet/planet-latest.osm.bz2" | ||
+ | bin/init_osm3s.sh planet.osm.bz2 "db/" "./" --meta | ||
+ | |||
+ | Con esto ya tenemos la data de Overpass, ahora lo uniremos a Apache, para ello lo instalamos y configuramos para cgi según http://wiki.openstreetmap.org/wiki/Overpass_API/Installation#Setting_up_the_Web_API | ||
+ | |||
+ | sudo apt-get install apache2 | ||
+ | sudo a2enmod cgi | ||
+ | sudo vim /etc/apache2/sites-available/000-default.conf | ||
+ | |||
+ | En el archivo agregamos las líneas faltantes para que nos quede algo similar a esto: | ||
+ | |||
+ | <source lang="bash"> | ||
+ | <VirtualHost *:80> | ||
+ | ServerAdmin webmaster@localhost | ||
+ | ExtFilterDefine gzip mode=output cmd=/bin/gzip | ||
+ | DocumentRoot [YOUR_HTML_ROOT_DIR] | ||
+ | # This directive indicates that whenever someone types http://www.mydomain.com/api/ | ||
+ | # Apache2 should refer to what is in the local directory [YOUR_EXEC_DIR]/cgi-bin/ | ||
+ | ScriptAlias /api/ [YOUR_EXEC_DIR]/cgi-bin/ | ||
+ | # This specifies some directives specific to the directory: [YOUR_EXEC_DIR]/cgi-bin/ | ||
+ | <Directory "[YOUR_EXEC_DIR]/cgi-bin/"> | ||
+ | AllowOverride None | ||
+ | Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch | ||
+ | # For Apache 2.4: | ||
+ | # Order allow,deny | ||
+ | # For Apache > 2.4: | ||
+ | Require all granted | ||
+ | #SetOutputFilter gzip | ||
+ | #Header set Content-Encoding gzip | ||
+ | </Directory> | ||
+ | ErrorLog /var/log/apache2/error.log | ||
+ | # Possible values include: debug, info, notice, warn, error, crit, alert, emerg | ||
+ | LogLevel warn | ||
+ | CustomLog /var/log/apache2/access.log combined | ||
+ | </VirtualHost> | ||
+ | </source> | ||
+ | |||
+ | Utilizando [YOUR_HTML_ROOT_DIR] por el que venía por defecto, [YOUR_EXEC_DIR] la dirección completa en donde compilamos Overpass y dejando sin editar ErrorLog y CustomLog. | ||
+ | |||
+ | Luego se reinicia el demonio de apache | ||
+ | |||
+ | sudo service apache2 restart | ||
+ | |||
+ | Finalmente ejecutamos el proceso que nos permite recuperar los archivos que buscamos, para ello nos posicionamos en la carpeta del ejecutable en donde instalamos Overpass y escribimos el siguiente comando: | ||
+ | |||
+ | sudo nohup bin/dispatcher --osm-base --meta --db-dir="db" & | ||
+ | |||
+ | Listo, ahora para poder recuperar un archivo xml con los cambios que deseamos probar, debemos ejecutar el siguiente comando en algún otro computador (o el mismo) | ||
+ | |||
+ | wget --output-document=[nombre_archivo.xml] http://[IP_de_la_máquina]/api/interpreter?data=[código_a_ejecutar_en_overpass] | ||
+ | |||
+ | como ejemplo, en la misma máquina podemos ejecutar | ||
+ | |||
+ | wget --output-document=test.xml http://localhost/api/interpreter?data=%3Cprint%20mode=%22body%22/%3E | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <osm-derived> | ||
+ | <note> | ||
+ | The data included in this document is from www.openstreetmap.org. It has there been collected | ||
+ | by a large group of contributors. For individual attribution of each item please refer to | ||
+ | http://www.openstreetmap.org/api/0.6/[node|way|relation]/#id/history | ||
+ | </note> | ||
+ | <meta osm_base=""/> | ||
+ | |||
+ | </osm-derived> | ||
+ | </source> | ||
+ | |||
+ | |||
+ | PD: Los bancos de mi ciudad: | ||
+ | |||
+ | <source lang="html4strict"> | ||
+ | http://localhost/api/interpreter?data=%3Cosm-script%3E%3Cquery%20into=%22_%22%20type=%22node%22%3E%3Chas-kv%20k=%22amenity%22%20modv=%22%22%20v=%22bank%22/%3E%3Cbbox-query%20e=%22-71.72712922096252%22%20into=%22_%22%20n=%22-35.59095565308603%22%20s=%22-35.5972720219081%22%20w=%22-71.73655986785889%22/%3E%3C/query%3E%3Cprint%20e=%22%22%20from=%22_%22%20geometry=%22skeleton%22%20limit=%22%22%20mode=%22body%22%20n=%22%22%20order=%22id%22%20s=%22%22%20w=%22%22/%3E%3C/osm-script%3E | ||
+ | </source> | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <osm version="0.6" generator="Overpass API"> | ||
+ | <note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note> | ||
+ | <meta osm_base=""/> | ||
+ | |||
+ | <node id="2540586850" lat="-35.5947536" lon="-71.7334849"> | ||
+ | <tag k="amenity" v="bank"/> | ||
+ | <tag k="name" v="BancoEstado"/> | ||
+ | </node> | ||
+ | <node id="2540586923" lat="-35.5946228" lon="-71.7339302"> | ||
+ | <tag k="amenity" v="bank"/> | ||
+ | <tag k="name" v="Banco de Chile"/> | ||
+ | </node> | ||
+ | <node id="2540635212" lat="-35.5956784" lon="-71.7295394"> | ||
+ | <tag k="amenity" v="bank"/> | ||
+ | <tag k="name" v="Santander"/> | ||
+ | </node> | ||
+ | |||
+ | </osm> | ||
+ | </source> | ||
+ | |||
+ | === Actualización de Overpass === | ||
+ | |||
+ | Para la actualización debemos realizar nuevamente una instalación completa por cada vez que sale una versión, por lo que tenemos que comenzar con descargar la nueva versión desde el comando '''wget''' en adelante. | ||
+ | La última versión instalada actualmente es la '''0.7.53'''. Es posible utilizar el mismo archivo .osm.bz2 para evitar descargarlo nuevamente, éste lo encontraremos dentro de la carpeta de la versión anterior. | ||
+ | |||
+ | En la edición del archivo /etc/apache2/sites-available/000-default.conf debemos cambiar la ruta '''[YOUR_EXEC_DIR]''' por la nueva generada por la descompresión de la nueva versión. | ||
+ | |||
+ | Para encontrar las nuevas versiones de Overpass es necesario visitar http://dev.overpass-api.de/releases/ | ||
+ | |||
+ | = Arrancar web cuando páginas están en Django Python = | ||
+ | |||
+ | Cuando una VM se encuentra con una web en etapa de desarrollo con Django Python, para que ésta corra hay que hacer lo siguiente: | ||
+ | |||
+ | Primero entrar a la VM | ||
+ | |||
+ | <source lang="bash"> | ||
+ | ssh 146.155.17.18 -p 22022 | ||
+ | </source> | ||
+ | |||
+ | Posicionarse en la carpeta del proyecto (Ejemplo con VM de Gatherer) | ||
+ | |||
+ | <source lang="bash"> | ||
+ | cd hibridinterfaz | ||
+ | </source> | ||
+ | |||
+ | Iniciar Screen, aplicación que abre una nueva terminal que es independiente a SSH | ||
+ | |||
+ | <source lang="bash"> | ||
+ | screen | ||
+ | </source> | ||
+ | |||
+ | Correr el servidor de Django con el comando | ||
+ | |||
+ | <source lang="bash"> | ||
+ | python manage.py runserver | ||
+ | </source> | ||
+ | |||
+ | Con esto ya la web está corriendo sin problemas, para salir de Screen hay que apretar '''Ctrl+a''' y luego '''Ctrl+d'''. | ||
+ | |||
+ | == VMs con Django == | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! style="text-align: center;" | VM | ||
+ | ! style="text-align: center;" | Carpeta de proyecto | ||
+ | |- | ||
+ | | style="text-align: center;" | 18:22080 | ||
+ | | style="text-align: center;" | /home/csfuente/hibridinterfaz | ||
+ | |- | ||
+ | | style="text-align: center;" | 18:21080 | ||
+ | | style="text-align: center;" | /home/csfuente/Indicadores | ||
+ | |- | ||
+ | | style="text-align: center;" | 19:17080 | ||
+ | | style="text-align: center;" | /home/csfuente/wyp-django | ||
+ | |} | ||
+ | |||
+ | = CartoDB = | ||
+ | |||
+ | == Levantar CartoDB cuando la máquina es encendida == | ||
+ | |||
+ | Subir CartoDB es un poco tedioso pero es posible sin complicaciónes, lo primero es exportar lo siguiente: (copy/paste a la terminal) | ||
+ | |||
+ | <source lang="bash"> | ||
+ | export PATH=$PATH:/opt/rubies/ruby-2.2.3/bin | ||
+ | export CPLUS_INCLUDE_PATH=/usr/include/gdal | ||
+ | export C_INCLUDE_PATH=/usr/include/gdal | ||
+ | export PATH=$PATH:/usr/include/gdal | ||
+ | export PATH=$PATH:$PWD/node_modules/grunt-cli/bin | ||
+ | </source> | ||
+ | |||
+ | En mi cuenta agregué esas lineas al archivo .bashrc para que se ejecuten cada vez que entro por ssh a la VM. | ||
+ | Lo siguiente es ejecutar los procesos necesarios para que cartodb corra, para ello se ejecuta cada uno de ellos en una screen distinta (ya que no contamos con varias terminales por ssh) | ||
+ | |||
+ | <source lang="bash"> | ||
+ | cd /home/csfuente/ | ||
+ | screen | ||
+ | redis-server | ||
+ | </source> | ||
+ | |||
+ | '''ctrl+a''' y '''ctrl+d''' | ||
+ | |||
+ | <source lang="bash"> | ||
+ | cd cartodb | ||
+ | screen | ||
+ | bundle exec script/resque | ||
+ | </source> | ||
+ | |||
+ | '''ctrl+a''' y '''ctrl+d''' | ||
+ | |||
+ | <source lang="bash"> | ||
+ | screen | ||
+ | bundle exec thin start --threaded -p 3000 --threadpool-size 5 | ||
+ | </source> | ||
+ | |||
+ | '''ctrl+a''' y '''ctrl+d''' | ||
+ | |||
+ | <source lang="bash"> | ||
+ | cd /home/csfuente/Wireshark*** | ||
+ | screen | ||
+ | node app.js development | ||
+ | </source> | ||
+ | |||
+ | '''ctrl+a''' y '''ctrl+d''' | ||
+ | |||
+ | <source lang="bash"> | ||
+ | cd /home/csfuente/CartoDB-SQL-API | ||
+ | screen | ||
+ | node app.js development | ||
+ | </source> | ||
+ | |||
+ | '''ctrl+a''' y '''ctrl+d''' | ||
+ | |||
+ | Con todo esto ahora podemos entrar a 146.155.17.18:3000 y usar cartodb. | ||
+ | |||
+ | == Puertos utilizados en .18 por cartodb == | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! style="text-align: center;" | Puerto | ||
+ | ! style="text-align: center;" | Servicio | ||
+ | |- | ||
+ | | style="text-align: center;" | 18:3000 | ||
+ | | style="text-align: center;" | cartodb | ||
+ | |- | ||
+ | | style="text-align: center;" | 18:8080 | ||
+ | | style="text-align: center;" | cartodb-SQL-API | ||
+ | |- | ||
+ | | style="text-align: center;" | 18:8181 | ||
+ | | style="text-align: center;" | Wireshark | ||
+ | |- | ||
+ | | style="text-align: center;" | 18:6379 | ||
+ | | style="text-align: center;" | redis-server | ||
+ | |} | ||
+ | |||
+ | = Obtener polígonos formato .poly de ciudades = | ||
+ | |||
+ | Gracias a las instrucciones dadas en https://github.com/JamesChevalier/cities podemos obtener el polígono de la ciudad solicitada, los pasos son los siguientes: | ||
+ | |||
+ | * Entrar a http://nominatim.openstreetmap.org/ y poner en el buscador la ciudad que estamos buscando | ||
+ | * Al encontrarla, nos vamos a sus Detalles | ||
+ | * Copiamos el número que aparece en OSM: Relation '''XXXXXX''' | ||
+ | * Vamos a http://polygons.openstreetmap.fr/ y pegamos éste número en '''Id of relation''' | ||
+ | * Descargamos la información en el link '''poly''' correspondiente | ||
+ | |||
+ | = Migración OTP, Overpass en VM de WYP = | ||
+ | |||
+ | == Migración de OTP == | ||
+ | |||
+ | Con el trabajo realizado ya de la instalación de OTP más arriba en esta wiki, se movió la carpeta en la cual fue compilado el repositorio junto con los graphs generados hasta entonces a la VM de WYP. los archivos quedaron en la carpeta /home/csfuente/OTP/ en donde se es posible ejecutar el servidor sin problemas. | ||
+ | OTP al ser ejecutado, su servidor trabaja en el puerto 5050 por lo que se creó una nueva regla nat para la VM el cual se es posible llegar a ella mediante el puerto 17050 en el servidor .19. | ||
+ | |||
+ | El comando para ser ejecutado en esta VM es: | ||
+ | |||
+ | <source lang="bash"> | ||
+ | ./home/csfuente/OTP/otp --server --basePath /home/csfuente/OTP/ --router chile --preFlight --autoScan --autoReload --port 5050 | ||
+ | </source> | ||
+ | |||
+ | == Migración de Overpass == | ||
+ | |||
+ | Al igual que OTP, Overpass no es necesario ser recompilado. Los archivos de Overpass fueron trasladados a la VM a la carpeta /home/csfuente/Overpass/ y al ser ejecutado funciona directamente en el puerto 80. La regla nat fue modificada para apache redirigiendo lo del puerto 80 al puerto 17051 del servidor .19. | ||
+ | |||
+ | Tambien fue necesario agregar las reglas de Apache2 correspondientes (también en esta misma wiki) | ||
+ | |||
+ | Para ejecutarlo en esta VM es necesario escribir en la terminal: | ||
+ | |||
+ | <source lang="bash"> | ||
+ | rm /home/csfuente/Overpass/db/osm3s* || true | ||
+ | rm /dev/shm/osm3s* || true | ||
+ | cd /home/csfuente/Overpass && bin/dispatcher --osm-base --meta --db-dir="db" | ||
+ | </source> | ||
+ | |||
+ | == Modificaciones en arranque de WYP == | ||
+ | |||
+ | WYP estaba funcionando bajo Nginx, el cual se encargaba de redirigir el puerto 8000 al puerto 80 para que fuera leido por .19 en su puerto 17080. Para no modificar la URL de WYP fue necesario volver a cambiar a apache2 y ejecutar Django en el puerto 81. Crear una nueva regla nat para que leyera el puerto 81 de la VM y fuera ejecutado en 17080. De esta forma la URL no cambia para éste. | ||
+ | |||
+ | El nuevo comando para ejeutar WYP es: | ||
+ | |||
+ | <source lang="bash"> | ||
+ | cd /home/csfuente/wyp-django/ && python manage.py runserver 0.0.0.0:81 | ||
+ | </source> | ||
+ | |||
+ | == Ejecutar todos los procesos al iniciar la VM == | ||
+ | |||
+ | Para ello fue necesario editar el archivo '''/etc/rc.local''' | ||
+ | |||
+ | <source lang="bash"> | ||
+ | #!/bin/sh -e | ||
+ | # | ||
+ | # rc.local | ||
+ | # | ||
+ | # This script is executed at the end of each multiuser runlevel. | ||
+ | # Make sure that the script will "exit 0" on success or any other | ||
+ | # value on error. | ||
+ | # | ||
+ | # In order to enable or disable this script just change the execution | ||
+ | # bits. | ||
+ | # | ||
+ | # By default this script does nothing. | ||
+ | |||
+ | # Overpass | ||
+ | rm /home/csfuente/Overpass/db/osm3s* || true | ||
+ | rm /dev/shm/osm3s* || true | ||
+ | cd /home/csfuente/Overpass && bin/dispatcher --osm-base --meta --db-dir="db" & | ||
+ | |||
+ | # WYP | ||
+ | cd /home/csfuente/wyp-django/ && python manage.py runserver 0.0.0.0:81 & | ||
+ | |||
+ | # OTP | ||
+ | ./home/csfuente/OTP/otp --server --basePath /home/csfuente/OTP/ --router chile --preFlight --autoScan --autoReload --port 5050 & | ||
+ | |||
+ | exit 0 | ||
+ | ~ | ||
+ | </source> | ||
+ | |||
+ | = Actualizar archivo OSM con un archivo OSC = | ||
+ | |||
+ | Para actualizar la información con calles/nodos/parques nuevos en un arhivo de formato OSM, es necesario generar un archivo OSC. Para combinarlos hay que usar el comando | ||
+ | |||
+ | <source lang="bash"> | ||
+ | osmchange -i=old.osm changefile.osc >new.osm | ||
+ | </source> | ||
+ | |||
+ | == Link de interes == | ||
+ | |||
+ | http://wiki.openstreetmap.org/wiki/Osmchange_(program) | ||
+ | http://wiki.openstreetmap.org/wiki/Osmchange | ||
+ | |||
+ | = Instalación Nominatim 3.0 = | ||
+ | |||
+ | Nominatim 3.0 fue instalado en la VM 18:22081. Para la instalación se siguieron los pasos a continuación. | ||
+ | |||
+ | La VM 18:22 se encontraba con Ubuntu 14.04 LTS, lo primero que se hizo fue actualizar a Ubuntu 16 para utilizar las últimas dependencias, para eso ejecutamos: | ||
+ | |||
+ | <source lang="bash"> | ||
+ | sudo apt-get update | ||
+ | sudo apt-get upgrade | ||
+ | sudo apt-get dist-upgrade | ||
+ | sudo do-release-upgrade | ||
+ | </source> | ||
+ | |||
+ | Posterior a esto solo hay que seguir las indicaciones en pantalla. | ||
+ | |||
+ | Luego, comienza la instalación de Nominatim, se siguieron las instrucciones de [https://github.com/openstreetmap/Nominatim/blob/master/docs/Install-on-Ubuntu-16.md Github Nominatim], lo primero es instalar las dependencias | ||
+ | |||
+ | <source lang="bash"> | ||
+ | sudo apt-get install -y build-essential cmake g++ libboost-dev libboost-system-dev \ | ||
+ | libboost-filesystem-dev libexpat1-dev zlib1g-dev libxml2-dev\ | ||
+ | libbz2-dev libpq-dev libgeos-dev libgeos++-dev libproj-dev \ | ||
+ | postgresql-server-dev-9.5 postgresql-9.5-postgis-2.2 postgresql-contrib-9.5 \ | ||
+ | apache2 php php-pgsql libapache2-mod-php php-pear php-db \ | ||
+ | php-intl git | ||
+ | </source> | ||
+ | |||
+ | Se crea el usuario 'nominatim'. | ||
+ | |||
+ | <source lang="bash"> | ||
+ | sudo useradd -d /srv/nominatim -s /bin/bash -m nominatim | ||
+ | </source> | ||
+ | |||
+ | Para hacer las cosas más comodas ejecutamos estos export para ahorrarnos text más adelante | ||
+ | |||
+ | <source lang="bash"> | ||
+ | export USERNAME=nominatim | ||
+ | export USERHOME=/srv/nominatim | ||
+ | </source> | ||
+ | |||
+ | Permitimos que la carpeta de nominatim sea leida por el server | ||
+ | |||
+ | <source lang="bash"> | ||
+ | chmod a+x $USERHOME | ||
+ | </source> | ||
+ | |||
+ | Ahora, debemos crear la base de datos en postgres, el usuario que manejará la base de datos será nominatim, por lo que ejecutamos | ||
+ | |||
+ | <source lang="bash"> | ||
+ | sudo -u postgres createuser -s $USERNAME | ||
+ | sudo -u postgres createuser www-data | ||
+ | sudo systemctl restart postgresql | ||
+ | </source> | ||
+ | |||
+ | buscamos y editamos el archivo fe configuración de postgres llamado ''postgresql.conf'' y editamos los valores | ||
+ | |||
+ | <source lang="bash"> | ||
+ | shared_buffers (2GB) | ||
+ | maintenance_work_mem (10GB) | ||
+ | work_mem (50MB) | ||
+ | effective_cache_size (24GB) | ||
+ | synchronous_commit = off | ||
+ | checkpoint_segments = 100 # only for postgresql <= 9.4 | ||
+ | checkpoint_timeout = 10min | ||
+ | checkpoint_completion_target = 0.9 | ||
+ | </source> | ||
+ | |||
+ | Creamos el archivo de configuración para apache en un archivo aparte en ''conf-available'' ejecutando el siguiente comando | ||
+ | |||
+ | <source lang="bash"> | ||
+ | sudo tee /etc/apache2/conf-available/nominatim.conf << EOFAPACHECONF | ||
+ | <Directory "$USERHOME/Nominatim/build/website"> | ||
+ | Options FollowSymLinks MultiViews | ||
+ | AddType text/html .php | ||
+ | DirectoryIndex search.php | ||
+ | Require all granted | ||
+ | </Directory> | ||
+ | |||
+ | Alias /nominatim $USERHOME/Nominatim/build/website | ||
+ | EOFAPACHECONF | ||
+ | sudo a2enconf nominatim | ||
+ | sudo systemctl restart apache2 | ||
+ | </source> | ||
+ | |||
+ | Recién ahora pasamos a la instalación de Nominatim, nos vamos al home de nominatim, copiamos el repositorio y ejecutamos los siguientes comandos | ||
+ | |||
+ | <source lang="bash"> | ||
+ | cd $USERHOME | ||
+ | git clone --recursive git://github.com/openstreetmap/Nominatim.git | ||
+ | cd Nominatim | ||
+ | mkdir build | ||
+ | cd build | ||
+ | cmake $USERHOME/Nominatim | ||
+ | make | ||
+ | tee settings/local.php << EOF | ||
+ | <?php | ||
+ | @define('CONST_Website_BaseURL', '/nominatim/'); | ||
+ | EOF | ||
+ | </source> | ||
+ | |||
+ | Ahora, debemos importar la información de OSM, para ello descargamos el archivo .osm correspondiente, OJO, el archivo debe estar en formato .osm. | ||
+ | |||
+ | <source lang="bash"> | ||
+ | wget http://download.geofabrik.de/south-america/chile-latest.osm.bz2 | ||
+ | bzip2 -d chile-latest.osm.bz2 | ||
+ | ./utils/setup.php --osm-file chile.latest.osm --all 2>&1 | tee setup.log | ||
+ | </source> | ||
+ | |||
+ | Con esto tenemos Nominatim corriendo con la data de Chile. Para agregar más información (como la data de OSM de Canadá) es necesario limpiar la base de datos de postgres, unir todos los archivos .osm en uno solo y ejecutar el último comando señalada en esta documentación con el nuevo nombre del archivo .osm. | ||
+ | |||
+ | = Mapas de OSM en Geonode = | ||
+ | |||
+ | Es posible publicar mapas actualizados en geonode desde la data obtenida directamente de los servidores de OSM, se utilizó [http://docs.geonode.org/en/latest/tutorials/advanced/adv_data_mgmt/osm.html#using-the-osm-extract-script-to-download-osm-data-into-postgis esta guía] para poder realizar la actualización. Se debieron utilizar 2 VMs para este trabajo debido a que geonode está instalado en Ubuntu 12.04 y tiene conflictos con los paquetes de postgres el cual, al tratar de instalar una nueva versión de éste, solicita eliminar geonode (lo cual obviamente no queremos) por lo que el trabajo de osmosis y transformación de los datos a sql se realiza en la VM 18:22 (Gatherer). Se construyeron dos script, uno para la VM 18:22 y otro para la 19:13 (Geonode), Se explicarán los script en el orden en que se ejecutan. | ||
+ | |||
+ | == Script de 18:22 == | ||
+ | |||
+ | Este script cumple con tres funciones principales, descargar la información de las calles de los servidores de OSM para Chile, extraer la información necesaria (tales como estaciones de policía, calles principales, hospitales, etc.) y posteriormente esta información es transformada a un archivo sql para ser insertada en una base de datos. El script construido es el siguiente: | ||
+ | |||
+ | <source lang="bash"> | ||
+ | DB=/home/csfuente/hibridinterfaz/media/sql_osm | ||
+ | SETNAME=/home/csfuente/hibridinterfaz/media/sql | ||
+ | |||
+ | # Creacion del directorio | ||
+ | |||
+ | mkdir -p /home/csfuente/hibridinterfaz/media/sql | ||
+ | |||
+ | # Descarga de archivo latest.pbf | ||
+ | |||
+ | curl -g -o /home/csfuente/hibridinterfaz/media/sql/latest.pbf http://download.geofabrik.de/south-america/chile-latest.osm.pbf | ||
+ | |||
+ | # Construccion de archivos pbf | ||
+ | |||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --nkv keyValueList="aeroway.aerodrome" --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/aerodromes_point.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --wkv keyValueList="aeroway.aerodrome" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/aerodromes_polygon.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --nkv keyValueList="place.city,place.borough,place.suburb,place.quarter,place.neighbourhood,place.city_block,place.plot,place.town,place.village,place.hamlet,place.isolated_dwelling,place.farm,place.allotments" --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/all_places.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-ways "highway=*" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/all_roads.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-nodes amenity=bank,atm,bureau_de_change --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/banks.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-ways "building=*" --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/buildings.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-ways landuse=residential,allotments,cemetery,construction,depot,garages,brownfield,commercial,industrial,retail --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/built_up_areas.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/all_places.pbf" --tf accept-nodes "place=city" --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/cities.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --wkv keyValueList="landuse.farm,landuse.farmland,landuse.farmyard,landuse.livestock" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/farms.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --wkv keyValueList="landuse.forest,natural.wood" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/forest.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --wkv keyValueList="landuse.grass,landuse.meadow,landuse.scrub,landuse.village_green,natural.scrub,natural.heath,natural.grassland" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/grassland.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-nodes aeroway=helipad,heliport --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/helipads.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --nkv keyValueList="tourism.hotel,tourism.hostel,tourism.motel,tourism.guest_house" --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/hotels.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf reject-relations --tf accept-ways waterway=* --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/inland_water_line.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-ways natural=water,wetland,bay landuse=reservoir,basin,salt_pond waterway=river,riverbank --tf accept-relations natural=water,wetland,bay landuse=reservoir,basin,salt_pond waterway=river,riverbank --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/inland_water_polygon.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/all_roads.pbf" --wkv keyValueList="highway.motorway,highway.trunk,highway.primary" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/main_roads.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --nkv keyValueList="amenity.baby_hatch,amenity.clinic,amenity.dentist,amenity.doctors,amenity.hospital,amenity.nursing_home,amenity.pharmacy,amenity.social_facility,amenity.veterinary,amenity.blood_donation" --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/medical_point.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/buildings.pbf" --wkv keyValueList="amenity.baby_hatch,amenity.clinic,amenity.dentist,amenity.doctors,amenity.hospital,amenity.nursing_home,amenity.pharmacy,amenity.social_facility,amenity.veterinary,amenity.blood_donation" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/medical_polygon.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/all_roads.pbf" --wkv keyValueList="highway.footway,highway.bridleway,highway.steps,highway.path" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/paths.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --nkv keyValueList="amenity.police" --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/police_stations.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-ways "railway=*" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/railways.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --nkv keyValueList="amenity.school,amenity.university,amenity.college,amenity.kindergarten,amenity.library,amenity.public_bookcase,amenity.music_school,amenity.driving_school,amenity.language_school" --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/school_point.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --wkv keyValueList="amenity.school,amenity.university,amenity.college,amenity.kindergarten,amenity.library,amenity.public_bookcase,amenity.music_school,amenity.driving_school,amenity.language_school" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/schools_polygon.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/all_places.pbf" --tf accept-nodes "place=town" --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/towns.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/all_roads.pbf" --wkv keyValueList="highway.track" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/tracks.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-nodes amenity=bicycle_parking,bicycle_repair_station,bicycle_rental,boat_sharing,bus_station,car_rental,car_sharing,car_wash,charging_station,ferry_terminal,fuel,grit_brin,motorcycle_parking,parking,parking_entrance,parking_space,taxi public_transport=* railway=halt,station,subway_entrance,tram_stop waterway=dock,boatyard --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/transport_point.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf reject-ways --tf reject-relations --tf accept-nodes amenity=shower,toilets,water_point,drinking_water,water_in_place --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/utilities.pbf" | ||
+ | /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/all_places.pbf" --tf accept-nodes "place=village" --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/villages.pbf" | ||
+ | |||
+ | # Construccion de archivos sql | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/aerodromes_point.sql /home/csfuente/hibridinterfaz/media/sql/aerodromes_point.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/aerodromes_point.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/aerodromes_polygon.sql /home/csfuente/hibridinterfaz/media/sql/aerodromes_point.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/aerodromes_polygon.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/all_places.sql /home/csfuente/hibridinterfaz/media/sql/aerodromes_point.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/all_places.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/all_roads.sql /home/csfuente/hibridinterfaz/media/sql/all_roads.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/all_roads.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/banks.sql /home/csfuente/hibridinterfaz/media/sql/banks.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/banks.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/buildings.sql /home/csfuente/hibridinterfaz/media/sql/buildings.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/buildings.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/built_up_areas.sql /home/csfuente/hibridinterfaz/media/sql/built_up_areas.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/built_up_areas.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/cities.sql /home/csfuente/hibridinterfaz/media/sql/cities.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/cities.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/farms.sql /home/csfuente/hibridinterfaz/media/sql/farms.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/farms.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/forest.sql /home/csfuente/hibridinterfaz/media/sql/forest.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/forest.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/grassland.sql /home/csfuente/hibridinterfaz/media/sql/grassland.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/grassland.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/helipads.sql /home/csfuente/hibridinterfaz/media/sql/helipads.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/helipads.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/hotels.sql /home/csfuente/hibridinterfaz/media/sql/hotels.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/hotels.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/inland_water_line.sql /home/csfuente/hibridinterfaz/media/sql/inland_water_line.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/inland_water_line.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/inland_water_polygon.sql /home/csfuente/hibridinterfaz/media/sql/inland_water_polygon.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/inland_water_polygon.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/main_roads.sql /home/csfuente/hibridinterfaz/media/sql/main_roads.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/main_roads.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/medical_point.sql /home/csfuente/hibridinterfaz/media/sql/medical_point.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/medical_point.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/medical_polygon.sql /home/csfuente/hibridinterfaz/media/sql/medical_polygon.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/medical_polygon.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/paths.sql /home/csfuente/hibridinterfaz/media/sql/paths.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/paths.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/police_stations.sql /home/csfuente/hibridinterfaz/media/sql/police_stations.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/police_stations.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/railways.sql /home/csfuente/hibridinterfaz/media/sql/railways.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/railways.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/schools_point.sql /home/csfuente/hibridinterfaz/media/sql/school_point.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/schools_point.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/schools_polygon.sql /home/csfuente/hibridinterfaz/media/sql/schools_polygon.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/schools_polygon.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/towns.sql /home/csfuente/hibridinterfaz/media/sql/towns.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/towns.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/tracks.sql /home/csfuente/hibridinterfaz/media/sql/tracks.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/tracks.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/transport_point.sql /home/csfuente/hibridinterfaz/media/sql/transport_point.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/transport_point.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/utilities.sql /home/csfuente/hibridinterfaz/media/sql/utilities.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/utilities.ini | ||
+ | ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/villages.sql /home/csfuente/hibridinterfaz/media/sql/villages.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/villages.ini | ||
+ | </source> | ||
+ | |||
+ | == Script de 19:13 == | ||
+ | |||
+ | Antes de explicar el script, es necesario crear la base de datos en donde se trabajará, para ello se creó la base de datos 'Chile_osm' en postgres | ||
+ | |||
+ | <source lang="bash"> | ||
+ | createdb Chile_osm \ | ||
+ | psql -d Chile_osm -c 'create extension postgis;'; \ | ||
+ | psql -d Chile_osm -c 'create extension hstore;'; | ||
+ | </source> | ||
+ | |||
+ | Esta base de datos la leemos en geoserver, para ello creamos un nuevo Store y un nuevo Workspace especial para esta data. Acá la llamé ''osm''. | ||
+ | |||
+ | Con ésto, el script generado para esta VM funciona de forma recursiva. Recupera el archivo sql generado en la otra VM, lo codifica para que no existan problemas con los textos, traspasa la data a la base de datos, las ordena y las dispone para que sean leidas. Hace esto para cada uno de los archivos sql generados anteriormente. Por lo que el script queda como | ||
+ | |||
+ | <source lang="bash"> | ||
+ | curl -g -o /home/csfuente/osmex/Chile/aerodromes_point.sql1 http://146.155.17.18:22080/media/sql/aerodromes_point.sql | ||
+ | iconv -f latin1 -t utf-8 /home/csfuente/osmex/Chile/aerodromes_point.sql1 > /home/csfuente/osmex/Chile/aerodromes_point.sql | ||
+ | psql -f /home/csfuente/osmex/Chile/aerodromes_point.sql Chile_osm | ||
+ | psql -f /home/csfuente/osmex/conf/aerodromes_point_alter.sql Chile_osm | ||
+ | psql -f /home/csfuente/osmex/conf/clean.sql Chile_osm | ||
+ | |||
+ | . | ||
+ | . | ||
+ | . | ||
+ | </source> | ||
+ | |||
+ | Finalmente debemos actualizar las capas en geonode para que sean reconocidas por éste, por lo que al final del script se ejecuta el comando | ||
+ | |||
+ | <source lang="bash"> | ||
+ | geonode updatelayers --ignore-errors -w osm | ||
+ | </source> | ||
+ | |||
+ | El que nos permite solicitar la actualización de todas las capas del Workspace osm. | ||
+ | |||
+ | == Horas en las cuales se ejecutan los script == | ||
+ | |||
+ | Ambos script se ejecutan de forma de cron, éstos funcionan todos los lunes a las 4:00 AM y 5:00 AM respectivamente. |
Latest revision as of 12:26, 4 August 2017
Contents
- 1 Documentación instalación de CartoDB
- 2 Recuperación de Grub de servidor
- 3 Configuración UPS
- 4 Mantención VM MiCiudad
- 5 omeka.org
- 6 Extractor de tweets
- 7 OwnCloud
- 8 OpenTripPlanner
- 9 OSM + Overpass
- 10 Arrancar web cuando páginas están en Django Python
- 11 CartoDB
- 12 Obtener polígonos formato .poly de ciudades
- 13 Migración OTP, Overpass en VM de WYP
- 14 Actualizar archivo OSM con un archivo OSC
- 15 Instalación Nominatim 3.0
- 16 Mapas de OSM en Geonode
Documentación instalación de CartoDB
Todo se encuentra acá http://wiki.geosteiniger.cl/mediawiki-1.22.7/index.php/Installing_CartoDB_for_CEDEUS#Trabajo_Cristian
Recuperación de Grub de servidor
Todo acá http://wiki.geosteiniger.cl/mediawiki-1.22.7/index.php/Solving_Ubuntu_GRUB_issue
Configuración UPS
Configuración de red
La UPS se encuentra configurada por red desde el servidor 146.155.17.19 por la salida de red "em2". Su configuración de red es:
IP: 192.168.100.2 Mask: 255.255.255.0 Gateway: 192.168.100.1
La configuración en la UPS se realizó mediante un cable USB-Serial hacia el servidor y la comunicación se hizo por minicom con la configuración:
A - Serial Device : /dev/ttyUSB0 | B - Lockfile Location : /var/lock | C - Callin Program : | D - Callout Program : | E - Bps/Par/Bits : 9600 8N1 | F - Hardware Flow Control : No | G - Software Flow Control : No
Por lo mismo, la configuración de la boca de red "em2" debe tener la siguiente IP para que funcione correctamente:
IP: 192.168.100.1 Mask: 255.255.255.0
Por otro lado, para la configuración del servidor es necesario que se fije estáticamente la IP a la tarjeta de red em2. Para ello editamos el archivo /etc/network/interfaces
y agregamos las líneas:
auto em2 iface em2 inet static address 192.168.100.1
Configuración en el servidor
Se decide realizar la instalación con Nat, para ello lo instalamos mediante:
apt-get install nut nut-monitor nut-cgi nut-snmp snmp
Luego, se verifica si el usuario nut fue creado posterior a la instalación:
root@cedeusgeonode:~# id nut uid=109(nut) gid=117(nut) groups=117(nut),20(dialout)
Luego se edita el archivo /etc/nut/ups.conf para indicar el driver a utilizar para detectar la UPS, en nuestro caso es el siguiente:
[trust] driver = snmp-ups port = 192.168.100.2 community = public snmp_version = v1 pollfreq = 15 privProtocol=AES desc = "Dispositivo UPS APC SNMP v1"
Luego iniciamos el servicio
upsdrvctl start
Lo siguiente es configurar los servicios correspondientes que monitoreen la UPS, con tal de que apaguen el servidor cuando no exista energía.
Editamos el archivo /etc/nut/upsd.user y agregamos
[root] password=t3st actions = SET instcmds = ALL [upsmon] password=pass upsmon master upsmon slave
Con esto estamos agregando usuarios que permitan la interacción entre los módulos. Luego para upsmon editamos el archivo /etc/nut/upsmon.conf y modificamos las siguientes líneas:
MONITOR snmpv1 1 upsmon pass master POWERDOWNFLAG /etc/killpower SHUTDOWNCMD "/sbin/shutdown -h now"
Damos los permisos necesarios a los archivos para que sean ejecutados correctamente
chown root:nut /etc/nut/* chmod 640 /etc/nut/*
Finalmente le decimos que inicie los servicios cuando prenda el servidor, creamos un archivo llamado /etc/default/nut y le agregamos:
START_UPSD=yes START_UPSMON=yes
y editamos /etc/nut/nut.conf
MODE=standalone
Se espera que con esta configuración, el servidor que está conectado directamente con la UPS se apague cuando la UPS esté con poca energía, sin embargo falta aún la configuración del otro servidor, el cual se debe hacer modificando las configuraciones de upsd y upsmon respectivamente.
Ver estado de la UPS
Para ver en que estado se encuentra la UPS, podemos ver todos los detalles gracias al comando:
upsc snmpv1
En caso de que no exista conexión, puede ser a causa de que el dirver no se encuentre corriendo, la solución para levantar dicho driver es ejecutar
upsdrvctr start
Agregar -18 y .14 al apagado
http://2tazasdelinux.blogspot.cl/2014/11/controlar-nuestro-sai-con-nut.html
Mantención VM MiCiudad
El problema que contenía la VM fue que no se podía instalar ni actualizar ningún programa debido a que la carpeta /boot estaba al 100%, esto es causado por reiteradas actualizaciones de kernel (es normal) en donde se guarda una copia del kernel instalado anteriormente, por lo que hay que borrar dichos respaldos.
Al utilizar el comando df -h
vemos el disco lleno. Basta con ejecutar los siguientes comandos con permisos de administrador:
dpkg --get-selections|grep 'linux-image*'|awk '{print $1}'|egrep -v "linux-image-$(uname -r)|linux-image-generic" |while read n;do apt-get -y remove $n;done apt-get autoclean
Luego de esto ya es posible la actualización e instalación de aplicaciones via apt-get
omeka.org
Ubuntu
Se propuso la instalación del servicio Omeka, para ello utilizamos una VM con Ubuntu, en el caso de prueba se utiliza Ubuntu 15.04.
Primero, con permisos de administrador, se actualiza la VM y se instalan las dependencias para Omeka
sudo apt-get update sudo apt-get install -y unzip php5 php5-mysql apache2 mysql-server imagemagick
Luego se descargan los archivos para la instalación de Omeka
cd wget http://omeka.org/files/omeka-2.3.1.zip unzip omeka-2.3.1.zip
Se mueven los archivos al directorio web
sudo mv omeka-2.0/* /var/www/ sudo mv omeka-2.0/.htaccess /var/www/ sudo rm /var/www/index.html
Configurar la base de datos, creando un usuario y sus permisos
sudo groupadd webdev sudo usermod -a -G webdev ubuntu cd /var sudo chown -R root.webdev www sudo chmod 775 www cd /var/www sudo find . -type d | xargs sudo chmod 775 sudo find . -type f | xargs sudo chmod 664 sudo find files -type d | xargs sudo chmod 777 sudo find files -type f | xargs sudo chmod 666
Crear la base de datos
mysql -u root -p
create database omeka; grant all privileges on omeka.* to 'ubuntu' identified by 'reverse'; flush privileges; quit;
Editar el archivo db.ini modificando
[database] host = "localhost" username = "ubuntu" password = "reverse" dbname = "omeka" prefix = "omeka_"
Finalmente activar mod_rewrite
sudo a2enmod rewrite
Editar el archivo /etc/apache2/sites-available/default cambiando "AllowOverride None" a "AllowOverride All".
Listo :)
Lamentablemente esta instalación trae problemas con la activación de mod_rewrite.
Fedora Server 23
Lo primero son las dependencias
dnf install unzip mysql-server php php-mysql ImageMagick
chkconfig --levels 235 httpd on chkconfig --levels 235 mariadb on
setenforce 0 systemctl start mariadb
mysql_secure_installation
Colocar contraseña para cuenta de administrador en base de datos
mysql -u root -p mysql> use mysql mysql> insert into user(host, user, password) values('localhost','omeka_user',password('test')); mysql> insert into db(host,db,user,Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv) values ('localhost','omeka_db','omeka_user','Y','Y','Y','Y','Y','Y'); mysql> quit
mysqladmin -u root -p create omeka_db mysqladmin -u root -p reload mysql> ALTER DATABASE omeka_db DEFAULT CHARACTER SET 'utf8' DEFAULT COLLATE 'utf8_unicode_ci'; mysql> quit
Editar el archivo /etc/httpd/conf/httpd.conf, cambiando el valor de AllowOverride que se encuentra dentro del bloque <Directory "/var/www/html"> por All.
systemctl restart httpd
wget http://omeka.org/files/omeka-2.3.1.zip
descomprimir archivo zip y renombrar carpeta por omeka
editar el archivo omeka/db.ini
con sus respectivos datos:
[database] host = "localhost" username = "omeka_user" password = "test" name = "omeka_db" prefix = "omeka_" ;port = ""
Extractor de tweets
dependencias de trabajo:
sudo apt-get install git vim
dependencias: tweepy y psycopg2
sudo pip install tweepy sudo apt-get install python-psycopg2
También es necesario instalar y crear un usuario en postgresql
sudo apt-get install postgresql postgresql-contrib sudo -i -u postgres createuser --interactive # csfuente as superuser createdb csfuente logout
luego clonar el repositorio git
git clone http://146.155.17.18:18080/csfuente/twitter_extractor.git cd twitter_extractor
Aquí tenemos dos archivos que ejecutar, primero es main.py el cual, al ser ejecutado por primera vez hay que poner un -r al final para crear la tabla de la base de datos (también borra todo dato anterior).
python main.py <Cuenta de twitter> [-r]
Luego que finalice el anterior, se debe ejecutar el streaming, para recepcionar los tweets que vendrán.
python stream <Cuenta de twitter>
Ejemplo
python main.py Cristian_F_G -r python main.py Cristian_F_G
OwnCloud
backup location after clicking on OwnCloud update: /var/www/html/owncloud/data/updater_backup/8.2.2.2-8fa08547
Variable for URL name:
'overwrite.cli.url' => 'http://146.155.17.18:17080/owncloud',
OpenTripPlanner
Instalación
Son necesarios dos programas escenciales, Java 8 y Maven mayor a 3.1.1
Para Java ejecutamos
sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk
Para Maven
sudo apt-get install gdebi wget http://ppa.launchpad.net/natecarlson/maven3/ubuntu/pool/main/m/maven3/maven3_3.2.1-0~ppa1_all.deb sudo gdebi maven3_3.2.1-0~ppa1_all.deb sudo ln -s /usr/share/maven3/bin/mvn /usr/bin/mvn
Luego necesitamos git
sudo apt-get install git
Y finalmente procedemos con la copia e instalación de OpenTripPlanner
git clone https://github.com/opentripplanner/OpenTripPlanner.git cd OpenTripPlanner mvn clean package -DskipTests
Creamos la carpeta con la data
mkdir /home/csfuente/otp cd /home/csfuente/otp
Descargamos la data en esta carpeta....
wget http://www.dtpm.cl/descargas/gtfs/GTFS.zip
Ejecutamos OTP desde su directorio con el comando
./otp --build /home/csfuente/otp --inMemory
Y para todo Chile:
./otp --build /home/csfuente/otpTransantiago --inMemory
Actualizar la información
Para actualizar la información es necesario ir revisando los cambios de los archivos GTFS que se encuentran disponibles en la red, cuando notemos que uno es más nuevo es necesario descargarlo y ubicarlo en la carpeta que contiene todos los archivos similares (Actualmente se está utilizando la carpeta /home/csfuente/otpTransantiago ) por lo que entramos a dicha carpeta y descargamos los datos con wget. Finalmente reiniciamos la VM, esperamos a que inicie (cerca de ~10 minutos) y estará con todos los datos actualizados.
OSM + Overpass
Instalación de servidor de OSM
Para la instalación se utiliza una VM con Ubuntu 14.04. Las instrucciones fueron sacadas de:
* https://switch2osm.org/serving-tiles/manually-building-a-tile-server-14-04/
Y actualizadas con la nueva versión de osm2pgsql
* https://github.com/openstreetmap/osm2pgsql
Lo primero es instalar las dependencias necesarias para proceder con la instalación de los componentes que utiliza OSM.
sudo apt-get install libboost-all-dev subversion git-core tar unzip wget bzip2 build-essential \ autoconf libtool libxml2-dev libgeos-dev libgeos++-dev libpq-dev libbz2-dev libproj-dev munin-node \ munin libprotobuf-c0-dev protobuf-c-compiler libfreetype6-dev libpng12-dev libtiff4-dev libicu-dev \ libgdal-dev libcairo-dev libcairomm-1.0-dev apache2 apache2-dev libagg-dev liblua5.2-dev ttf-unifont \ lua5.1 liblua5.1-dev libgeotiff-epsg node-carto
Luego hay que instalar Postgresql y postgis
sudo apt-get install postgresql postgresql-contrib postgis postgresql-9.3-postgis-2.1
Ahora es necesario crear la base de datos, para ello necesitaremos de un usuario en postgres, por ahora se utilizará 'username' para la documentación.
sudo -u postgres -i createuser username createdb -E UTF8 -O username gis exit
Lo mismo para el sistema Unix
sudo useradd -m username sudo passwd username
Creamos las tablas de postgres y las asignamos al usuario
sudo -u postgres psql \c gis CREATE EXTENSION postgis; ALTER TABLE geometry_columns OWNER TO username; ALTER TABLE spatial_ref_sys OWNER TO username; \q exit
Pasamos a la instalación de osm2pgsql, para ello crearemos la carpeta 'src' en la raiz de root para adjuntar los archivos
mkdir ~/src cd ~/src git clone https://github.com/openstreetmap/osm2pgsql.git
Instalamos sus dependencias
sudo apt-get install make cmake g++ libboost-dev libboost-system-dev \ libboost-filesystem-dev libexpat1-dev zlib1g-dev \ libbz2-dev libpq-dev libgeos-dev libgeos++-dev libproj-dev lua5.2 \ liblua5.2-dev
Compilamos e instalamos
mkdir build && cd build cmake .. make sudo make install
Procedemos a instalar Mapnik
cd ~/src git clone git://github.com/mapnik/mapnik cd mapnik git branch 2.2 origin/2.2.x git checkout 2.2 python scons/scons.py configure INPUT_PLUGINS=all OPTIMIZATION=3 SYSTEM_FONTS=/usr/share/fonts/truetype/ make sudo make install sudo ldconfig
Podemos verificar que Mapnik funciona con
python >>> import mapnik >>>
Ahora la instalación de mod_tile y render
cd ~/src git clone git://github.com/openstreetmap/mod_tile.git cd mod_tile ./autogen.sh ./configure make sudo make install sudo make install-mod_tile sudo ldconfig
Se crea la carpeta /usr/local/share/maps/style para los archivos stylesheet y los recursos necesarios, además instalamos y configuramos OSM Bright
sudo mkdir -p /usr/local/share/maps/style sudo chown username /usr/local/share/maps/style cd /usr/local/share/maps/style wget https://github.com/mapbox/osm-bright/archive/master.zip wget http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip wget http://data.openstreetmapdata.com/land-polygons-split-3857.zip mkdir ne_10m_populated_places_simple cd ne_10m_populated_places_simple wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places_simple.zip unzip ne_10m_populated_places_simple.zip rm ne_10m_populated_places_simple.zip cd .. unzip '*.zip' mkdir osm-bright-master/shp mv land-polygons-split-3857 osm-bright-master/shp/ mv simplified-land-polygons-complete-3857 osm-bright-master/shp/ mv ne_10m_populated_places_simple osm-bright-master/shp/ cd osm-bright-master/shp/land-polygons-split-3857 shapeindex land_polygons.shp cd ../simplified-land-polygons-complete-3857/ shapeindex simplified_land_polygons.shp cd ../..
Ahora configuramos OSM Bright
vim osm-bright/osm-bright.osm2pgsql.mml
Acá hay que buscar las direcciones que se encuentran al lado derecho del tag 'file' y cambiar la dirección por la ruta de los archivos que cambiamos anteriormente, además agregamos su característica de 'type' tal como se muestra a continuación
"file": "/usr/local/share/maps/style/osm-bright-master/shp/land-polygons-split-3857/land_polygons.shp", "type": "shape"
"file": "/usr/local/share/maps/style/osm-bright-master/shp/simplified-land-polygons-complete-3857/simplified_land_polygons.shp", "type": "shape",
"file": "/usr/local/share/maps/style/osm-bright-master/shp/ne_10m_populated_places_simple/ne_10m_populated_places_simple.shp", "type": "shape"
Hay que ser riguroso con no olvidar las comas finales de cada línea. Luego, en la sección 'ne-places', reemplazar 'srs' y 'srs-name' con esto:
"srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
Guardamos y salimos.
Nos queda ahora compilar todo para que Mapnik pueda ser utilizado. Creamos el archivo de configuración y cambiamos la linea de pointing de ~/Documents/Mapbox/project a /usr/local/share/maps/style y cambiamos dbname de osm a gis. Guardamos y salimos.
cp configure.py.sample configure.py vim configure.py #Realizar cambios nombrados ./make.py cd ../OSMBright/ carto project.mml > OSMBright.xml
Listo con ésto, ahora debemos configurar el render. Como root es necesario editar el archivo de configuración de render ubicado en /usr/local/etc/renderd.conf y cambiar las siguientes lineas en las secciones de render, mapnik y default.
socketname=/var/run/renderd/renderd.sock plugins_dir=/usr/local/lib/mapnik/input font_dir=/usr/share/fonts/truetype/ttf-dejavu XML=/usr/local/share/maps/style/OSMBright/OSMBright.xml HOST=localhost
Las líneas que se encuentran comentadas con un ; deben ser descomentadas.
Ahora creamos las carpetas necesarias para usar el sistema de mod_tile
sudo mkdir /var/run/renderd sudo chown username /var/run/renderd sudo mkdir /var/lib/mod_tile sudo chown username /var/lib/mod_tile
creamos en archivo /etc/apache2/conf-available/mod_tile.conf y agregamos una sola línea:
LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so
Y editamos el archivo /etc/apache2/sites-available/000-default.conf agregando esto justo después del email del administrador
LoadTileConfigFile /usr/local/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 30
Finalmente agregamos mod_tile a apache y lo reiniciamos
sudo a2enconf mod_tile sudo service apache2 reload
Ahora debemos dejar mas potente postgres para que no funcione lento al momento de solicitar datos, editamos con sudo el archivo /etc/postgresql/9.3/main/postgresql.conf para cambiar:
shared_buffers = 128MB checkpoint_segments = 20 maintenance_work_mem = 256MB autovacuum = off
editamos tambien con sudo el archivo /etc/sysctl.conf para agregar una línea entre las definiciones de kernel
# Increase kernel shared memory segments - needed for large databases kernel.shmmax=268435456
Reiniciamos la VM y luego ejecutamos:
sudo sysctl kernel.shmmax
y verificamos que nos muestre el número que pusimos
Ahora nos queda cargar las tiles correspondientes al servidor, para este trabajo se utilizan solo las tiles de Chile.
sudo mkdir /usr/local/share/maps/planet sudo chown username /usr/local/share/maps/planet cd /usr/local/share/maps/planet wget http://download.geofabrik.de/south-america/chile-latest.osm.pbf
Importamos la data descargada en la base de datos, el número que se encuentra luego de -C debe ser cambiado dependiendo de la memoria RAM disponible para la máquina. Se sugiere comenzar con un númerp 16000 y si excede la memoria entonces reducir dicho número. Para las pruebas fue posible ejecutar el comando con un -C de 3500
osm2pgsql --slim -d gis -C 3500 --number-processes 3 /usr/local/share/maps/planet/chile-latest.osm.pbf
Tomar café y esperar. Dependiendo de la información a cargar, puede tardar entre 10 minutos hasta 24 horas.
Finalmente levantamos el servidor y lo hacemos correr, para ello ejecutamos
sudo mkdir /var/run/renderd sudo chown username /var/run/renderd sudo -u username renderd -f -c /usr/local/etc/renderd.conf
y en una terminal diferente
sudo service apache2 reload
Podemos probar que el servidor se encuentra corriendo entrando a la dirección http://localhost/osm_tiles/0/0/0.png para ver una imagen del mundo. Para otras imágenes es necesario rescatarlas con http://localhost/osm_tiles/{z}/{x}/{y}.png (localhost puede ser cambiado por la IP de la VM)
Instalación de Overpass API
La información fue extraida desde las siguientes páginas con modificación en los link de descarga de la data:
http://overpass-api.de/no_frills.html http://overpass-api.de/full_installation.html
Los comandos utilizados fueron:
Primero son las dependencias base
sudo apt-get install wget g++ make expat libexpat1-dev zlib1g-dev
Luego se realiza la instalación del software de Overpass, para ello se utiliza como directorio de ejecutables la misma base del archivo a descargar (perfectamente se podría cambiar)
wget http://dev.overpass-api.de/releases/osm-3s_v0.7.52.tar.gz gunzip <osm-3s_v0.7.52.tar.gz | tar xvf - cd osm-3s_v0.7.52/ ./configure --prefix="`pwd`" make CXXFLAGS="-O3"
Se crea la carpeta de la base de datos, se descarga la información y se adjunta a Overpass (Es posible solo utilizar Chile)
mkdir db wget -O planet.osm.bz2 "http://planet.osm.org/planet/planet-latest.osm.bz2" bin/init_osm3s.sh planet.osm.bz2 "db/" "./" --meta
Con esto ya tenemos la data de Overpass, ahora lo uniremos a Apache, para ello lo instalamos y configuramos para cgi según http://wiki.openstreetmap.org/wiki/Overpass_API/Installation#Setting_up_the_Web_API
sudo apt-get install apache2 sudo a2enmod cgi sudo vim /etc/apache2/sites-available/000-default.conf
En el archivo agregamos las líneas faltantes para que nos quede algo similar a esto:
<VirtualHost *:80> ServerAdmin webmaster@localhost ExtFilterDefine gzip mode=output cmd=/bin/gzip DocumentRoot [YOUR_HTML_ROOT_DIR] # This directive indicates that whenever someone types http://www.mydomain.com/api/ # Apache2 should refer to what is in the local directory [YOUR_EXEC_DIR]/cgi-bin/ ScriptAlias /api/ [YOUR_EXEC_DIR]/cgi-bin/ # This specifies some directives specific to the directory: [YOUR_EXEC_DIR]/cgi-bin/ <Directory "[YOUR_EXEC_DIR]/cgi-bin/"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch # For Apache 2.4: # Order allow,deny # For Apache > 2.4: Require all granted #SetOutputFilter gzip #Header set Content-Encoding gzip </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, alert, emerg LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost>
Utilizando [YOUR_HTML_ROOT_DIR] por el que venía por defecto, [YOUR_EXEC_DIR] la dirección completa en donde compilamos Overpass y dejando sin editar ErrorLog y CustomLog.
Luego se reinicia el demonio de apache
sudo service apache2 restart
Finalmente ejecutamos el proceso que nos permite recuperar los archivos que buscamos, para ello nos posicionamos en la carpeta del ejecutable en donde instalamos Overpass y escribimos el siguiente comando:
sudo nohup bin/dispatcher --osm-base --meta --db-dir="db" &
Listo, ahora para poder recuperar un archivo xml con los cambios que deseamos probar, debemos ejecutar el siguiente comando en algún otro computador (o el mismo)
wget --output-document=[nombre_archivo.xml] http://[IP_de_la_máquina]/api/interpreter?data=[código_a_ejecutar_en_overpass]
como ejemplo, en la misma máquina podemos ejecutar
wget --output-document=test.xml http://localhost/api/interpreter?data=%3Cprint%20mode=%22body%22/%3E
<?xml version="1.0" encoding="UTF-8"?> <osm-derived> <note> The data included in this document is from www.openstreetmap.org. It has there been collected by a large group of contributors. For individual attribution of each item please refer to http://www.openstreetmap.org/api/0.6/[node|way|relation]/#id/history </note> <meta osm_base=""/> </osm-derived>
PD: Los bancos de mi ciudad:
http://localhost/api/interpreter?data=%3Cosm-script%3E%3Cquery%20into=%22_%22%20type=%22node%22%3E%3Chas-kv%20k=%22amenity%22%20modv=%22%22%20v=%22bank%22/%3E%3Cbbox-query%20e=%22-71.72712922096252%22%20into=%22_%22%20n=%22-35.59095565308603%22%20s=%22-35.5972720219081%22%20w=%22-71.73655986785889%22/%3E%3C/query%3E%3Cprint%20e=%22%22%20from=%22_%22%20geometry=%22skeleton%22%20limit=%22%22%20mode=%22body%22%20n=%22%22%20order=%22id%22%20s=%22%22%20w=%22%22/%3E%3C/osm-script%3E
<?xml version="1.0" encoding="UTF-8"?> <osm version="0.6" generator="Overpass API"> <note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note> <meta osm_base=""/> <node id="2540586850" lat="-35.5947536" lon="-71.7334849"> <tag k="amenity" v="bank"/> <tag k="name" v="BancoEstado"/> </node> <node id="2540586923" lat="-35.5946228" lon="-71.7339302"> <tag k="amenity" v="bank"/> <tag k="name" v="Banco de Chile"/> </node> <node id="2540635212" lat="-35.5956784" lon="-71.7295394"> <tag k="amenity" v="bank"/> <tag k="name" v="Santander"/> </node> </osm>
Actualización de Overpass
Para la actualización debemos realizar nuevamente una instalación completa por cada vez que sale una versión, por lo que tenemos que comenzar con descargar la nueva versión desde el comando wget en adelante. La última versión instalada actualmente es la 0.7.53. Es posible utilizar el mismo archivo .osm.bz2 para evitar descargarlo nuevamente, éste lo encontraremos dentro de la carpeta de la versión anterior.
En la edición del archivo /etc/apache2/sites-available/000-default.conf debemos cambiar la ruta [YOUR_EXEC_DIR] por la nueva generada por la descompresión de la nueva versión.
Para encontrar las nuevas versiones de Overpass es necesario visitar http://dev.overpass-api.de/releases/
Arrancar web cuando páginas están en Django Python
Cuando una VM se encuentra con una web en etapa de desarrollo con Django Python, para que ésta corra hay que hacer lo siguiente:
Primero entrar a la VM
ssh 146.155.17.18 -p 22022
Posicionarse en la carpeta del proyecto (Ejemplo con VM de Gatherer)
cd hibridinterfaz
Iniciar Screen, aplicación que abre una nueva terminal que es independiente a SSH
screen
Correr el servidor de Django con el comando
python manage.py runserver
Con esto ya la web está corriendo sin problemas, para salir de Screen hay que apretar Ctrl+a y luego Ctrl+d.
VMs con Django
VM | Carpeta de proyecto |
---|---|
18:22080 | /home/csfuente/hibridinterfaz |
18:21080 | /home/csfuente/Indicadores |
19:17080 | /home/csfuente/wyp-django |
CartoDB
Levantar CartoDB cuando la máquina es encendida
Subir CartoDB es un poco tedioso pero es posible sin complicaciónes, lo primero es exportar lo siguiente: (copy/paste a la terminal)
export PATH=$PATH:/opt/rubies/ruby-2.2.3/bin export CPLUS_INCLUDE_PATH=/usr/include/gdal export C_INCLUDE_PATH=/usr/include/gdal export PATH=$PATH:/usr/include/gdal export PATH=$PATH:$PWD/node_modules/grunt-cli/bin
En mi cuenta agregué esas lineas al archivo .bashrc para que se ejecuten cada vez que entro por ssh a la VM. Lo siguiente es ejecutar los procesos necesarios para que cartodb corra, para ello se ejecuta cada uno de ellos en una screen distinta (ya que no contamos con varias terminales por ssh)
cd /home/csfuente/ screen redis-server
ctrl+a y ctrl+d
cd cartodb screen bundle exec script/resque
ctrl+a y ctrl+d
screen bundle exec thin start --threaded -p 3000 --threadpool-size 5
ctrl+a y ctrl+d
cd /home/csfuente/Wireshark*** screen node app.js development
ctrl+a y ctrl+d
cd /home/csfuente/CartoDB-SQL-API screen node app.js development
ctrl+a y ctrl+d
Con todo esto ahora podemos entrar a 146.155.17.18:3000 y usar cartodb.
Puertos utilizados en .18 por cartodb
Puerto | Servicio |
---|---|
18:3000 | cartodb |
18:8080 | cartodb-SQL-API |
18:8181 | Wireshark |
18:6379 | redis-server |
Obtener polígonos formato .poly de ciudades
Gracias a las instrucciones dadas en https://github.com/JamesChevalier/cities podemos obtener el polígono de la ciudad solicitada, los pasos son los siguientes:
- Entrar a http://nominatim.openstreetmap.org/ y poner en el buscador la ciudad que estamos buscando
- Al encontrarla, nos vamos a sus Detalles
- Copiamos el número que aparece en OSM: Relation XXXXXX
- Vamos a http://polygons.openstreetmap.fr/ y pegamos éste número en Id of relation
- Descargamos la información en el link poly correspondiente
Migración OTP, Overpass en VM de WYP
Migración de OTP
Con el trabajo realizado ya de la instalación de OTP más arriba en esta wiki, se movió la carpeta en la cual fue compilado el repositorio junto con los graphs generados hasta entonces a la VM de WYP. los archivos quedaron en la carpeta /home/csfuente/OTP/ en donde se es posible ejecutar el servidor sin problemas. OTP al ser ejecutado, su servidor trabaja en el puerto 5050 por lo que se creó una nueva regla nat para la VM el cual se es posible llegar a ella mediante el puerto 17050 en el servidor .19.
El comando para ser ejecutado en esta VM es:
./home/csfuente/OTP/otp --server --basePath /home/csfuente/OTP/ --router chile --preFlight --autoScan --autoReload --port 5050
Migración de Overpass
Al igual que OTP, Overpass no es necesario ser recompilado. Los archivos de Overpass fueron trasladados a la VM a la carpeta /home/csfuente/Overpass/ y al ser ejecutado funciona directamente en el puerto 80. La regla nat fue modificada para apache redirigiendo lo del puerto 80 al puerto 17051 del servidor .19.
Tambien fue necesario agregar las reglas de Apache2 correspondientes (también en esta misma wiki)
Para ejecutarlo en esta VM es necesario escribir en la terminal:
rm /home/csfuente/Overpass/db/osm3s* || true rm /dev/shm/osm3s* || true cd /home/csfuente/Overpass && bin/dispatcher --osm-base --meta --db-dir="db"
Modificaciones en arranque de WYP
WYP estaba funcionando bajo Nginx, el cual se encargaba de redirigir el puerto 8000 al puerto 80 para que fuera leido por .19 en su puerto 17080. Para no modificar la URL de WYP fue necesario volver a cambiar a apache2 y ejecutar Django en el puerto 81. Crear una nueva regla nat para que leyera el puerto 81 de la VM y fuera ejecutado en 17080. De esta forma la URL no cambia para éste.
El nuevo comando para ejeutar WYP es:
cd /home/csfuente/wyp-django/ && python manage.py runserver 0.0.0.0:81
Ejecutar todos los procesos al iniciar la VM
Para ello fue necesario editar el archivo /etc/rc.local
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Overpass rm /home/csfuente/Overpass/db/osm3s* || true rm /dev/shm/osm3s* || true cd /home/csfuente/Overpass && bin/dispatcher --osm-base --meta --db-dir="db" & # WYP cd /home/csfuente/wyp-django/ && python manage.py runserver 0.0.0.0:81 & # OTP ./home/csfuente/OTP/otp --server --basePath /home/csfuente/OTP/ --router chile --preFlight --autoScan --autoReload --port 5050 & exit 0 ~
Actualizar archivo OSM con un archivo OSC
Para actualizar la información con calles/nodos/parques nuevos en un arhivo de formato OSM, es necesario generar un archivo OSC. Para combinarlos hay que usar el comando
osmchange -i=old.osm changefile.osc >new.osm
Link de interes
http://wiki.openstreetmap.org/wiki/Osmchange_(program) http://wiki.openstreetmap.org/wiki/Osmchange
Instalación Nominatim 3.0
Nominatim 3.0 fue instalado en la VM 18:22081. Para la instalación se siguieron los pasos a continuación.
La VM 18:22 se encontraba con Ubuntu 14.04 LTS, lo primero que se hizo fue actualizar a Ubuntu 16 para utilizar las últimas dependencias, para eso ejecutamos:
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade sudo do-release-upgrade
Posterior a esto solo hay que seguir las indicaciones en pantalla.
Luego, comienza la instalación de Nominatim, se siguieron las instrucciones de Github Nominatim, lo primero es instalar las dependencias
sudo apt-get install -y build-essential cmake g++ libboost-dev libboost-system-dev \ libboost-filesystem-dev libexpat1-dev zlib1g-dev libxml2-dev\ libbz2-dev libpq-dev libgeos-dev libgeos++-dev libproj-dev \ postgresql-server-dev-9.5 postgresql-9.5-postgis-2.2 postgresql-contrib-9.5 \ apache2 php php-pgsql libapache2-mod-php php-pear php-db \ php-intl git
Se crea el usuario 'nominatim'.
sudo useradd -d /srv/nominatim -s /bin/bash -m nominatim
Para hacer las cosas más comodas ejecutamos estos export para ahorrarnos text más adelante
export USERNAME=nominatim export USERHOME=/srv/nominatim
Permitimos que la carpeta de nominatim sea leida por el server
chmod a+x $USERHOME
Ahora, debemos crear la base de datos en postgres, el usuario que manejará la base de datos será nominatim, por lo que ejecutamos
sudo -u postgres createuser -s $USERNAME sudo -u postgres createuser www-data sudo systemctl restart postgresql
buscamos y editamos el archivo fe configuración de postgres llamado postgresql.conf y editamos los valores
shared_buffers (2GB) maintenance_work_mem (10GB) work_mem (50MB) effective_cache_size (24GB) synchronous_commit = off checkpoint_segments = 100 # only for postgresql <= 9.4 checkpoint_timeout = 10min checkpoint_completion_target = 0.9
Creamos el archivo de configuración para apache en un archivo aparte en conf-available ejecutando el siguiente comando
sudo tee /etc/apache2/conf-available/nominatim.conf << EOFAPACHECONF <Directory "$USERHOME/Nominatim/build/website"> Options FollowSymLinks MultiViews AddType text/html .php DirectoryIndex search.php Require all granted </Directory> Alias /nominatim $USERHOME/Nominatim/build/website EOFAPACHECONF sudo a2enconf nominatim sudo systemctl restart apache2
Recién ahora pasamos a la instalación de Nominatim, nos vamos al home de nominatim, copiamos el repositorio y ejecutamos los siguientes comandos
cd $USERHOME git clone --recursive git://github.com/openstreetmap/Nominatim.git cd Nominatim mkdir build cd build cmake $USERHOME/Nominatim make tee settings/local.php << EOF <?php @define('CONST_Website_BaseURL', '/nominatim/'); EOF
Ahora, debemos importar la información de OSM, para ello descargamos el archivo .osm correspondiente, OJO, el archivo debe estar en formato .osm.
wget http://download.geofabrik.de/south-america/chile-latest.osm.bz2 bzip2 -d chile-latest.osm.bz2 ./utils/setup.php --osm-file chile.latest.osm --all 2>&1 | tee setup.log
Con esto tenemos Nominatim corriendo con la data de Chile. Para agregar más información (como la data de OSM de Canadá) es necesario limpiar la base de datos de postgres, unir todos los archivos .osm en uno solo y ejecutar el último comando señalada en esta documentación con el nuevo nombre del archivo .osm.
Mapas de OSM en Geonode
Es posible publicar mapas actualizados en geonode desde la data obtenida directamente de los servidores de OSM, se utilizó esta guía para poder realizar la actualización. Se debieron utilizar 2 VMs para este trabajo debido a que geonode está instalado en Ubuntu 12.04 y tiene conflictos con los paquetes de postgres el cual, al tratar de instalar una nueva versión de éste, solicita eliminar geonode (lo cual obviamente no queremos) por lo que el trabajo de osmosis y transformación de los datos a sql se realiza en la VM 18:22 (Gatherer). Se construyeron dos script, uno para la VM 18:22 y otro para la 19:13 (Geonode), Se explicarán los script en el orden en que se ejecutan.
Script de 18:22
Este script cumple con tres funciones principales, descargar la información de las calles de los servidores de OSM para Chile, extraer la información necesaria (tales como estaciones de policía, calles principales, hospitales, etc.) y posteriormente esta información es transformada a un archivo sql para ser insertada en una base de datos. El script construido es el siguiente:
DB=/home/csfuente/hibridinterfaz/media/sql_osm SETNAME=/home/csfuente/hibridinterfaz/media/sql # Creacion del directorio mkdir -p /home/csfuente/hibridinterfaz/media/sql # Descarga de archivo latest.pbf curl -g -o /home/csfuente/hibridinterfaz/media/sql/latest.pbf http://download.geofabrik.de/south-america/chile-latest.osm.pbf # Construccion de archivos pbf /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --nkv keyValueList="aeroway.aerodrome" --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/aerodromes_point.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --wkv keyValueList="aeroway.aerodrome" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/aerodromes_polygon.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --nkv keyValueList="place.city,place.borough,place.suburb,place.quarter,place.neighbourhood,place.city_block,place.plot,place.town,place.village,place.hamlet,place.isolated_dwelling,place.farm,place.allotments" --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/all_places.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-ways "highway=*" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/all_roads.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-nodes amenity=bank,atm,bureau_de_change --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/banks.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-ways "building=*" --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/buildings.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-ways landuse=residential,allotments,cemetery,construction,depot,garages,brownfield,commercial,industrial,retail --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/built_up_areas.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/all_places.pbf" --tf accept-nodes "place=city" --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/cities.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --wkv keyValueList="landuse.farm,landuse.farmland,landuse.farmyard,landuse.livestock" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/farms.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --wkv keyValueList="landuse.forest,natural.wood" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/forest.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --wkv keyValueList="landuse.grass,landuse.meadow,landuse.scrub,landuse.village_green,natural.scrub,natural.heath,natural.grassland" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/grassland.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-nodes aeroway=helipad,heliport --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/helipads.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --nkv keyValueList="tourism.hotel,tourism.hostel,tourism.motel,tourism.guest_house" --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/hotels.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf reject-relations --tf accept-ways waterway=* --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/inland_water_line.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-ways natural=water,wetland,bay landuse=reservoir,basin,salt_pond waterway=river,riverbank --tf accept-relations natural=water,wetland,bay landuse=reservoir,basin,salt_pond waterway=river,riverbank --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/inland_water_polygon.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/all_roads.pbf" --wkv keyValueList="highway.motorway,highway.trunk,highway.primary" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/main_roads.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --nkv keyValueList="amenity.baby_hatch,amenity.clinic,amenity.dentist,amenity.doctors,amenity.hospital,amenity.nursing_home,amenity.pharmacy,amenity.social_facility,amenity.veterinary,amenity.blood_donation" --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/medical_point.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/buildings.pbf" --wkv keyValueList="amenity.baby_hatch,amenity.clinic,amenity.dentist,amenity.doctors,amenity.hospital,amenity.nursing_home,amenity.pharmacy,amenity.social_facility,amenity.veterinary,amenity.blood_donation" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/medical_polygon.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/all_roads.pbf" --wkv keyValueList="highway.footway,highway.bridleway,highway.steps,highway.path" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/paths.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --nkv keyValueList="amenity.police" --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/police_stations.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-ways "railway=*" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/railways.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --nkv keyValueList="amenity.school,amenity.university,amenity.college,amenity.kindergarten,amenity.library,amenity.public_bookcase,amenity.music_school,amenity.driving_school,amenity.language_school" --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/school_point.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --wkv keyValueList="amenity.school,amenity.university,amenity.college,amenity.kindergarten,amenity.library,amenity.public_bookcase,amenity.music_school,amenity.driving_school,amenity.language_school" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/schools_polygon.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/all_places.pbf" --tf accept-nodes "place=town" --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/towns.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/all_roads.pbf" --wkv keyValueList="highway.track" --used-node --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/tracks.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf accept-nodes amenity=bicycle_parking,bicycle_repair_station,bicycle_rental,boat_sharing,bus_station,car_rental,car_sharing,car_wash,charging_station,ferry_terminal,fuel,grit_brin,motorcycle_parking,parking,parking_entrance,parking_space,taxi public_transport=* railway=halt,station,subway_entrance,tram_stop waterway=dock,boatyard --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/transport_point.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/latest.pbf" --tf reject-ways --tf reject-relations --tf accept-nodes amenity=shower,toilets,water_point,drinking_water,water_in_place --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/utilities.pbf" /home/csfuente/osmosis/bin/osmosis --read-pbf-fast file="/home/csfuente/hibridinterfaz/media/sql/all_places.pbf" --tf accept-nodes "place=village" --tf reject-ways --tf reject-relations --write-pbf file="/home/csfuente/hibridinterfaz/media/sql/villages.pbf" # Construccion de archivos sql ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/aerodromes_point.sql /home/csfuente/hibridinterfaz/media/sql/aerodromes_point.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/aerodromes_point.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/aerodromes_polygon.sql /home/csfuente/hibridinterfaz/media/sql/aerodromes_point.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/aerodromes_polygon.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/all_places.sql /home/csfuente/hibridinterfaz/media/sql/aerodromes_point.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/all_places.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/all_roads.sql /home/csfuente/hibridinterfaz/media/sql/all_roads.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/all_roads.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/banks.sql /home/csfuente/hibridinterfaz/media/sql/banks.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/banks.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/buildings.sql /home/csfuente/hibridinterfaz/media/sql/buildings.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/buildings.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/built_up_areas.sql /home/csfuente/hibridinterfaz/media/sql/built_up_areas.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/built_up_areas.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/cities.sql /home/csfuente/hibridinterfaz/media/sql/cities.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/cities.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/farms.sql /home/csfuente/hibridinterfaz/media/sql/farms.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/farms.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/forest.sql /home/csfuente/hibridinterfaz/media/sql/forest.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/forest.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/grassland.sql /home/csfuente/hibridinterfaz/media/sql/grassland.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/grassland.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/helipads.sql /home/csfuente/hibridinterfaz/media/sql/helipads.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/helipads.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/hotels.sql /home/csfuente/hibridinterfaz/media/sql/hotels.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/hotels.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/inland_water_line.sql /home/csfuente/hibridinterfaz/media/sql/inland_water_line.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/inland_water_line.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/inland_water_polygon.sql /home/csfuente/hibridinterfaz/media/sql/inland_water_polygon.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/inland_water_polygon.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/main_roads.sql /home/csfuente/hibridinterfaz/media/sql/main_roads.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/main_roads.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/medical_point.sql /home/csfuente/hibridinterfaz/media/sql/medical_point.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/medical_point.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/medical_polygon.sql /home/csfuente/hibridinterfaz/media/sql/medical_polygon.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/medical_polygon.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/paths.sql /home/csfuente/hibridinterfaz/media/sql/paths.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/paths.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/police_stations.sql /home/csfuente/hibridinterfaz/media/sql/police_stations.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/police_stations.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/railways.sql /home/csfuente/hibridinterfaz/media/sql/railways.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/railways.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/schools_point.sql /home/csfuente/hibridinterfaz/media/sql/school_point.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/schools_point.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/schools_polygon.sql /home/csfuente/hibridinterfaz/media/sql/schools_polygon.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/schools_polygon.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/towns.sql /home/csfuente/hibridinterfaz/media/sql/towns.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/towns.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/tracks.sql /home/csfuente/hibridinterfaz/media/sql/tracks.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/tracks.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/transport_point.sql /home/csfuente/hibridinterfaz/media/sql/transport_point.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/transport_point.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/utilities.sql /home/csfuente/hibridinterfaz/media/sql/utilities.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/utilities.ini ogr2ogr -f PGDump /home/csfuente/hibridinterfaz/media/sql/villages.sql /home/csfuente/hibridinterfaz/media/sql/villages.pbf -lco COLUMN_TYPES=other_tags=hstore --config OSM_CONFIG_FILE conf/villages.ini
Script de 19:13
Antes de explicar el script, es necesario crear la base de datos en donde se trabajará, para ello se creó la base de datos 'Chile_osm' en postgres
createdb Chile_osm \ psql -d Chile_osm -c 'create extension postgis;'; \ psql -d Chile_osm -c 'create extension hstore;';
Esta base de datos la leemos en geoserver, para ello creamos un nuevo Store y un nuevo Workspace especial para esta data. Acá la llamé osm.
Con ésto, el script generado para esta VM funciona de forma recursiva. Recupera el archivo sql generado en la otra VM, lo codifica para que no existan problemas con los textos, traspasa la data a la base de datos, las ordena y las dispone para que sean leidas. Hace esto para cada uno de los archivos sql generados anteriormente. Por lo que el script queda como
curl -g -o /home/csfuente/osmex/Chile/aerodromes_point.sql1 http://146.155.17.18:22080/media/sql/aerodromes_point.sql iconv -f latin1 -t utf-8 /home/csfuente/osmex/Chile/aerodromes_point.sql1 > /home/csfuente/osmex/Chile/aerodromes_point.sql psql -f /home/csfuente/osmex/Chile/aerodromes_point.sql Chile_osm psql -f /home/csfuente/osmex/conf/aerodromes_point_alter.sql Chile_osm psql -f /home/csfuente/osmex/conf/clean.sql Chile_osm . . .
Finalmente debemos actualizar las capas en geonode para que sean reconocidas por éste, por lo que al final del script se ejecuta el comando
geonode updatelayers --ignore-errors -w osm
El que nos permite solicitar la actualización de todas las capas del Workspace osm.
Horas en las cuales se ejecutan los script
Ambos script se ejecutan de forma de cron, éstos funcionan todos los lunes a las 4:00 AM y 5:00 AM respectivamente.