Drupal Upgrade Plan 2008

Upgrading the OSGeo Drupal CMS is a complicated task further complicated by the use of multi-site configuration. To upgrade from current 4.7.x to the newest 5.3 version the following steps should be taken (doubles as a check list):

= Time estimation = I estimate that the total read-only time for the OSGeo sites will be around 1 day if everything goes according to plan, this does not include the preliminary tasks which have to be completed prior to doing the upgrade.

= Preliminary tasks =

DNS Changes

 * 1) create entry CNAME dev.osgeo.org test.osgeo.org.
 * 2) create entry CNAME edu.osgeo.org test.osgeo.org.
 * 3) create entry CNAME fdo-test.osgeo.org test.osgeo.org.
 * 4) create entry CNAME mapbender-test.osgeo.org test.osgeo.org.
 * 5) create entry CNAME mapguide-test.osgeo.org test.osgeo.org.

osgeo1 server tasks

 * 1) Make a script to remove write access. This script shall alter the permission table to take away all write and admin access from all roles. (The user 1 (admin) will still have write access).

osgeo2 server tasks

 * 1) download Drupal 4.7.8
 * 2) Download Drupal 5.3 and modules:
 * 3) * captcha
 * 4) * content (CCK)
 * 5) ** date
 * 6) ** imagefield
 * 7) ** number (comes with CCK)
 * 8) ** link (comes with CCK)
 * 9) ** optionwidgets (comes with CCK)
 * 10) ** text (comes with CCK)
 * 11) * diff
 * 12) * event
 * 13) ** basicevent
 * 14) * feedback
 * 15) * image
 * 16) ** image_gallery (part of image)
 * 17) * insert_block
 * 18) * LDAP Integration consists of:
 * 19) ** ldapauth
 * 20) ** ldapdata
 * 21) ** ldapgroups
 * 22) * locale
 * 23) ** localizer
 * 24) *** localizerblock
 * 25) *** localizermenu
 * 26) *** localizernode
 * 27) *** localizertaxonomy
 * 28) *** localizeruser
 * 29) *** localizerviews
 * 30) * page
 * 31) * path_image
 * 32) * pearwiki_filter
 * 33) * recent_changes
 * 34) * search
 * 35) * statistics
 * 36) * story
 * 37) * syndication
 * 38) * tinymce
 * 39) ** imce
 * 40) * views
 * 41) ** views_rss
 * 42) ** views_theme_wizard
 * 43) ** views_ui
 * 44) ** webfm
 * 45) create new directory structure
 * 46) * /var/www/drupal-5.3 (extracted from the tarball)
 * 47) * /var/www/drupal (symlnk to above)
 * 48) * /var/www/osgeo (symlink contents of drupal here)
 * 49) ** /var/www/osgeo/files
 * 50) * /var/www/fdo (like osgeo)
 * 51) * /var/www/mapguide
 * 52) * /var/www/mapbender
 * 53) Build a new osgeo theme, visually the same as the old theme. Based on some 5.3 theme engine.

= Actual Upgrade sequence =

osgeo1

 * 1) Make a Backup of all 4 Drupal databases and the files.
 * 2) Make all Drupal sites read-only by taking away write access (run a script)

