Cómo implementar el entorno CKAN con complementos de datos de documentos y GIS
Esta guía lo guiará a través de la implementación y configuración de un repositorio CKAN usando Ubuntu 16.04. CKAN es un repositorio de conjuntos de datos de código abierto que se utiliza para recopilar y distribuir grandes colecciones de datos de todo tipo de fuentes, incluidos datos de censos, hojas de cálculo, datos geográficos, gubernamentales y de investigación.
Una vez que haya completado esta guía, tendrá un servidor de producción con CKAN 2.7 que está listo para importar un nuevo conjunto de datos, pero si desea comenzar con CKAN, debe verificar la documentación oficial para configurar un entorno de desarrollo.
Para completar esta guía necesitará:
- Un VPS en la nube o una máquina virtual que ejecute Ubuntu 16.04 de 64 bits con una IP pública
- Un nombre de dominio asociado a su VPS (también puede usar un subdominio)
- Alguna experiencia trabajando con entornos virtuales de Python y el shell de línea de comandos
- Algunos conocimientos sobre Apache, Nginx y Tomcat
- Un conjunto de datos de muestra estructurado en formato CSV o Excel (Opcional)
1. Configure el sistema
Primero configuremos la máquina ubuntu con los paquetes requeridos:
una. Actualiza el servidor
$ sudo ssh root@$REMOTE_SERVER apt update && apt upgrade
B. Crea una secuencia de comandos de respaldo
$ cat > /usr/bin/backme.sh
#! /bin/bash -e backme () { TIMESTAMP=$( date +'%s') for SOURCE_FILE in $* do cp -av $SOURCE_FILE ${SOURCE_FILE}-${TIMESTAMP} done } backme $* exit $?
$ sudo chmod +x /usr/bin/backme.sh
C. Actualice la configuración del nombre de host del servidor, deberá reemplazar «xxxx» con la dirección IP de su servidor, también reemplace yourdomain.com con el dominio asignado a su servidor.
backme.sh /etc/hosts /etc/hostname echo "ckanproduction.yourdomain.com" > /etc/hostname echo -e "nx.x.x.x ckanproduction.yourdomain.com ckanproduction" >> /etc/hosts $ sudo hostname ckanproduction.yourdomain.com exit $ sudo ssh root@$REMOTE_SERVER
D. Configurar una cuenta de usuario para implementar CKAN
adduser ckanadmin # USE THE INTERACTIVE PROGRAM TO SETUP A NEW USER AND PASSWORD TO MANAGE CKAN echo -e "nckanadmin ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers
Además, puede utilizar «visudo» para configurar los permisos de usuario.
$ su - ckanadmin mkdir .ssh $ cat > .ssh/authorized_keys # INSERT A PUBLIC KEY TO ACCESS YOUR SERVER AS THE USER ckanadmin
chmod 700 .ssh exit $ ssh ckanadmin@$REMOTE_SERVER
mi. Instale las dependencias del paquete de software para CKAN
$ cat > packagelist
apache2 build-essential git git-core jq libapache2-mod-rpaf libapache2-mod-wsgi libffi-dev libgeos-c1 libgeos-dev libjts-java libpq5 libpq-dev libtomcat6-java libxml2-dev libxslt1-dev links openjdk-8-jdk postgresql postgresql-9.3-postgis-2.1 python-dev python-jinja2 python-pastescript python-pip python-virtualenv python-werkzeug redis-server solr-tomcat tomcat8 unzip virtualenvwrapper zlib1g-dev postfix unzip unrar p7zip-full python-gdal
$ sudo apt install -y $( cat packagelist ) $ sudo service apache2 stop $ sudo apt install nginx -y $ sudo service nginx stop
Nota: Utilice apt search packagename*
para buscar la versión del paquete que sea compatible con su versión actual de Ubuntu y, en consecuencia, actualice el archivo ‘lista de paquetes’.
2. Descargue e instale el paquete CKAN para producción
Tenemos que descargar el archivo respectivo del sitio web de empaquetado de ckan usando el comando wget.
$ sudo wget http://packaging.ckan.org/python-ckan_2.7-trusty_amd64.deb $ sudo dpkg -i python-ckan_2.7-trusty_amd64.deb
3. Configure una base de datos PostgreSQL
una. Verifique que PostgreSQL se instaló correctamente, Verifique que la codificación de las bases de datos sea UTF8
sudo -u postgres psql -l
B. A continuación, deberá crear un usuario de base de datos (utilice una contraseña diferente)
$ sudo -u postgres createuser -S -D -R -P ckan_default password: f!+hRnztXgDtKSLW9kY
C. Cree una nueva base de datos PostgreSQL,
$ sudo -u postgres createdb -O ckan_default ckan_default -E utf-8 database: ckan_default
5. Configurar Solr
una. Edite el archivo de configuración de Tomcat
$ sudo backme.sh /etc/tomcat8/server.xml $ sudo sed -r -i "/Connector port="8080"/ s/$/address="127.0.0.1"/" /etc/tomcat6/server.xml $ sudo sed -r -i "/port=.8080./ s/8080/8983/g" /etc/tomcat8/server.xml $ diff /etc/tomcat8/server.xml /etc/tomcat8/server.xml.last sudo service tomcat8 restart
B. Reemplace el archivo schema.xml predeterminado con un enlace simbólico al esquema CKAN
$ sudo mv -v /etc/solr/conf/schema.xml /etc/solr/conf/schema.xml.orig.back $ sudo ln -s /usr/lib/ckan/default/src/ckan/ckan/config/solr/schema.xml /etc/solr/conf/schema.xml $ sudo service tomcat8 restart
C. Cambie la configuración de solr_url en su archivo de configuración de CKAN
$ sudo backme.sh /etc/ckan/default/production.ini $ sudo sed -r -i "/solr_url/ s/^#//" /etc/ckan/default/production.ini $ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last $ sudo ln -s /usr/bin/rotatelogs /usr/sbin/rotatelogs $ sudo service tomcat8 restart $ sudo service apache2 restart links http://localhost:8983/solr/ $ ssh -L 8983:localhost:8983 ckanadmin@ckanproduction.yourdomain.com Use a web browser to check http://localhost:8983/solr/
6. Actualice la configuración e inicialice la base de datos.
D. Configuración ckan.site_id
sudo backme.sh /etc/ckan/default/production.ini sudo sed -i "/ckan.site_id/ s/default/tenosolution/" /etc/ckan/default/production.ini diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
mi. Configuración de ckan.site_url
sudo backme.sh /etc/ckan/default/production.ini sudo sed -r -i "/ckan.site_url/ s/$/ http://ckanproduction.yourdomain.com/" /etc/ckan/default/production.ini diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
C. Edite la configuración de sqlalchemy.url (sqlalchemy.url = postgresql: // ckan_default: pass @ localhost / ckan_default)
sudo backme.sh /etc/ckan/default/production.ini sudo sed -i "/sqlalchemy/ s/pass/f!+hRnztXgDtKSLW9kY/" /etc/ckan/default/production.ini diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
C. Inicialice su base de datos CKAN
$ sudo ckan db init
D. Reinicie los servidores web
$ sudo service apache2 restart $ sudo service nginx restart
7. Configuración de la cuenta de administrador y los datos de prueba
una. Inicializar el entorno virt
$ . /usr/lib/ckan/default/bin/activate $ cd /usr/lib/ckan/default/src/ckan
B. Creación de un usuario administrador del sistema (configure una contraseña diferente)
paster sysadmin add mycompanyadmin -c /etc/ckan/default/production.ini password: mycompanyadmin
C. Creando datos de prueba
$ paster create-test-data -c /etc/ckan/default/production.ini
D. Configure la propiedad de CKAN para instalar extensiones más tarde …
$ cd /usr/lib/ckan $ sudo chown -R ckanadmin: default/
8. Configurar ckanext-space
una. Instalar PostGIS:
cd /usr/lib/ckan/default/src/ckan $ sudo apt-get install postgresql-9.3-postgis-2.1 python-dev libxml2-dev libxslt1-dev libgeos-c1
B. crear las tablas y funciones necesarias en la base de datos
$ sudo -u postgres psql -d ckan_default -f /usr/share/postgresql/9.3/contrib/postgis-2.1/postgis.sql $ sudo -u postgres psql -d ckan_default -f /usr/share/postgresql/9.3/contrib/postgis-2.1/spatial_ref_sys.sql
C. Cambiar el propietario de las tablas espaciales al usuario CKAN
sudo -u postgres psql -d ckan_default -c 'ALTER VIEW geometry_columns OWNER TO ckan_default;' $ sudo -u postgres psql -d ckan_default -c 'ALTER TABLE spatial_ref_sys OWNER TO ckan_default;'
D. vea si PostGIS se instaló correctamente:
$ sudo -u postgres psql -d ckan_default -c "SELECT postgis_full_version()"
mi. Instala la extensión
$ cd /usr/lib/ckan/default/src $ git clone https://github.com/okfn/ckanext-spatial.git $ cd ckanext-spatial $ sudo pip install -r pip-requirements.txt $ python setup.py develop
F. Configure la extensión:
$ cd /usr/lib/ckan/default/src/ckanext-spatial $ paster --plugin=ckanext-spatial spatial initdb 4326 -c /etc/ckan/default/production.ini $ sudo backme.sh /etc/ckan/default/production.ini $ sudo sed -r -i "/ckan.plugins =/ s/$/ spatial_metadata spatial_query/" /etc/ckan/default/production.ini $ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last deactivate
9. Configure el FileStore
D. Crea el directorio de almacenamiento de archivos
$ sudo mkdir -p /var/lib/ckan/default $ sudo chown -R www-data: /var/lib/ckan/default $ sudo chmod -u+rwx /var/lib/ckan/default
mi. Habilitar FileStore y la carga de archivos
$ sudo backme.sh /etc/ckan/default/production.ini $ sudo sed -i "/ckan.storage_path/ s/^#//" /etc/ckan/default/production.ini $ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last $ sudo chown -R www-data: /var/lib/ckan
10. Instalar extensiones
una. Inicializar el entorno virt
$ . /usr/lib/ckan/default/bin/activate
una. Instale ckanext-spacesialUI (http://extensions.ckan.org/extension/spatialui/)
$ cd /usr/lib/ckan/default/src $ git clone https://github.com/XVTSolutions/ckanext-spatialUI $ cd ckanext-spatialUI $ python setup.py develop $ sudo backme.sh /etc/ckan/default/production.ini $ sudo sed -r -i "/ckan.plugins =/ s/$/ spatialUI/" /etc/ckan/default/production.ini $ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
B. Instale ckanext-pdfview (http://extensions.ckan.org/extension/pdfview/)
$ cd /usr/lib/ckan/default/src $ git clone https://github.com/ckan/ckanext-pdfview.git $ cd ckanext-pdfview $ python setup.py develop $ sudo backme.sh /etc/ckan/default/production.ini $ sudo sed -r -i "/ckan.plugins =/ s/$/ resource_proxy pdf_view/" /etc/ckan/default/production.ini $ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
C. Instale ckanext-officedocs (http://extensions.ckan.org/extension/officedocs/)
$ cd /usr/lib/ckan/default/src $ git clone https://github.com/jqnatividad/ckanext-officedocs.git $ cd ckanext-officedocs $ python setup.py install $ sudo backme.sh /etc/ckan/default/production.ini $ sudo sed -r -i "/ckan.plugins =/ s/$/ officedocs_view/" /etc/ckan/default/production.ini $ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
D. Instale ckanext-dictionary (http://extensions.ckan.org/extension/dictionary/)
$ cd /usr/lib/ckan/default/src $ git clone https://github.com/cmuphillycapstone/ckanext-dictionary.git $ cd ckanext-dictionary $ python setup.py develop $ sudo backme.sh /etc/ckan/default/production.ini $ sudo sed -r -i "/ckan.plugins =/ s/$/ dictionary/" /etc/ckan/default/production.ini $ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
gramo. Instale ckanext-geoview (https://github.com/ckan/ckanext-geoview)
$ cd /usr/lib/ckan/default/src $ git clone https://github.com/ckan/ckanext-geoview.git $ cd ckanext-geoview $ python setup.py develop $ sudo backme.sh /etc/ckan/default/production.ini $ sudo sed -r -i "/ckan.plugins =/ s/$/ geo_view geojson_view wmts_view/" /etc/ckan/default/production.ini $ sudo sed -r -i "/ckan.views.default_views =/ s/$/ geo_view geojson_view wmts_view/" /etc/ckan/default/production.ini $ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
h. Instale ckanext-geopusher (https://github.com/datacats/ckanext-geopusher)
$ cd /usr/lib/ckan/default/src $ git clone https://github.com/datacats/ckanext-geopusher.git $ cd ckanext-geopusher $ backme.sh requirements.txt $ sed -r -i "/celery/ s/$/==3.1.25/" requirements.txt $ pip install -r requirements.txt $ python setup.py develop $ sudo backme.sh /etc/ckan/default/production.ini $ sudo sed -r -i "/ckan.plugins =/ s/$/ geopusher/" /etc/ckan/default/production.ini $ sudo sed -i "100ickanext.geoview.ol_viewer.formats = wms kml geojson wfs" /etc/ckan/default/production.ini $ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last $ sudo service apache2 reload deactivate
11. Configuración de DataStore (ejecútelo en una nueva terminal)
$ . /usr/lib/ckan/default/bin/activate
una. Habilitar el complemento del almacén de datos
$ sudo backme.sh /etc/ckan/default/production.ini $ sudo sed -r -i "/ckan.plugins =/ s/$/ datastore/" /etc/ckan/default/production.ini $ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
B. Configure la base de datos, cree un database_user llamado datastore_default. (Utilice una contraseña diferente)
$ sudo -u postgres psql -l $ sudo -u postgres createuser -S -D -R -P -l datastore_default $ password: 7DN4ta2igWVlFj $ sudo -u postgres createdb -O ckan_default datastore_default -E utf-8
C. Configure su configuración de CKAN
$ sudo backme.sh /etc/ckan/default/production.ini $ sudo sed -r -i -e "/ckan.datastore.write_url/ s/^#//" -e "/ckan.datastore.write_url/ s/ckan_default:pass/ckan_default:f!+hRnztXgDtKSLW9kY/" /etc/ckan/default/production.ini $ sudo sed -r -i -e "/ckan.datastore.read_url/ s/^#//" -e "/ckan.datastore.read_url/ s/datastore_default:pass/datastore_default:7DN4ta2igWVlFj/" /etc/ckan/default/production.ini $ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
D. Establezca permisos, use este comando para una instalación de código fuente
$ sudo ckan datastore set-permissions | sudo -u postgres psql --set ON_ERROR_STOP=1
mi. Configurar datapusher
$ sudo backme.sh /etc/ckan/default/production.ini $ sudo sed -r -i "/ckan.plugins =/ s/$/ datapusher/" /etc/ckan/default/production.ini $ sudo sed -r -i "/datapusher/ s/^#ckan/ckan/" /etc/ckan/default/production.ini $ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
12. Reinicie los servicios web.
$ sudo -i $ service tomcat8 restart; service apache2 restart; service nginx restart
Debería poder acceder a su repositorio de CKAN en http://ckanproduction.yourdomain.com e iniciar sesión con el usuario administrador creado anteriormente.
Por favor refiérase a ckan docs para obtener más detalles sobre cómo administrar y configurar su nuevo sitio.