Difference between revisions of "Trabajo Cristian"

From stgo
Jump to: navigation, search
(Instalación de servidor de OSM)
(Instalación de servidor de OSM)
Line 326: Line 326:
 
Lo primero es instalar las dependencias necesarias para proceder con la instalación de los componentes que utiliza OSM.
 
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
+
   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
  
** En construcción **
+
  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)

Revision as of 17:05, 30 March 2016

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

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

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


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)