osgeo2

 * 1) Extract osgeo1 files to /var/www/drupal
 * 2) Create a new databases for the sites
 * 3) * drupal_osgeo
 * 4) * drupal_fdo
 * 5) * drupal_mapguide
 * 6) * drupal_mapbender
 * 7) Move old drupal test.osgeo.org to run on dev.osgeo.org
 * 8) Add dev.osgeo.conf to Apache
 * 9) Point osgeo.conf to /var/www/drupal
 * 10) Point fdo.conf to /var/www/drupal
 * 11) Point mapguide.conf to /var/www/drupal
 * 12) Point mapbender.conf to /var/www/drupal
 * 13) Upgrade Drupal to 4.7.8
 * 14) Untar drupal-4.7.8 to /var/www/drupal-4.7.8
 * 15) Log in as 'admin' to osgeo site
 * 16) Log in as 'admin' to fdo site
 * 17) Log in as 'admin' to mapguide site
 * 18) Log in as 'admin' to mapbender site
 * 19) Disable all non-core modules on osgeo (with mysql update) [see below]
 * 20) Disable all non-core modules on fdo (with mysql update) [see below]
 * 21) Disable all non-core modules on mapguide (with mysql update) [see below]
 * 22) Disable all non-core modules on mapbender (with mysql update) [see below]
 * 23) Switch to bluemarine theme (Drupal standard) on osgeo (with mysql update) [see below]
 * 24) Switch to bluemarine theme (Drupal standard) on fdo (with mysql update) [see below]
 * 25) Switch to bluemarine theme (Drupal standard) on mapguide (with mysql update) [see below]
 * 26) Switch to bluemarine theme (Drupal standard) on mapbender (with mysql update) [see below]
 * 27) point browser to test.drupal.org/update.php
 * 28) point browser to fdo-test.drupal.org/update.php
 * 29) point browser to mapguide-test.drupal.org/update.php
 * 30) point browser to mapbender-test.drupal.org/update.php
 * 31) Upgrade to 5.3
 * 32) log in as admin
 * 33) Untar drupal-5.3 to /var/www/drupal-5.3
 * 34) point browser to test.drupal.org/update.php
 * 35) point browser to fdo-test.drupal.org/update.php
 * 36) point browser to mapguide-test.drupal.org/update.php
 * 37) point browser to mapbender-test.drupal.org/update.php
 * 38) install missing modules
 * 39) enable required modules
 * 40) enable the osgeo theme on osgeo
 * 41) enable the osgeo theme on fdo
 * 42) enable the osgeo theme on mapguide
 * 43) enable the osgeo theme on mapbender
 * 44) dump databases and tar files and move the new site over to osgeo1
 * 1) install missing modules
 * 2) enable required modules
 * 3) enable the osgeo theme on osgeo
 * 4) enable the osgeo theme on fdo
 * 5) enable the osgeo theme on mapguide
 * 6) enable the osgeo theme on mapbender
 * 7) dump databases and tar files and move the new site over to osgeo1

osgeo1

 * 1) load the new site files and databases
 * 2) edit apache config files to point to new sites.
 * 3) * www.drupal.org
 * 4) Point osgeo.conf to /var/www/drupal
 * 5) Point fdo.conf to /var/www/drupal
 * 6) Point mapguide.conf to /var/www/drupal
 * 7) Point mapbender.conf to /var/www/drupal

dev.osgeo.conf
 ServerName dev.osgeo.org DocumentRoot /var/www/html ErrorLog /var/log/httpd/osgeo-error_log CustomLog /var/log/httpd/osgeo-access_log common  Options Indexes FollowSymLinks AllowOverride all Order allow,deny Allow from all  

edu.osgeo.conf
 ServerName edu.osgeo.org DocumentRoot /var/www/moodle ErrorLog /var/log/httpd/osgeo-error_log CustomLog /var/log/httpd/osgeo-access_log common  Options Indexes FollowSymLinks AllowOverride all Order allow,deny Allow from all  

fdo-test.osgeo.conf
 ServerName dev.osgeo.org DocumentRoot /var/www/fdo ErrorLog /var/log/httpd/osgeo-error_log CustomLog /var/log/httpd/osgeo-access_log common  Options Indexes FollowSymLinks AllowOverride all Order allow,deny Allow from all  

mapbender.osgeo.conf
 ServerName mapbender-test.osgeo.org DocumentRoot /var/www/mapbender ErrorLog /var/log/httpd/osgeo-error_log CustomLog /var/log/httpd/osgeo-access_log common  Options Indexes FollowSymLinks AllowOverride all Order allow,deny Allow from all  

mapguide.osgeo.conf
 ServerName mapguide-test.osgeo.org DocumentRoot /var/www/mapguide ErrorLog /var/log/httpd/osgeo-error_log CustomLog /var/log/httpd/osgeo-access_log common <Directory "/var/www/mapguide"> Options Indexes FollowSymLinks AllowOverride all Order allow,deny Allow from all </Directory> </VirtualHost>

SQL to disable all non-core modules
alter table system set status=0 where where name != 'aggregator' and name != 'block' and name != 'blog' and name != 'blogapi' and name != 'book' and name != 'comment' and name != 'contact' and name != 'drupal' and name != 'filter' and name != 'forum' and name != 'help' and name != 'legacy' and name != 'locale' and name != 'menu' and name != 'node' and name != 'path' and name != 'ping' and name != 'poll' and name != 'profile' and name != 'search' and name != 'statistics' and name != 'taxonomy' and name != 'throttle' and name != 'tracker' and name != 'upload' and name != 'user' and name != 'watchdog' and name != 'bluemarine';

SQL to set bluemarine as the default theme
alter table variable set value='s:10:"bluemarine";' where name='theme_default'; delete from cache;