Project

General

Profile

CdmDataportalSiteMigration » History » Revision 53

Revision 52 (Andreas Müller, 05/10/2022 01:04 PM) → Revision 53/55 (Katja Luther, 08/11/2022 09:55 AM)

# CDM Dataportal Site Migration 

 *This page describes how to clone a dataportal site and install it on another server.* 

 {{toc}} 

 {{child_pages(depth=1)}} 

 ## On cloning dataportal sites between servers (clone site folder, settings and data base) 

 **IMPORTANT!!!!** 
 **Here we are assuming that you have setup the dataportal installation according to the instructions given at: [[DataportalDevelopmentRequirements#Update-method-1]]** [[DataportalDevelopmentRequirements#Update-method-2]]** 

 This guide is split in three chapters: 

 1. Preparation and Requirements 
 2. Cloning a site folder and settings 
 3. Restoring database dumps 

 How to create a new site on the BGBM EDIT server is described at https://wiki.bgbm.org/bdinotes/index.php/EDITProductionNewDataPortal 

 ### Preparation and Requirements 

 If you are about to host multiple data portals on the same machine it is recommended to install of them in a Drupal multi site setup. 

 If the site sub folders are named after a specific pattern you should be able to use the dataportal-admin helper scripts which allow you to perform important management tasks automatically on each of the DataPortals installed: 

 #### Install the dataportal-admin helper scripts 

 1. Install Drush http://docs.drush.org/en/8.x/install/ 
 1. Download the dataportal-admin helper scripts from    https://dev.e-taxonomy.eu/svn/trunk/server-scripts 

 and make them available via your `$PATH` environment variable.  

 1. Edit the `config.template` and save it as `config`. 

 #### Cloning a site folder and settings 

 ssh into the source server and go into the drupal root: 

 ~~~ 
 ssh me@remote-server 
 cd    /var/www/drupal-7-cdm-dataportal/web 
 ~~~ 

 Create a tar archive and exclude temp files. 

 ~~~ 
 export SITE='algaterra-new'; tar -c --exclude='*/files/css/*' --exclude='*/files/js/*'    -f ~/site-$SITE.tar sites/$SITE 
 ~~~ 

 Copy this archive to the target machine 

 ~~~ 
 scp me@remote-server:~/site-algaterra-new.tar /var/www/drupal-7-cdm-dataportal/web 
 ~~~ 

 Make sure the site to be cloned does not yet exists on the target machine! 

 Extract the archive: 

 ~~~ 
 tar -xf site-algaterra-new.tar 
 ~~~ 

 Once the archive is extracted you may delete it 

 ~~~ 
 rm site-algaterra-new.tar 
 ~~~ 

 Now we need to fix the permission: 

 ~~~ 
 cd .. 
 ~~~ 

 now you should be in the `drupal-7-cdm-dataportal` root folder, which usually is `/var/www/drupal-7-cdm-dataportal/web` 

 run the `fix-permissions.sh` script. **NOTE**: you will need to replace me by the user appropriate for your setup 

 ~~~ 
 sudo scripts/admin/fix-permissions.sh --web-user www-data --admin-user me 
 ~~~ 

 Almost done! As last step in this chapter, we need to register the site in the `sites/sites.php` file 

 ~~~ 
 vi web/sites/sites.php 
 ~~~ 

 After editing this file it is recommended to check the validity of the configured sites, create a file sites-debug.php with: 

 ~~~ 
 <?php 

 require('sites.php'); 

 print_r($sites); 
 ~~~ 

 and test your settings: 

 ~~~ 
 php web/sites/sites-debug.php 
 ~~~ 

 The output shows which url pattern are mapped to which sub-folder of `web/sites/`  

 ~~~ 
 Array 
 ( 
     [dataportal.test.cichorieae] => cichorieae 
     [dataportal.test.cyprus] => cyprus 
     [dataportal.test.palmae] => palmae 
     [dataportal.test.algaterra-new] => algaterra-new 
 ) 
 ~~~ 

 in case your new site is to be running at http://dataportal.test/algaterra-new/ 

 ### Restoring database dumps 


 **NOTE**: It is recommended to follow these instructions without opening the modules or themes admin pages in Drupal before you completed the steps below. 

 ~~~ 
 drush -l http://dataportal.test/algaterra-new/ st 
 ~~~ 

 **IMPORTANT**: Check the output for the "Database name", "settings.php" file etc to make sure that we are operating on the correct site with the correct settings!!! 

 Restore the database dump to your database server.  

 The name of the data base at this point should match the one that has been reported above. 

 Also make sure that the mysql user and its password are matching your local setup!!! 

 Otherwise you need to edit the database configuration, like user, password, database name or database prefix ( the prefix should end with an underscore character '_'!!!) in the according the Drupal site settings.php 

 Check again if the site is configured correctly. In the drupal root execute: 

 ~~~ 
 drush -l http://dataportal.test/<site-name>/ st 
 ~~~ 

 now clear and disable the caches: 

 ~~~ 
 drush -l http://dataportal.test/<site-name> vset -y block_cache 0 
 drush -l http://dataportal.test/<site-name> vset -y cache 0 
 drush -l http://dataportal.test/<site-name> vset -y preprocess_css 0 
 drush -l http://dataportal.test/<site-name> vset -y preprocess_js 0 
 drush -l http://dataportal.test/<site-name> cc all 
 ~~~ 

 Drush may complain about missing modules? See the troubleshooting chapter below: "Fix missing modules" 

 Apply any pending database updates: 

 ~~~ 
 drush -l http://dataportal.test/<site-name>    updatedb   
 ~~~ 

 Now you can visit the cloned site : http://datportal.test/<site-name> 

 Navigation in the site seems broken? This might be caused by not working **clean-urls**, see the troubleshooting chapter below for fixing this. 

 ### Configure the cdm server (Optional step!) 

 ~~~ 
  drush -l http://dataportal.test/<site-name> vset cdm_webservice_url <cdm-instance-url> 
 ~~~ 

 ### Troubleshooting 

 #### Fix missing modules 

 Drush may complain    missing modules like wysiwyg, imce, imce_wysiwyg, develop, matomo etc. You may want to install some of these modules now. 
 For example, to install    wysiwyg imce imce_wysiwyg develop execute: 

 ~~~ 
 drush -l http://dataportal.test/new_site/ en wysiwyg imce imce_wysiwyg develop 
 ~~~ 

 Other modules can be removed as explained in the next step 

 If modules have been moved to other location in the `web/sites` folder you can try to repair the registry, so that the modules are found again: 

 Install the [`registry-rebuild`](https://www.drupal.org/project/registry_rebuild) module if it is not yet available: 

 ~~~ 
 drush @none dl registry_rebuild 
 ~~~ 

 Now you can repair the registry. 

 ~~~ 
 drush -l http://dataportal.test/<site-name> rr 
 ~~~ 

 or in newer versions: 

 ~~~ 
 drush -l http://dataportal.test/<site-name> rr --fire-bazooka 
 ~~~ 

 3. run `drupal-fix-missing-modules.sh` which is available at https://dev.e-taxonomy.eu/old/trac/browser/trunk/server-scripts/drupal/drupal-fix-missing-modules.sh ( To install checkout the    server-scripts in `/opt/`) 

 ~~~ 
 /opt/server-scripts/drupal/drupal-fix-missing-modules.sh http://dataportal.test/<site-name> 
 ~~~ 

 #### Fixing broken site navigation caused by clean-url 

 ~~~ 
 drush -l http://dataportal.test/<site-name> vset clean_url -y 0  
 ~~~ 

 #### Fixing broken layout 

 After activating the cloned site it can happen, that the site looks messy and appears as it the theme is broken or even missing.  
 Below commands can help in this case to reset the cache disable it. Disabling the cache is anyway a good idea for development environments: 

 ~~~ 
 drush -l http://dataportal.test/<site-name> vset -y clean_url -y 0 
 drush -l http://dataportal.test/<site-name> vset -y preprocess_css 0 
 drush -l http://dataportal.test/<site-name> vset -y preprocess_js 0 
 drush -l http://dataportal.test/<site-name> cc all 
 ~~~ 

 #### Using drupal_site_debug 

 In case of Problems assuming you are in the root folder of the `drupal-7-cdm-dataportal` project 

 ~~~~ 
 cd web/ 
 ln -s ../debug/drupal_site_debug.php ./  
 ~~~ 

 and run the drupal_site_debug.php for the site: 

 ~~~ 
 drush -l ${site-ulr} scr drupal_site_debug.php 
 ~~~ 

 **Debug sites.php** 

 To list all sites configured in the `site/sites.php` create file sites-debug.php:  
 ~~~ 
 <?php 

 require('sites.php'); 

 print_r($sites); 
 ~~~ 

 ~~~ 
 php sites/sites-debug.php    
 ~~~