This is an old revision of the document!
Checklist for upgrading production servers to 2.8
Sites to be upgraded on damocles.met.no:
- damocles (owns damocles_metadata and damocles_userbase)
- dokipy
- ipycoord
- gcwdemo
Other sites:
- arcticdata (separate server)
Phase 1. Preparation
Using gcwdemo as an example in code.
Server configuration
sudo apt-get install metno-perl-webdev-ver1
Site configuration
This should ideally be setup via https://svn.met.no/projects/metamodapps/, but will take too long to figure out. Instead will use existing generated master_config as starting point and backmerge changes to svn later. Custom styles ignored at this point - must be added later.
Must be repeated for each site.
base directory
To avoid complications with existing instances, put the new sites in /metno/metamod/metamod28/*
(the old sites are in /metno/metamod/*
). This means webrun will not be corrupted by mixing old and new data.
master_config
cd /metno/metamod/metamod28/gcwdemo sudo -u damocles mkdir app sudo -u damocles cp /metno/metamod/gcwdemo/r1/master_config.txt app/
Compare old master_config to default:
cd .. trunk/common/scripts/chk_conf.pl trunk/app/example/master_config.txt \ gcwdemo/master_config.txt
Other custom files
Postponed until Phase 5
Metamod source
cd /metno/metamod/metamod28 sudo svn co https://svn.met.no/metamod/trunk sudo chown -R damocles.damocles trunk/ # needed for building
Phase 2. Setting up new database
Only done once.
Database setup requires scripts generated to target. This means the Generate Target part of Phase 3 for site damocles must be executed first.
The database is not on the damocles server, but on metamoddb.met.no. This contains among others the following databases:
Name | Owner |
---|---|
damocles_metadata | admin |
damocles_userbase | admin |
To avoid conflicts and downtime, make two new databases for 2.8 instead:
damocles28_userbase
- userdb data are not duplicated anywhere else
- must dump 2.6 userdb and import into 2.8, then run upgradeuserdb_26-28.sh
pg_dump -h metamoddb -U admin damocles_userbase > damocles_userbase.sql createdb -U admin -h metamoddb -E UTF-8 damocles28_userbase cat damocles_userbase.sql | psql -h metamoddb -U admin damocles28_userbase cd /metno/metamod/metamod28/damocles target/userinit/upgradeuserdb_26-28.sh
[DONE]
damocles28_metadata
- metadatadb must be generated from scratch using createdb.sh
- which xml files should be used to populate the DB?
- /metno/metamod/damocles/webrun/XML/DAMOC ? (see damocles/master_config)
- run import_dataset.pl on files
- anything else to think of? (if so, probably best Heiko did this)
Phase 3. Setting up generic metamod
This will setup a generic Metamod 2.8 instance to test the system is running. Customization will be done afterwards, and the installation re-run.
Must be repeated for each site.
Generate target
cd /metno/metamod/metamod28/gcwdemo sudo -u damocles PERL5LIB=/opt/metno-perl-webdev-ver1/lib/perl5 ../trunk/update_target.pl app/
Note that Calalyst building tests during update_target will fail unless you have a working, up-to-date database; also, you cannot upgrade your database without running update_target. Chicken, meet egg. Suggest temporary commenting out the following on line 237 (+/-):
# # install Catalyst files before $appdir to avoid clobbering custom files # &install_catalyst;
You will now get the following error message:
Configuring application '' with Metamod 2.8 (2.8.0) Cannot write to target dir /metno/metamod/metamod28/damocles/target at ../trunk/update_target.pl line 189.
Time to take the weekend off and try again next week.
Create/update the runtime-environment:
sudo -u damocles ./target/prepare_runtime_env.sh
Test Catalyst
Remember each site must have its own dedicated port:
damocles | 3000 |
dokipy | 3001 |
ipycoord | 3002 |
gcwdemo | 3003 |
Apache configuration
This server uses DNS-based virtual hosting, however each site already has an existing setup in sites-available. This means the generated httpd.conf in target/etc cannot be used directly; instead you must manually copy & paste the new config into the old file. (Perhaps later when the 2.6 versions are turned off we could use the generated config files directly.)
Install services
Do not run install_jobs.sh; instead install links manually.
Phase 4. Adding custom functions and styling
Todo by someone else (have no idea what is required and how to implement it).
Must be repeated for each site.
— Geir Aalberg 2011/04/29 11:04