Difference between revisions of "Backup of geonode"

From stgo
Jump to: navigation, search
(Restore DB)
(Restore DB)
Line 101: Line 101:
 
#* <code>sudo tar -C / -xvzf /home/ssteinig/geoserverDataBackup.tgz</code>
 
#* <code>sudo tar -C / -xvzf /home/ssteinig/geoserverDataBackup.tgz</code>
  
In the case of '''moving''' the DB to a different machine:  
+
In the case of '''moving''' the DB to a different machine:
* local_settings.py must be adapted,
+
 
* I assume the old/new db user needs to be created
 
* I assume the old/new db user needs to be created
 
* plus on the new machine PostgreSQL DB access needs to be configured (i.e. modify files ''pg_hba.conf'', ''postgresql.conf''  => access for specific IPs or Users)  
 
* plus on the new machine PostgreSQL DB access needs to be configured (i.e. modify files ''pg_hba.conf'', ''postgresql.conf''  => access for specific IPs or Users)  
 
* and PostGIS is to be installed (<code>CREATE EXTENSION postgis;</code>  etc.)
 
* and PostGIS is to be installed (<code>CREATE EXTENSION postgis;</code>  etc.)
* modify the DB connection information GeoServer (not sure where to that...)
+
* modify the DB connection information in GeoServer (click in left side menu on "Stores" and select store with store name "datastore" in workspace "geonode")
 +
* modify the DB connection information in GeoNode (i.e. local_settings.py must be adapted) => why actually twice, in GeoServer and GeoNode?
 
Also, check that PostgreSQL and PostGIS versions are the same to avoid problems. At the moment I am having PostgreSQL v 9.3.2 with PostGIS 2.1.1 on the PostGIS VM. The GeoNode DB uses PostgreSQL 9.1.11.  (The postgis version can be received using "<code>SELECT PostGIS_full_version();</code>", but this command works only if one is connected to the spatially enabled DB i.e. geonodegisdb93 and not the default postgres DB)
 
Also, check that PostgreSQL and PostGIS versions are the same to avoid problems. At the moment I am having PostgreSQL v 9.3.2 with PostGIS 2.1.1 on the PostGIS VM. The GeoNode DB uses PostgreSQL 9.1.11.  (The postgis version can be received using "<code>SELECT PostGIS_full_version();</code>", but this command works only if one is connected to the spatially enabled DB i.e. geonodegisdb93 and not the default postgres DB)

Revision as of 17:16, 14 February 2014

>> return to Cedeus IDE


Below I describe the backup procedure taken from: http://docs.geonode.org/en/latest/deploy/backup.html

For migrating from one GeoNode version to another, in particular 1.2 to 2.0 check this document: http://docs.geonode.org/en/latest/tutorials/admin/migrate/index.html#migrate

For moving to another server, the general advise is:

  • backup GeoNode - Django project + DB, backup GeoServer (DataDirectory)
  • update/upgrade the current server to the latest version
  • create a new server + move all the project files
  • see this link for a GeoNode style template: http://github.com/GeoNode/geonode-project

Note, it looks like the current GeoNode version package is stored in /usr/share/geonode/ where one can find a zip file.

