summaryrefslogtreecommitdiff
path: root/docs/deployment.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/deployment.rst')
-rw-r--r--docs/deployment.rst231
1 files changed, 231 insertions, 0 deletions
diff --git a/docs/deployment.rst b/docs/deployment.rst
new file mode 100644
index 00000000..c0b07e43
--- /dev/null
+++ b/docs/deployment.rst
@@ -0,0 +1,231 @@
+===================
+Deployment Protocol
+===================
+
+------
+Wallet
+------
+
+.. code-block:: none
+
+ $ cd wallet-webex
+
+ # check dependencies
+ $ ./configure
+
+ # edit version and version_name
+ $ $EDITOR manifest.json
+
+ $ make package-stable
+
+The built wallet is now ready in `taler-wallet-stable-${version_name}${version}.zip`.
+
+FIXME: here, we should do some semi-automated testing with selenium, to see
+that everything works against `demo.taler.net`.
+
+The package can now be uploaded to https://chrome.google.com/webstore/developer/dashboard
+
+FIXME: include asset links and descriptions we use in the webstore in this document
+
+FIXME: include instructions for other app stores
+
+
+--------------------
+Deploying to stable
+--------------------
+
+First, make sure that the deployment *AND* the deployment scripts work on the `test.taler.net` deployment.
+
+For all repositories that have a separate stable branch (currently exchange.git,
+merchant.git, merchant-frontends.git, bank.git, landing.git) do:
+
+.. code-block:: none
+
+ $ cd $REPO
+ $ git pull origin master stable
+ $ git checkout stable
+
+ # option a: resolve conflicts resulting from hotfixes
+ $ git merge master
+ $ ...
+
+ # option b: force stable to master
+ $ git update-ref refs/heads/stable master
+
+ $ git push # possibly with --force
+
+ # continue development
+ $ git checkout master
+
+
+Log into taler.net with the account that is *not* active by looking
+at the `sockets` symlink of the `demo` account.
+
+The following instructions wipe out the old deployment completely.
+
+.. code-block:: none
+
+ $ ls -l ~demo/sockets
+
+ [...] sockets -> /home/demo-green/sockets/
+
+In this case, `demo-green` is the active deployment, and `demo-blue` should be updated.
+After the update is over, the `/home/demo/sockets` symlink will be pointed to `demo-blue`.
+
+.. code-block:: none
+
+ # Remove all existing files
+ $ find $HOME -exec rm -fr {} \;
+
+ $ git clone /var/git/deployment.git
+ $ ./deployment/bootstrap-bluegreen demo
+
+ # set environment appropriately
+ $ . activate
+ $ taler-deployment-build
+
+ # upgrade the database! this
+ # process depends on the specific version
+
+ $ taler-deployment-start
+
+ # look at the logs, verify that everything is okay
+
+Now the symlink can be updated.
+
+
+
+------------------
+Database upgrades
+------------------
+
+The exchange db can be re-initialized with
+
+.. code-block:: none
+
+ $ taler-exchange-dbinit -r
+
+CAUTION: YOU WILL LOSE ALL DATA WITH THIS!
+
+
+---------------------
+Standalone deployment
+---------------------
+
+This tecnique aims to set a thorough Taler installation up on a
+machine whose nginx configuration is configured by config files
+from https://git.taler.net/deployment.git/tree/etc/nginx.
+
+This installation assumes that all the steps are run with ``$HOME``
+as ``$CWD``.
+
+The first step is to fetch the `deployment` repository, which hosts all
+the needed scripts.
+
+.. code-block:: none
+
+ # Adapt the repository's URI to your needs.
+ $ git clone /var/git/deployment.git/
+
+The next step is to fetch all the codebases from all the components.
+
+.. code-block:: none
+
+ $ ./deployment/bootstrap-standalone
+
+If the previous step succeeded, a file named ``activate`` should be now
+in the ``$CWD``. It contains environmental definitions for ``$PATH`` and
+database names.
+
+.. note::
+
+ Please *ignore* the output from the previous script when it succeeds,
+ which is
+
+ .. code-block:: none
+
+ WARNING: enabling "trust" authentication for local connections
+ You can change this by editing pg_hba.conf or using the option -A, or
+ --auth-local and --auth-host, the next time you run initdb.
+
+ Success. You can now start the database server using:
+
+ /usr/lib/postgresql/9.5/bin/pg_ctl -D talerdb -l logfile start
+
+ The reason is that this message is generated by Postgresql's utilities and
+ you never need to start your database manually; it will be started by the
+ init script that launches all the Taler processes.
+
+Now we need to compile and install all the downloaded codebases.
+
+.. code-block:: none
+
+ # We first update ``$PATH``, in order to make all the compilation
+ and configuration utilities available.
+ $ source activate
+
+ # Double check if the previous step worked: $PATH should
+ # contain $HOME/local/bin.
+ $ echo $PATH
+
+ # The actual compilation:
+ $ taler-deployment-build
+
+The following step will generate config files for all the components.
+Please **note** that although a default currency will be picked up by the
+script, it is possible to have a custom currency by setting the environment
+variable ``TALER_CONFIG_CURRENCY`` to the wanted currency, and then runing
+the config generator.
+
+.. code-block:: none
+
+ $ taler-deployment-config-generate
+
+whereas the following one will place signatures inside wireformat JSON
+files.
+
+.. code-block:: none
+
+ $ taler-deployment-config-sign
+
+The next step is to generate `signkeys` and `denomkeys`.
+
+.. code-block:: none
+
+ $ taler-deployment-keyup
+
+..
+ An error of "invalid currency name" might be related to the current
+ policy of 12-chars limit for currency names; which is likely going to
+ be changed.
+
+It may be necessary to define database tables for the exchange. The
+following command does that.
+
+.. code-block:: none
+
+ # Erase all the data!
+ $ taler-exchange-dbinit -r
+
+As of the merchant backend, it creates tables at launch time, so it is
+not required to define tables before launching it. `However`, if some
+table's definition changed over the time, and there is a need to force
+a redefinition of tables, then the following command accomplishes that
+for the merchant:
+
+.. code-block:: none
+
+ # Erase all the data!
+ $ taler-merchant-dbinit -r
+
+If all previous steps succeeded, it is now possible to launch all the
+processes. That is accomplished by the following command:
+
+.. code-block:: none
+
+ $ taler-deployment-start
+
+.. note::
+
+ Please make sure your nginx works correctly with its configuration
+ at ``<DEPLOYMENT-REPO>/etc/nginx``.