%META:TOPICINFO{author="PeterThoeny" date="1044335963" format="1.0" version="1.4"}%
%TOC%
%STARTINCLUDE%

---# TWiki Upgrade Guide

_Upgrade from the previous TWiki 01-Dec-2001 production release to TWiki 01-Feb-2003_

---++ Overview

This guide describes how to upgrade from TWiki 01-Dec-2001 to TWiki 01-Feb-2003. The new version involves several new features and numerous enhancements to the previous version.

---++ Upgrade Requirements

	* To upgrade from a 01-Dec-2001 standard installation to the latest 01-Feb-2003 TWiki Production Release, follow the instructions below.

	* __NOTE:__ To upgrade from a *pre-01-Dec-2001* TWiki, start with	%TWIKIWEB%.TWikiUpgradeTo01Dec2001.

	* To upgrade from a Beta of the new release, or if you made custom modifications to the application, read through all new reference documentation, then use the procedure below as a guideline.  

---++ Major Changes from TWiki 01-Dec-2001

	* Form and script to [[ManagingWebs][create new webs]]
	* Enhanced Plugin API to manipulate topic data with new functions in TWikiFuncModule: =readTopicText=, =saveTopicText=, =setTopicEditLock=, =checkTopicEditLock=
	* New Plugin hooks =registrationHandler=, =beforeEditHandler=, =afterEditHandler=, =beforeSaveHandler=, =writeHeaderHandler=, =redirectCgiQueryHandler=, =getSessionValueHandler=, =setSessionValueHandler=
	* Internationalization ('I18N') support 8-bit character sets in WikiWords, such as ISO-8859-15, KOI8-R
	* Possible to omit e-mail address in %NOTIFYTOPIC%, in which case the e-mail is taken from the user's home page; if the WikiName is a group name, a notification is sent to all members of the group
	* New data storage framework that lets you use external RCS commands for revision control, or a new native Perl implementation that does not depend on the external RCS commands (not recommended yet for production use, see TWiki:Codev/RcsLite)
	* New AND search; with regular expression enabled, use the semicolon ";" as the AND operator in =%<nop>SEARCH{}%= variable, FormattedSearch and WebSearch
	* Many more enhancements, see the complete change log at TWikiHistory

---++ Upgrade Procedure from 01-Dec-2001 to 01-Feb-2003 Release