Backup GeoNode Server (with GeoNode 2.0c8):

  1. Backup Geonode users DB (psql needs to be running)
    • sudo -u postgres -i pg_dump -c -Fc geonode > /home/ssteinig/geonodedb.backup
  2. Stop services
    • sudo service apache2 stop
    • sudo service tomcat7 stop
    • sudo postgresql-8.4 stop o: sudo service postgresql stop
      (I am actually running PSQL 9.1.11 on cedeusgis1)
  3. Backup Geonode config & GeoServer data directory:
    • sudo tar -cvzf /home/ssteinig/geonodeConfigBackup.tgz /etc/geonode
      Note, doing this step for backup is good, but when archiving for moving to a different server, it is better to edit the important local_settings.py file manually.
    • sudo tar -cvzf /home/ssteinig/geonodeDataBackup.tgz /var/lib/geoserver/geonode-data/
      Note, this step may not be very useful as the GeoServer data seems to be in a different folder (see next step). So before backing up the folder, check if there is some data inside. But ...
    • it looks like GeoServer data are here: /usr/share/geoserver/data/ . So we make a backup of it:
      • sudo tar -cvzf /home/ssteinig/geoserverDataBackup.tgz /usr/share/geoserver/data/
  4. In addition, any templates, design changes, uploaded documents, and CSS files will also need to be captured.
    • e.g. my modified css and logo have been in /etc/geonode/media/geonode/img/ ... so they should be backed-up within the config tgz file.
    • but my text modifications to the start pages (i18n strings) are in a different location (...but see as well below where I save the whole Django GeoNode package)
      • sudo tar -cvzf /home/ssteinig/geonodei18nBackup.tgz /usr/local/lib/python2.7/dist-packages/geonode/locale/
    • just to be save I may also do a backup of the GeoNode web folder where I have the CSS, the thumbnails, and uploaded documents (pdf + xls +doc, etc):
      • sudo tar -cvzf /home/ssteinig/geonodeWWWBackup.tgz /var/www/geonode/
    • and a copy of the Django GeoNode folder and the egg-info folder that I needed later:
      • sudo tar -cvzf /home/ssteinig/geonodePyDjangoBackup.tgz /usr/local/lib/python2.7/dist-packages/geonode/
      • sudo tar -cvzf /home/ssteinig/geonodePyDjangoEggBackup.tgz /usr/local/lib/python2.7/dist-packages/GeoNode-2.0-py2.7.egg-info/
  5. re-start the previously stopped services: Apache2, Tomcat7, PSQL

Backup Spatial Data DB

Note, the spatial data DB can be run on the same machine as GeoNode or extra. I have installed an extra DB, PostgreSQL/PostGIS that runs on the PostGIS VM (9022 on Lautaro).

To backup the DB do as follows:

  • sudo -u postgres -i pg_dump -c -Fc geonodegisdb93 > /home/ssteinig/geonodegisdb93.backup

The data management for this DB is done by GeoServer (see folder /usr/share/geoserver/data/workspaces/geonode/datastore => file datastore.xml). Hence, it makes sense to backup the GeoServer documents on the GeoNode Server as well:

  • perhaps stop apache2/tomcat
  • sudo tar -cvzf /home/ssteinig/geoserverDataBackup.tgz /usr/share/geoserver/data/
  • perhaps start apache2/tomcat

