[Mailman-Developers] Doc patch: upgrading individual lists

Greg Ward gward@python.net
Fri Oct 18 21:49:52 2002


Back in May, Barry posted this message on how to move/upgrade individual
lists to MM 2.1:

  http://mail.python.org/pipermail-21/mailman-developers/2002-May/011785.html

This seems like a useful incantation to me, so I've added it, with some
variations of my own, to the UPGRADING document.  Here's the patch:

------------------------------------------------------------------------
--- UPGRADING	1 Aug 2002 19:24:47 -0000	2.9
+++ UPGRADING	18 Oct 2002 20:49:07 -0000
@@ -96,6 +96,102 @@
     manually. 
 
 
+UPGRADING INDIVIDUAL LISTS
+
+    If you're nervous about upgrading all of your lists to 2.1 in one
+    go, you can move them and upgrade them one at a time.  Start by
+    doing a clean Mailman 2.1 installation in an empty directory --
+    call it $MM21.  (I'll assume your Mailman 2.0 installation is in
+    $MM20.)
+
+    Doing this means you'll have co-habiting Mailman 2.0 and 2.1
+    installations for a while, until you have moved all of your lists to
+    Mailman 2.1.  Depending on your MTA and web server, this could be
+    transparent and painless, or it could be an ongoing headache.  If
+    you use Apache with mod_rewrite, then it's fairly straightforward to
+    set things up so that both Mailman 2.0 and 2.1 inhabit the /mailman
+    and /pipermail URL-space of your server; this makes the transition
+    almost transparent to list admins and subscribers.  See below for
+    details.
+
+    Now, for each list that you want to move, you'll have to
+
+      * Shut down your MTA.
+
+        If you have a lot of outgoing list traffic, you might need to
+        leave your MTA up but only let it accept connections from
+        127.0.0.1, so Mailman 2.0 can flush its queue.  How to do this
+        is MTA-dependent; for Exim, you can set
+        "local_interfaces = 127.0.0.1" and "kill -HUP" the Exim daemon.
+
+      * Shut down your web server.  For a more professional look,
+        or if you want to allow people to keep accessing the rest
+        of your web site, you could make your web server respond to
+        all /mailman/ URLs with a "temporarily unavailable" message.
+
+        How to do this is web server-dependent; with Apache and
+        mod_rewrite, this does the trick:
+          RewriteRule ^/mailman/.* \
+                      /var/www/unavailable.html [L]
+
+        (Of course, you'll have to supply your own
+        /var/www/unavailable.html.)
+
+      * Force Mailman 2.0 to process its queue:
+          python -S $MM20/cron/qrunner
+
+        (This is only necessary if there are any files in $MM20/qfiles;
+        if you need to do this, make sure you left your MTA listening to
+        127.0.0.1.)
+
+      * Move the list:
+          cd $MM20
+          mv -i lists/foo-list $MM21/lists
+          mv -i archives/private/foo-list $MM21/archives/private
+          mv -i archives/private/foo-list.mbox $MM21/archives/private
+          rm archives/public/foo-list
+          rm archives/public/foo-list.mbox
+          cd $MM21
+          bin/withlist -l -r fix_url mylist
+
+        (The fix_url step will not be necessary if your Mailman 2.0
+        and 2.1 installations will be sharing the same URL-space.)
+
+      * Edit your web server config so the list's URLs continue to
+        work.  There are two possible approaches here; the simpler way
+        is to setup a new slice of URL-space that will be used by your
+        Mailman 2.1 installation, eg. /mailman-21:
+        With Apache and mod_rewrite:
+          RewriteRule /mailman/(.*)/(foo-list.*) \
+                      /mailman-21/$1/$2 [R=temp]
+
+        (The [R=temp] assumes that "/mailman-21/" is a temporary URL,
+        and you'll move all your lists to "/mailman/" when the
+        transition to Mailman 2.1 is complete.)
+
+        If you don't want to expose ugly temporary URLs like
+        "/mailman-21" to the world, it's only slightly more work to make
+        Mailman 2.0 and 2.1 share the same slices of URL-space.  Here's
+        how to do it with Apache and mod_rewrite:
+          RewriteRule ^/mailman/(.*)/(foo-list.*) \
+                      $MM21/cgi-bin/$1/$2 \
+                      [T=application/x-httpd-cgi]
+
+        Not only is this more aesthetically pleasing, it's faster -- no
+        redirects.
+
+        In either case, you'll want to rewrite the list's archive URLs
+        to Mailman 2.1's archive:
+          RewriteRule ^/pipermail/(foo-list.*) \
+                      $MM21/archives/public/$1
+
+      * Restart your web server (or disable the "temporarily
+        unavailable" stuff).
+
+      * Restart your MTA (or make it listen to more than just
+        127.0.0.1).
+
+
 UPGRADING FROM 2.0 to 2.0.1
 
     Nothing much more than running "make install" (after upgrading)
------------------------------------------------------------------------

Sound useful?  Big enough to go in a separate document?

        Greg
-- 
Greg Ward <gward@python.net>                         http://www.gerg.ca/
No man is an island, but some of us are long peninsulas.