The following steps describe the upgrade assuming that =$TWIKIROOT= is the root of your current 01-Dec-2001 release.  As written this will require some downtime.  A process for switching over without downtime is described at the end of this section.

	1. *Back up and prepare*:
		* Back up all existing TWiki directories =$TWIKIROOT/bin=, =$TWIKIROOT/pub=, =$TWIKIROOT/data=, =$TWIKIROOT/templates=, =$TWIKIROOT/lib=.
		* Create a temporary directory and unpack the ZIP file there.
	1. *Update files in TWiki root*:
		* Overwrite all =*.html= and =*.txt= files in =$TWIKIROOT= with the new ones.
	1. *Update template files*:
		* Overwrite all template files in =$TWIKIROOT/templates= with the new ones.
			* If you have customized your templates, make sure to merge those changes to the new files.
		* If you have customized skins or loaded new skins, make sure to merge or apply those changes to the new files.
		* Specific changes to templates and skins:
			* Replace =%<nop>WIKIHOMEURL%= with =%<nop>WIKILOGOURL%=
			* Replace img tag's =src=%<nop>PUBURLPATH%/wikiHome.gif= with =src=%<nop>WIKILOGOIMG%=
			* Replace img tag's =alt="TWiki Home"= with =alt="%<nop>WIKILOGOALT%"=
			* Replace meta tag's =charset=iso-8859-1"= with =charset=%<nop>CHARSET%"=
			* Add =%<nop>TOPIC%= to form action of GoBox
			* For internationalized sites, URL encode webs and topics in all form actions, e.g. replace =.../view%<nop>SCRIPTSUFFIX%/%<nop>WEB%/%<nop>TOPIC%"= with =.../view%<nop>SCRIPTSUFFIX%/%<nop>INTURLENCODE{"%<nop>WEB%/%<nop>TOPIC%"}%=
	1. *Update script files*:
		* Overwrite all script files in =$TWIKIROOT/bin= with the new ones.
			* If necessary, change the script names to include the required extension, e.g. =.cgi=
		* Edit =$TWIKIROOT/bin/setlib.cfg= and point =$twikiLibPath= to the absolute file path of =$TWIKIROOT/lib= 
		* Edit =$TWIKIROOT/bin/.htaccess= to include a directive for the new =manage= script:%BR%
		  =&lt;Files "manage"&gt;= %BR%
		  =&nbsp; &nbsp; require valid-user= %BR%
		  =&lt;/Files&gt;=
		* Pay attention to the file and directory permissions, the scripts need to be executable, e.g. =chmod 775 $TWIKIROOT/bin/*=
		* If on Non-Unix host, make sure the correct path to the perl interpreter is changed in the first line of every script file. See also [[WindowsInstallCookbook#Editing_the_CGI_scripts][WindowsInstallCookbook]].
	1. *Update library files*:
		* Overwrite the =TWiki.cfg= configuration file in =$TWIKIROOT/lib= with the new one.
		* Restore the configuration values from the backup. You typically need to configure just the ones in the section "variables that need to be changed when installing on a new server".
		* Overwrite the =TWiki.pm= library in =$TWIKIROOT/lib= with the new one.
		* Copy and overwrite all subdirectories below =$TWIKIROOT/lib= with the new ones. Make sure to preserve any extra Plugins you might have in =$TWIKIROOT/lib/TWiki/Plugins= 
		* Pay attention to the file and directory permissions, the library files should not be executable, e.g. =chmod -R 664 $TWIKIROOT/lib/*=
	1. *Update data files*:
		* Run the =bin/testenv= script from the browser (e.g. =http://localhost/bin/testenv=) to verify if the cgi-scripts are running as user =nobody=.
			* In case not: The =*,v= RCS repository files delivered with the installation package are locked by user =nobody= and need to be changed to the user of your cgi-scripts, e.g. =www-data=:
			* Change the lock user in the temporary =twiki/data/*= directories where you unzipped the installation package: A simple way to switch the locker of the RCS files is to use sed in the :
			  <br /> =for f in *,v; do sed 's/nobody\:/www-data\:/' $f &gt; x; mv x $f; done=
		* In the temporary =twiki/data/TWiki= directory where you unzipped the installation package:
			* Remove the files you do *not* want to upgrade: =InterWikis.*=, =TWikiRegistration.*=, =TWikiRegistrationPub.*=, =WebNotify.*=, =WebPreferences.*=, =WebStatistics.*= and all =WebTopic*= files.
		* Rename in the temporary directory the file =$TWIKIROOT/data/TWiki/TWikiPreferences.*= to =TWikiPreferencesSave.*=.
		* Move all remaining =*.txt= and =*.txt,v= files from the temporary =data/TWiki= directory to your =$TWIKIROOT/data/TWiki= directory, overwriting the existing ones.
		* Merge your original =TWikiPreferencesSave.txt= settings into =$TWIKIROOT/data/TWiki/TWikiPreferences.txt=.
		* Move the =data/_default= directory from the temporary location to your =$TWIKIROOT/data= directory.
		* Move the =data/Sandbox= directory from the temporary location to your =$TWIKIROOT/data= directory %BR% (The *Test* web has been renamed to *Sandbox* in this release.)
			* There are now *two webs in parallel* (Test and Sandbox) for the purpose of testing (experimenting) TWiki. %BR% Move all relevant topics from Test web to Sandbox web, or motivate the users to do.
		* Make sure that the directories and files below =$TWIKIROOT/data= are writable by your cgi-script user.
	1. *Adapt the other webs (all other than =TWiki= and =_default=)*:
		* Merge the new files =WebHome.txt= and =WebPreferences.txt= of your other webs to make sure, you have the improvements applied also in your other webs.
	1. *Update pub files*:
		* Move all subdirectories below =pub/TWiki= from your temporary directory into your =$TWIKIROOT/pub/TWiki= directory.
		* Make sure that the directories and files below =$TWIKIROOT/pub/TWiki= are writable by your cgi-script user.
		* Move all files in =pub/icn= directory from the temporary location to your =$TWIKIROOT/pub/icn= directory.
	1. *Update TWiki.TWikiPreferences to authorize users to create webs*:
		* Add =ALLOWWEBMANAGE= to the =FINALPREFERENCES= list so that nobody can overwrite the setting:
			*  Set FINALPREFERENCES = WIKIWEBMASTER, PREVIEWBGIMAGE, SMTPMAILHOST, SMTPSENDERHOST, ALLOWWEBMANAGE
		* Set users or groups allowed to [[TWiki.ManagingWebs][create new webs]]: 
			* Set ALLOWWEBMANAGE = Main.TWikiAdminGroup
	1. *Verify installation*:
		* Execute the =$TWIKIROOT/bin/testenv= script from your browser (e.g. =http://localhost/bin/testenv=) to see if it reports any issues; fix any potential problems.
		* Test your updated TWiki installation to see if you can view, create, edit and rename topics; upload and move attachments; register users.
		* Test if the installed Plugins work as expected. You should see the list of installed Plugins in TextFormattingRules.

*Note:* These steps assume a downtime during the time of upgrade. You could install the new version in parallel to the existing one and switch over in an instant without affecting the users. As a guideline, install the new version into =$TWIKIROOT/bin1=, =$TWIKIROOT/lib1=, =$TWIKIROOT/templates1=, =$TWIKIROOT/data/TWiki1= (from =data/TWiki=), =$TWIKIROOT/pub/TWiki1= (from =pub/TWiki=), and configure =TWiki.cfg= to point to the same data and pub directory like the existing installation. Once tested and ready to go, reconfigure =$TWIKIROOT/bin1/setlib.cfg= and =$TWIKIROOT/lib1/TWiki.cfg=, then rename =$TWIKIROOT/bin= to =$TWIKIROOT/bin2=, =$TWIKIROOT/bin1= to =$TWIKIROOT/bin=. Do the same with the =lib=, =templates= and =data/TWiki= directories.

---++ Known Issues

	* Check TWiki:Codev/KnownIssuesOfTWiki01Feb2003 for known issues of TWiki 01-Feb-2003 production release

-- Main.PeterThoeny - 01 Feb 2002 %BR%
-- Main.MartinRaabe - 15 Jan 2003