Restore GeoNode Server

  1. stop all services: apache2, tomcat7, psql
  2. restore GeoNode config and GeoServer
    • sudo tar -C / -xvzf /home/ssteinig/geonodeConfigBackup.tgz
      Note it may actually best to not do this step, but to manually edit local_settings.py. The CEDEUS logo image and the CSS that is currently backed up in that archive is also not super important and gets placed in it position when I restore from geonodeWWWBackup.tgz that contains /var/www/geonode. For copyig files do chmod 777 on /etc/geonode/media/ before and then set it back to 755
    • sudo tar -C / -xvzf /home/ssteinig/geonodeDataBackup.tgz
      This step may also not be very useful, as the file does not contain any data since the folder /var/lib/geoserver/geonode-data/ is empty. However, GeoServer data seems to be /usr/share/geoserver/data/ instead)
    • when moving to a different server, I may actually run the following commands:
      • sudo geonode-updateip 10.0.2.15 to get the same db settings
      • modify the file local_settings.py
        • change the geonode db password to the one from the new machine
        • set the Allowed_Hosts variable to "*"
      • sudo geonode collectstatic -v0 to copy the styles/logo into /var/www/geonode/static/geonode
  3. restore the template and design files
    • restore the static web page part
      • sudo tar -C / -xvzf /home/ssteinig/geonodeWWWBackup.tgz
    • when moving to another server with a different GeoNoder version (2.0 final instead of 2.0c8), then I got a DB error, ala: "DatabaseError at / [...] <column base_resourcebase.license_id does not exist [...] LINE 1: ...ype_id", "base_resourcebase"."constraints_other", "base_reso... " with the location /usr/local/lib/python2.7/dist-packages/geonode/search/views.py in search_api, line 160
      • hence, I deleted the django folders of GeoNode 2.0 final:
        • /usr/local/lib/python2.7/dist-packages/geonode/ and
        • sudo rm /usr/local/lib/python2.7/dist-packages/GeoNode-2.0.egg-info/
      • and restored the whole django-geonode package backup-ed from 2.0c8 before using
        • sudo tar -C / -xvzf /home/ssteinig/geonodePyDjangoBackup.tgz
        • sudo tar -C / -xvzf /home/ssteinig/geonodePyDjangoEggBackup.tgz
        • This will also restore my i18n strings, i.e. the text on the GeoNode startpage.
  4. If not done already (see case above) do restore the i18n strings
    • sudo tar -C / -xvzf /home/ssteinig/geonodei18nBackup.tgz
  5. Restore the GeoNode database
    • sudo service postgresql start (or: sudo /etc/init.d/postgresql-8.4 start)
    • sudo -u postgres psql
    • drop database geonode;
    • create database geonode;
    • \q
    • sudo -u postgres -i pg_restore -Fc -d geonode /home/ssteinig/geonodedb.backup
  6. When switching Server to a new GeoNode version, then the problem is that the new GeoServer does not know the data yet. Hence, if I want to display a layer in GeoExplorer, then nothing is show. Looking into GeoServer, there are also no layers. Hence, do
    • sudo tar -C / -xvzf /home/ssteinig/geoserverDataBackup.tgz
    • this step does not seem to be necessary (!): sync GeoNode and GeoServer again using geonode syncdb --noinput --all
  7. start services: apache2, tomcat7
  8. Now, test if existing layers are displayed in GeoExplorer and if new spatial data and documents can be uploaded.
    For me it turned out that GeoExplorer could not load the layers. When choosing the GeoServer view from the GeoNode menu (logged in as admin) I realised that it connected to the local VM IP http://10.0.2.15 instead of http://146.155.17.113:14080/geoserver/web/ . Hence I changed:

Restore DB

(this part is untested so far)

  1. Restore the GIS DB
    • sudo -u postgres psql
    • drop database geonodegisdb93;
    • create database geonodegisdb93;
    • \q
    • sudo -u postgres -i pg_restore -Fc -d geonodegisdb93 /home/ssteinig/geonodegisdb93.backup
  2. Restore the GeoNode Data directory
    • sudo tar -C / -xvzf /home/ssteinig/geoserverDataBackup.tgz

In the case of moving the DB to a different machine:

  • I assume the old/new db user needs to be created
  • plus on the new machine PostgreSQL DB access needs to be configured (i.e. modify files pg_hba.conf, postgresql.conf => access for specific IPs or Users)
  • and PostGIS is to be installed (CREATE EXTENSION postgis; etc.)
  • modify the DB connection information in GeoServer (click in left side menu on "Stores" and select store with store name "datastore" in workspace "geonode")
  • modify the DB connection information in GeoNode (i.e. local_settings.py must be adapted) => why actually twice, in GeoServer and GeoNode?

Also, check that PostgreSQL and PostGIS versions are the same to avoid problems. At the moment I am having PostgreSQL v 9.3.2 with PostGIS 2.1.1 on the PostGIS VM. The GeoNode DB uses PostgreSQL 9.1.11. (The postgis version can be received using "SELECT PostGIS_full_version();", but this command works only if one is connected to the spatially enabled DB i.e. geonodegisdb93 and not the default postgres DB)