From 0faba2e31d59f0e4f56eb6a2ef42a030e8e4baf2 Mon Sep 17 00:00:00 2001 From: Lev Berman Date: Thu, 26 Jul 2018 15:57:09 +0200 Subject: [PATCH] Problem: The setup guide offers a cumbersome way to manage processes. Solution: Document how to manage processes using Monit. --- docs/server/source/simple-network-setup.md | 49 +++++++++++++++++++++- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/docs/server/source/simple-network-setup.md b/docs/server/source/simple-network-setup.md index dc13dd43..ccb9644a 100644 --- a/docs/server/source/simple-network-setup.md +++ b/docs/server/source/simple-network-setup.md @@ -54,8 +54,8 @@ sudo apt install -y python3-pip libssl-dev Now install the latest version of BigchainDB. You can find the latest version by going to the [BigchainDB project release history page on PyPI][bdb:pypi]. For example, to install version 2.0.0b3, you would do: -``` # Change 2.0.0b3 to the latest version as explained above: +``` sudo pip3 install bigchaindb==2.0.0b3 ``` @@ -220,7 +220,7 @@ persistent_peers = "@:26656,\ @:26656," ``` -## Member: Start MongoDB, BigchainDB and Tendermint +## Member: Start MongoDB If you installed MongoDB using `sudo apt install mongodb`, then MongoDB should already be running in the background. You can check using `systemctl status mongodb`. @@ -228,6 +228,10 @@ If MongoDB isn't running, then you can start it using the command `mongod`, but If you installed MongoDB using `sudo apt install mongodb`, then a MongoDB startup script should already be installed (so MongoDB will start automatically when the machine is restarted). Otherwise, you should install a startup script for MongoDB. +## Member: Start BigchainDB and Tendermint + +If you want to use a process manager, jump to the [next section](member-start-bigchaindb-and-tendermint-using-monit). + To start BigchainDB, one uses the command `bigchaindb start` but that will run it in the foreground. If you want to run it in the background (so it will continue running after you logout), you can use `nohup`, `tmux`, or `screen`. For example, `nohup bigchaindb start 2>&1 > bigchaindb.log &` The _recommended_ approach is to create a startup script for BigchainDB, so it will start right after the boot of the operating system. (As mentioned earlier, MongoDB should already have a startup script.) @@ -240,6 +244,45 @@ Note: We'll share some example startup scripts in the future. This document is a If you followed the recommended approach and created startup scripts for BigchainDB and Tendermint, then you can reboot the machine now. MongoDB, BigchainDB and Tendermint should all start. + +### Member: Start BigchainDB and Tendermint using Monit + +This section describes how to manage the BigchainDB and Tendermint processes using [Monit][monit] - a small open-source utility for managing and monitoring Unix processes. + +This section assumes that you followed the guide down to the [start MongoDB section](member-start-mongodb) inclusive. + +Install Monit: + +``` +sudo apt install monit +``` + +If you installed the `bigchaindb` Python package, you should have the `bigchaindb-monit-config` script in your `PATH` now. + +Run the script: + +``` +bigchaindb-monit-config +``` + +The script builds a configuration file for Monit. + +Run Monit as a daemon, instructing it to wake up every second to check on processes: + +``` +monit -d 1 +``` + +It will run the processes and restart them when they crash. If the root `bigchaindb_` process crashes, Monit will also restart the Tendermint process. + +Check the status by running `monit status` or `monit summary`. + +By default, it will collect program logs into the `~/.bigchaindb-monit/logs` folder. + +Consult `monit -h` or [the Monit documentation][monit-manual] to know more about the operational power you've just got the taste of. + +Check `bigchaindb-monit-config -h` if you want to arrange a different folder for logs or some of the Monit internal artifacts. + ## How Others Can Access Your Node If you followed the above instructions, then your node should be publicly-accessible with BigchainDB Root URL `http://hostname:9984` (where hostname is something like `bdb7.canada.vmsareus.net` or `17.122.200.76`). That is, anyone can interact with your node using the [BigchainDB HTTP API](http-client-server-api.html) exposed at that address. The most common way to do that is to use one of the [BigchainDB Drivers](./drivers-clients/index.html). @@ -273,3 +316,5 @@ TBD. [bdb:software]: https://github.com/bigchaindb/bigchaindb/ [bdb:pypi]: https://pypi.org/project/BigchainDB/#history [tendermint:releases]: https://github.com/tendermint/tendermint/releases +[monit]: https://www.mmonit.com/monit +[monit-manual]: https://mmonit.com/monit/documentation/monit.html