doc/book/admin/migration.rst
author Denis Laxalde <denis.laxalde@logilab.fr>
Thu, 21 Mar 2019 14:33:54 +0100
changeset 12530 9d88e1177c35
parent 10491 c67bcee93248
permissions -rw-r--r--
Remove Twisted web server Twisted web server is not used anymore and has been superseded by pyramid many years ago. Furthermore, our usage is not compatible with Python 3. So we drop the "etwist" sub-package. As a consequence, "all-in-one" configuration type gets dropped as it was Twisted-specific. We resurrect it in cubicweb/pyramid/config.py by only keeping options used by the "pyramid". Similarly, we introduce a AllInOneCreateHandler in cubicweb/pyramid/pyramidctl.py that is basically the one that lived in cubicweb/etwist/twctl.py and is used to create the "all-in-one" instance. Added a TODO here about "pyramid.ini" that could be generated at the end of bootstrap() method. In cubicweb/devtools/httptest.py, CubicWebServerTC is now equivalent to CubicWebWsgiTC and the latter is dropped.

.. -*- coding: utf-8 -*-

Migrating cubicweb instances - benefits from a distributed architecture
=======================================================================

Migrate apache & cubicweb
-------------------------

**Aim** : do the migration for N cubicweb instances hosted on a server to another with no downtime.

**Prerequisites** : have an explicit definition of the database host (not default or localhost). In our case, the database is hosted on another host.

**Steps** :

1. *on new machine* : install your environment (*pseudocode*) ::

     apt-get install cubicweb cubicweb-applications apache2

2. *on old machine* : copy your cubicweb and apache configuration to the new machine ::

    scp /etc/cubicweb.d/ newmachine:/etc/cubicweb.d/
    scp /etc/apache2/sites-available/ newmachine:/etc/apache2/sites-available/

3. *on new machine* : start your instances ::

     cubicweb start

4. *on new machine* : enable sites and modules for apache and start it, test it using by modifying your /etc/host file.

5. change dns entry from your oldmachine to newmachine

6. shutdown your *old machine* (if it doesn't host other services or your database)

7. That's it.

**Possible enhancements** : use right from the start a pound server behind your apache, that way you can add backends and smoothily migrate by shuting down backends that pound will take into account.