We have a new wiki. The migration is not 100% complete. You can help out by moving pages across. This wiki will exist for as long as there are pages left.

The official documentation has moved to http://docs.couchdb.org — The transition is not 100% complete, but http://docs.couchdb.org should be seen as having the latest info. In some cases, the wiki still has some more or older info on certain topics inside CouchDB.

You need to be added to the ContributorsGroup to edit the wiki. But don't worry! Just email any Mailing List or grab us on IRC and let us know your user name.

Installing on RHEL 5

These instructions also work on Red Hat Enterprise Linux compatible distributions like CentOS.

Note: COUCHDB-315 has an attached patch for the CouchDB README which adds instructions for RHEL 5.

Installing a prepackaged CouchDB

1. Enable the EPEL repository.

2. Install the couchdb package from EPEL:

# yum install couchdb

3. Edit config file to suit:

# vi /etc/couchdb/local.ini

4. Start CouchDB:

# service couchdb start

5. Set it to start automatically on reboots:

# chkconfig --level 345 couchdb on

Building CouchDB from source (with EPEL packages)

1. Install prerequisites. You will need to enable the EPEL repository for the js-devel and erlang packages (or build js and erlang from source). On AWS Linux, edit /etc/yum.repos.d/epel.repo and inside the [epel] segment, change enabled=1.

# yum install libicu-devel openssl-devel curl-devel make gcc erlang js-devel libtool which

1.1 If installing CouchDB >= 0.11, you will need cURL>= 7.18. Currently neither EPEL, nor IUS provide a current enough libcurl. Visit the curl download page for the most recent curl package.

$ wget http://curl.haxx.se/download/curl-7.20.1.tar.gz
$ tar -xzf curl-7.20.1.tar.gz
$ cd curl-7.20.1
$ ./configure --prefix=/usr/local
$ make
$ make test
# make install

2. Install CouchDB

The configure line below is for 64-bit, adjust for your arch (or leave out --with-erlang if configure can find out for itself). You can use a release tarball instead of a checkout, in that case skip right to the ./confgure line.

$ svn checkout http://svn.apache.org/repos/asf/couchdb/trunk couchdb
$ cd couchdb
$ ./bootstrap
$ ./configure --with-erlang=/usr/lib64/erlang/usr/include
$ make
# make install

3. Edit config file to suit

# vi /usr/local/etc/couchdb/local.ini

4. Create user, modify ownership and permissions

Create the couchdb user:

# adduser -r --home /usr/local/var/lib/couchdb -M --shell /bin/bash --comment "CouchDB Administrator" couchdb

See the README for additional chown and chmod commands to run.

4.1 fix permission

chown -R couchdb: /usr/local/var/lib/couchdb /usr/local/var/log/couchdb

5. Launch!

# sudo -u couchdb couchdb

Or as daemon:

# /usr/local/etc/rc.d/couchdb start

6. Run as daemon on start-up:

# ln -s /usr/local/etc/rc.d/couchdb /etc/init.d/couchdb
# chkconfig --add couchdb
# chkconfig --level 345 couchdb on

Building CouchDB from source (with standard packages only)

Tested with 64-bit CentOS 5.6. Replace "/opt/couchdb" with a directory of your choice.

1. Install prerequisites (standard packages only, no additional repositories).

# yum install gcc libtool xulrunner-devel libicu-devel openssl-devel

2. Build Erlang from otp_src_R14B.tar.gz:

$ ./configure --prefix=/opt/couchdb/erlang --without-termcap --without-javac --enable-smp-support --disable-hipe
$ make
# make install

3. Build Curl from curl-7.21.6.tar.gz:

$ ./configure --prefix=/opt/couchdb/curl
$ make
# make install

4. Build CouchDB from apache-couchdb-1.0.2.tar.gz

$ ERL=/opt/couchdb/erlang/bin/erl ERLC=/opt/couchdb/erlang/bin/erlc CURL_CONFIG=/opt/couchdb/curl/bin/curl-config LDFLAGS=-L/opt/couchdb/curl/lib ./configure --prefix=/opt/couchdb/couchdb --with-erlang=/opt/couchdb/erlang/lib/erlang/usr/include/ --with-js-include=/usr/include/xulrunner-sdk-1.9.2/ --with-js-lib=/usr/lib64/xulrunner-sdk-1.9.2/lib
$ make
# make install

Tip: mind the firewall

It's very likely that the default installation of a Red Hat system has the firewall turned on. This can be verified by issuing:

# service iptables status

If it is active then it will list the rules, otherwise you'll get an unrecognized service error message. The default firewall configuration on such system resides in /etc/sysconfig/iptables (and if you're using ipv6 then /etc/sysconfig/ip6tables). In this case just insert a rule for CouchDB before the REJECT rule. By default, the rules should look like the following (already added the CouchDB rule):

:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
### The following rule allows CouchDB connections from everywhere ###
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 5984 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

Similarly, the firewall could be active also on CentOS systems. The file is still the same (/etc/sysconfig/iptables) but the default rules change a bit. Also in this case insert the rule for CouchDB before the REJECT.

-A INPUT -p tcp --dport 5984 -j ACCEPT

In both cases, don't forget to restart the iptables service

# service iptables restart

Installing_on_RHEL5 (last edited 2013-03-11 22:59:51 by DaveCottlehuber)