Differences between revisions 24 and 25
Revision 24 as of 2010-05-25 06:12:37
Size: 8906
Editor: 129-97-224-144
Revision 25 as of 2010-06-08 13:18:56
Size: 8936
Editor: p4FEE9284
Comment: useradd & chown path corrected
Deletions are marked like this. Additions are marked like this.
Line 50: Line 50:
useradd -d /var/lib/couchdb couchdb
chown -R couchdb: /var/lib/couchdb /var/log/couchdb
useradd -d /usr/local/var/lib/couchdb couchdb
chown -R couchdb: /usr/local/var/lib/couchdb /usr/local/var/log/couchdb

Batteries Included

Newer versions of Ubuntu have CouchDB included in their respective software repositories. You can install CouchDB with the Synaptic GUI, or from the command line with the apt or aptitude utilities, which ever you prefer. However, to get the newest version of CouchDB you may have to install from source, or other package repositories that have newer pre-built CouchDB packages.

Example 1:

sudo aptitude install couchdb

Installing From Source

This is a basic outline of the steps required to build CouchDB from source on Ubuntu. Like many things, there are multiple ways to achieve the same task. With that in mind, these steps may or may not be the best method for you.

  • Install CouchDBs first set of dependencies: sudo apt-get build-dep couchdb
  • Install CouchDBs second set of dependencies: sudo apt-get install libmozjs-dev libicu-dev libcurl4-gnutls-dev libtool

    (*NOTICE*: In Ubuntu 10.04, libmozjs-dev is no longer available. You should use xulrunner-dev instead)

  • Then download the latest CouchDB source file. The wget utility is a useful utility for this. For example: wget http://mirrors.axint.net/apache/couchdb/0.11.0/apache-couchdb-0.11.0.tar.gz

  • Untar (decompress) the source file: tar -zxvf apache-couchdb-*.*.*.tar.gz
  • Change into the expanded directory: cd apache-couchdb-*.*.*
  • Configure the build: ./configure (You may need to specify build options like the installation directory, etc. Please reference the example(s) below.)
  • Build or Compile the source: make (You shouldn't have any errors when this process is done. If you do you should fix them before moving to the next step.)
  • Install your newly built CouchDB: sudo make install
  • Once the installation completes successfully, you will need to make sure that there is a CouchDB user, and that the CouchDB user owns the necessary files and directories.
  • Now you can run CouchDB manually by changing into the /bin folder of the installed directory, and running the following command: "sudo -u couchdb ./couchdb "
  • Once the server is running you can browse to http://localhost:5984/_utils. This should take you to the Futon Web GUI.

  • To be thorough, you should run the built in tests to ensure that CouchDB is working properly. To run the tests, click on the "Test Suite" link on the right hand side of the Futon Web GUI, then click on "Run All" to execute all of the built in tests. All of tests should run without error on Ubuntu.
  • Once CoucDB is working properly you can add CouchDB to your startup scripts if desired.

Note: If you installed all the dependencies of Couchdb from the Synaptic GUI, but not Couchdb itself, some of the dependencies may think they are not required and the update manager may suggest that they are removed. Should you remove these dependencies, CouchDB may fail to start, perhaps with an error such as:

{"init terminating in do_boot",{undef,[{crypto,start,[]},{erl_eval,do_apply,5},{init,start_it,1},{init,start_em,1}]}}

If this happens simply re-install the dependencies (possibly erlang-nox but it could vary)

Ubuntu 10.04

Installing CouchDB from source on Ubuntu 10.04 (Example 1):

Please see below in links for complete instructions on how to install CouchDB 0.11 specifically.

sudo su
# Install dependencies required to build couchdb from sourece
apt-get build-dep couchdb
cd /opt
# download the latest release from http://couchdb.apache.org/downloads.html
# wget <url>
tar xvzf apache-couchdb-x.xx.x.tar.gz
cd apache-couchdb-x.xx.x
./configure --with-js-lib=/usr/lib/xulrunner-devel- --with-js-include=/usr/lib/xulrunner-devel-
# Note: To install couchdb in the default location use --prefix= in the configure statement
make && make install
# Add couchdb user account
useradd -d /usr/local/var/lib/couchdb couchdb
chown -R couchdb: /usr/local/var/lib/couchdb /usr/local/var/log/couchdb
# start couchdb
/etc/init.d/couchdb start

# Start couchdb on system start
update-rc.d couchdb defaults

# Verify couchdb is running
# {"couchdb":"Welcome","version":"0.11.0"}

Additional Notes

Problems with libmozjs and xulrunner?

In Ubuntu 10.04 you may get an error similar to this:

OS Process Error <0.4649.0> :: {os_process_error,{exit_status,127}}
/opt/couchdb/lib/couchdb/bin/couchjs: error while loading shared libraries: libmozjs.so: cannot open shared object file: No such file or directory

This is can be resolved by creating an xulrunner configuration as follows:

sudo vi /etc/ld.so.conf.d/xulrunner.conf

Then add the following lines to the file (You may need to change the library version to match whats installed):


Once the configuration files is created and saved, you will need to run ldconfig:

sudo /sbin/ldconfig

This solution is referenced in this bug report @ https://bugs.launchpad.net/ubuntu/+source/xulrunner-1.9/+bug/557275

Don't forget to configure logging!

-Setup log rotate:

First off, a lot of people run CouchDB from source which means that in 99% of all installs, the log rotation is not activated.

To fix this (on Ubuntu/Debian), do the following:

sudo ln -s /usr/local/etc/logrotate.d/couch /etc/logrotate.d/couchdb

- Don't forget to change the path to match your installation.

Make sure to familiarize yourself with log rotate. Depending on the space requirements and business of your installation, you should adjust your configuration so that you don't run out of disk space. If CouchDB is unable to log, it will crash.

-Adjust the log level:

In most cases it's more than alright to just run with a log level of error.

Add the following to your local.ini (in [log]): level = error Log directory

If you are still running out of diskspace? Add the following to your local.ini (in [log]):

file = /path/to/more/diskspace/couch.log

... if you adjusted the above, you will need to correct the config for logrotate.d as well.

-No logging:

Last but not least — if no logs are needed, just turn them off completely.

These logging tips is based on the recommendations found here: Operating CouchDB

Note on installing on Ubuntu Desktop flavors

If you're *not* running Ubuntu server, but rather running some variant of Ubuntu desktop, I'd strongly recommend compiling from source and keeping the default prefix of /usr/local. Ubuntu comes standard with couchdb-bin, and uses desktop-couch with tools like Ubuntu One, gwibber, and evolution. But, it Lucid Lynx ships with version 0.10.0. This is a long-term support item, but that doesn't mean Canonical will be releasing 0.11 anytime soon.

So, to install a parallel version of current CouchDB on an Ubuntu desktop system, you should download build from source, being careful to keep the default install prefix of "/usr/local", and following all of the above instructions about libraries and dependencies.

Then, after installing CouchDB, you can still get it to start at boot as normal, but because 0.11.x is in /usr/local, just running

sudo update-rc.d couchdb defaults

is probably *not* going to do the right thing. What is seems to do is look in the /etc/init.d directory, where it will likely find the 0.10 version of CouchDB.

Instead, you have force the system to use the version of CouchDB installed in /usr/local. There should be an option to update-rc.d that will tell it to look in /usr/local/etc rather than /etc, but I couldn't find it.

A brute force way to make it work is to do something like:

 sudo mv /etc/init.d/couchdb /etc/init.d/couchdb.0.10.donotuse
 sudo ln -sf /usr/local/etc/init.d/couchdb /etc/init.d/couchdb
 sudo update-rc.d couchdb defaults

External Articles