9.2 KiB
Installing and Running BigchainDB Server
We're developing BigchainDB Server on Ubuntu 14.04, but it should work on any OS that runs RethinkDB Server and Python 3.4+. (BigchainDB Server is built on top of RethinkDB Server.)
BigchainDB Server is intended to be run on each server in a large distributed cluster of servers; it's not very useful running by itself on a single computer. That's why we're developing it on Ubuntu 14.04: it's one of the more common server operating systems.
Mac OS X users may get the best results running BigchainDB Server with Docker.
Windows users may get the best results running BigchainDB Server in a VM with Vagrant.
(BigchainDB clients should run on a much larger array of operating systems.)
Install and Run RethinkDB Server
If you don't already have RethinkDB Server installed on your server, you must install it. The RethinkDB documentation has instructions for how to install RethinkDB Server on a variety of operating systems.
RethinkDB Server doesn't require any special configuration. You can run it by opening a Terminal and entering:
$ rethinkdb
Install Python 3.4+
If you don't already have it, then you should install Python 3.4+ (maybe in a virtual environment, so it doesn't conflict with other Python projects you're working on).
Install BigchainDB Server
BigchainDB Server has some OS-level dependencies.
On Ubuntu 14.04, we found that the following was enough:
$ sudo apt-get update
$ sudo apt-get install g++ python3-dev
On Fedora 23, we found that the following was enough (tested in February 2015):
$ sudo dnf update
$ sudo dnf install gcc-c++ redhat-rpm-config python3-devel
(If you're using a version of Fedora before version 22, you may have to use yum
instead of dnf
.)
With OS-level dependencies installed, you can install BigchainDB Server with pip
or from source.
How to Install BigchainDB with pip
BigchainDB (i.e. both the Server and the officially-supported drivers) is distributed as a Python package on PyPI so you can install it using pip
. First, make sure you have a version of pip
installed for Python 3.4+:
$ pip -V
If it says that pip
isn't installed, or it says pip
is associated with a Python version less than 3.4, then you must install a pip
version associated with Python 3.4+. See the pip
installation instructions. On Ubuntu 14.04, we found that this works:
$ sudo apt-get install python3-setuptools
$ sudo easy_install3 pip
(Note: Using sudo apt-get python3-pip
also installs a Python 3 version of pip
(named pip3
) but we found it installed a very old version and there were issues with updating it.)
Once you have a version of pip
associated with Python 3.4+, then you can install BigchainDB Server (and officially-supported BigchainDB drivers) using:
sudo pip install bigchaindb
(or maybe sudo pip3 install bigchaindb
or sudo pip3.4 install bigchaindb
. The sudo
may not be necessary.)
Note: You can use pip
to upgrade the bigchaindb
package to the latest version using sudo pip install --upgrade bigchaindb
How to Install BigchainDB from Source
If you want to install BitchainDB from source because you want to contribute code (i.e. as a BigchainDB developer), then please see the instructions in the CONTRIBUTING.md
file.
Otherwise, clone the public repository:
$ git clone git@github.com:bigchaindb/bigchaindb.git
and then install from source:
$ python setup.py install
How to Install BigchainDB on a VM with Vagrant
One of our community members (@Mec-Is) wrote a page about how to install BigchainDB on a VM with Vagrant.
Run BigchainDB Server
Once you've installed BigchainDB Server, you can run it. First make sure you have RethinkDB running:
$ rethinkdb
Then open a different terminal and run:
$ bigchaindb -y configure
That creates a configuration file in $HOME/.bigchaindb
(documented in the section on configuration). More documentation about the bigchaindb
command is in the section on the BigchainDB Command Line Interface (CLI).
You can start BigchainDB Server using:
$ bigchaindb start
If it's the first time you've run bigchaindb start
, then it creates the database (a RethinkDB database), the tables, the indexes, and the genesis block. It then starts BigchainDB. If you're run bigchaindb start
or bigchaindb init
before (and you haven't dropped the database), then bigchaindb start
just starts BigchainDB.
Run BigchainDB with Docker
NOT for Production Use
For those who like using Docker and wish to experiment with BigchainDB in
non-production environments, we currently maintain a Docker image and a
Dockerfile
that can be used to build an image for bigchaindb
.
Pull and Run the Image from Docker Hub
Assuming you have Docker installed, you would proceed as follows.
In a terminal shell, pull the latest version of the BigchainDB Docker image using:
docker pull bigchaindb/bigchaindb:latest
then do a one-time configuration step to create the config file; we will use
the -y
option to accept all the default values. The configuration file will
be stored in a file on your host machine at ~/bigchaindb_docker/.bigchaindb
:
$ docker run --rm -v "$HOME/bigchaindb_docker:/data" -ti \
bigchaindb/bigchaindb:latest -y configure
Generating keypair
Configuration written to /data/.bigchaindb
Ready to go!
Let's analyze that command:
docker run
tells Docker to run some image--rm
remove the container once we are done-v "$HOME/bigchaindb_docker:/data"
map the host directory$HOME/bigchaindb_docker
to the container directory/data
; this allows us to have the data persisted on the host machine, you can read more in the official Docker documentation-t
allocate a pseudo-TTY-i
keep STDIN open even if not attachedbigchaindb/bigchaindb:latest
the image to use-y configure
execute theconfigure
sub-command (of thebigchaindb
command) inside the container, with the-y
option to automatically use all the default config values
After configuring the system, you can run BigchainDB with the following command:
$ docker run -v "$HOME/bigchaindb_docker:/data" -d \
--name bigchaindb \
-p "58080:8080" -p "59984:9984" \
bigchaindb/bigchaindb:latest start
The command is slightly different from the previous one, the differences are:
-d
run the container in the background--name bigchaindb
give a nice name to the container so it's easier to refer to it later-p "58080:8080"
map the host port58080
to the container port8080
(the RethinkDB admin interface)-p "59984:9984"
map the host port59984
to the container port9984
(the BigchainDB API server)start
start the BigchainDB service
Another way to publish the ports exposed by the container is to use the -P
(or
--publish-all
) option. This will publish all exposed ports to random ports. You can
always run docker ps
to check the random mapping.
You can also access the RethinkDB dashboard at http://localhost:58080/
If that doesn't work, then replace localhost
with the IP or hostname of the
machine running the Docker engine. If you are running docker-machine (e.g. on
Mac OS X) this will be the IP of the Docker machine (docker-machine ip machine_name
).
Load Testing with Docker
Now that we have BigchainDB running in the Docker container named bigchaindb
, we can
start another BigchainDB container to generate a load test for it.
First, make sure the container named bigchaindb
is still running. You can check that using:
docker ps
You should see a container named bigchaindb
in the list.
You can load test the BigchainDB running in that container by running the bigchaindb load
command in a second container:
$ docker run --rm -v "$HOME/bigchaindb_docker:/data" -ti \
--link bigchaindb \
bigchaindb/bigchaindb:latest load
Note the --link
option to link to the first container (named bigchaindb
).
Aside: The bigchaindb load
command has several options (e.g. -m
). You can read more about it in the documentation about the BigchainDB command line interface.
If you look at the RethinkDB dashboard (in your web browser), you should see the effects of the load test. You can also see some effects in the Docker logs using:
$ docker logs -f bigchaindb
Building Your Own Image
Assuming you have Docker installed, you would proceed as follows.
In a terminal shell:
$ git clone git@github.com:bigchaindb/bigchaindb.git
Build the Docker image:
$ docker build --tag local-bigchaindb .
Now you can use your own image to run BigchainDB containers.