The how-to at http://plone.org/documentation/migration/2.1 remains valid, and a must-read.

The process in a nutshell:

A. Create an entirely fresh Plone instance. B. Copy existing content to it and migrate.

The steps to creating a production instance:

1. Checkout pleiades.buildout with the proper tag.
2. Edit root.ini and tasks/zope.ini to set admin password and port.
3. Run pleiades.buildout/build.py to create a fresh instance with all dependencies.
4. Delete instance/var.
5. Delete instance/log.
6. Create a new zeo under instance using zope/Zope-*/bin/mkzeoinstance.
7. Configure zeo to run on port 8100.
8. Configure zope to run as "zope" and use the zeo at 8100.
9. Copy old Data.fs to instance/var.
10. Symbolically link instance/bin/zeoctl to /etc/init.d/zeo-pleiades-beta.
11. Symbolically link instance/bin/zopectl to /etc/init.d/zope-pleiades-beta.
12. Change ownership of instance/var/* and instance/log/* to zope.zope.
12. Start zeo.
13. Start zope.
14. Through Plone admin, install/upgrade all products.
15. Through ZMI, run migration via portal_migration tool.
16. Pack database.
17. Rebuild catalog.