Apache CouchDB Readme ===================== Documentation ------------- Visit the wiki for more documentation. Building From Subversion ------------------------ Dependencies ~~~~~~~~~~~~ To build Apache CouchDB from checkout you need some of the following installed: * GNU Automake (>=1.6.3) (required) * GNU Autoconf (>=2.59) (required) * GNU Libtool (required) * svn2cl (optional) * xsltproc (optional) * help2man (optional) If you are running a Debian GNU/Linux system (or a derivative such as Ubuntu GNU/Linux) you can install these dependencies using the `apt-get' command: -------------------------------------------------------------------------------- apt-get install automake autoconf libtool subversion-tools help2man -------------------------------------------------------------------------------- If you are running OS X and have MacPorts installed you can install some of these dependencies by using the `port' command: -------------------------------------------------------------------------------- port install automake autoconf libtool help2man -------------------------------------------------------------------------------- Note: OS X users should already have Automake, Autoconf and Libtool installed. Note: MacPorts users will need to install svn2cl by hand. Bootstrapping ~~~~~~~~~~~~~ Note: You must repeat this step every time you update your Subversion checkout. Bootstrap the pristine source by running the following command: -------------------------------------------------------------------------------- ./bootstrap -------------------------------------------------------------------------------- You can use the `-C' option to generate a dummy `ChangeLog' file. Installation And First Run -------------------------- You will need the following installed: * Erlang OTP (required) * ICU (required) * Mozilla SpiderMonkey (required) * GNU Make (required) * GNU Compiler Collection (required) UNIX-like Operating Systems (inc. OS X) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dependencies ^^^^^^^^^^^^ Debian-based (inc. Ubuntu) Systems ++++++++++++++++++++++++++++++++++ If you are running a Debian GNU/Linux system (or a derivative such as Ubuntu GNU/Linux) you can install the dependencies using the `apt-get' command: -------------------------------------------------------------------------------- apt-get install build-essential erlang libicu36 libicu36-dev libmozjs-dev -------------------------------------------------------------------------------- If you get an error regarding the `libicu36' or `libicu36-dev' be sure to check the version used by your distribution (using `apt-cache search libicu') and install those packages instead. OS X ++++ To install GNU Make and the GNU Compiler Collection on OS X you should install the Xcode Tools metapackage by running the following command: -------------------------------------------------------------------------------- open /Applications/Installers/Xcode\ Tools/XcodeTools.mpkg -------------------------------------------------------------------------------- We recommend that you satisfy the other dependancies by installing MacPorts and running the following command: -------------------------------------------------------------------------------- port install icu erlang spidermonkey -------------------------------------------------------------------------------- Note: Don't forget to open a new terminal after you have installed MacPorts as it updates your PATH and you will not be able to run the `port' command without the effects of this change. To update your `locate' database you may want to run the following command: -------------------------------------------------------------------------------- sudo /usr/libexec/locate.updatedb -------------------------------------------------------------------------------- Installing ^^^^^^^^^^ Once you have satisfied dependencies you should run the following command: -------------------------------------------------------------------------------- ./configure -------------------------------------------------------------------------------- Note: Apache CouchDB is installed into `/usr/local' by default. If you want to change where Apache CouchDB is installed (or where to find Erlang) be sure to read the output from running the `./configure --help' command. Note: All the examples assume you have installed into `/usr/local'. If everything was successful you should see the following message: -------------------------------------------------------------------------------- You have configured Apache CouchDB. Time to relax. -------------------------------------------------------------------------------- Relax. To install Apache CouchDB you should then run the following command: -------------------------------------------------------------------------------- make && sudo make install -------------------------------------------------------------------------------- If you do not wish to be prompted to overwrite any existing Apache CouchDB configuration files you should run the following command: -------------------------------------------------------------------------------- sudo make && yes | sudo make install -------------------------------------------------------------------------------- Note: Use of the `sudo' command is only required if you are installing into a system owned directory. You do not need to do this if you are installing elsewhere, such as your home directory. More options can be found by reading the `INSTALL' file. Security Considerations ^^^^^^^^^^^^^^^^^^^^^^^ It is not advisable to run Apache CouchDB as the superuser. We strongly recommend that you create a specific user to run Apache CouchDB and own the data/log directories. You can use whatever tool your system provides to create a new `couchdb' user. On many UNIX-like systems you can run the following command: -------------------------------------------------------------------------------- adduser couchdb -------------------------------------------------------------------------------- OS X provides the standard Accounts option from the System Preferences application or you can optionally use the Workgroup Manager application which can be downloaded as part of the Server Admin Tools . You should set the home directory of the `couchdb' user to `/usr/local/var/lib/couchdb' which is the Apache CouchDB database directory. Make sure to change the ownership of the Apache CouchDB data directories by running the following commands: -------------------------------------------------------------------------------- chown -R couchdb /usr/local/var/lib/couchdb chown -R couchdb /usr/local/var/log/couchdb -------------------------------------------------------------------------------- Running Manually ^^^^^^^^^^^^^^^^ To start the Apache CouchDB server you should run the following command: -------------------------------------------------------------------------------- sudo -u couchdb couchdb -------------------------------------------------------------------------------- This uses the `sudo' command to run the `couchdb' command as the `couchdb' user. When Apache CouchDB starts it should eventually display the following message: -------------------------------------------------------------------------------- Apache CouchDB has started. Time to relax. -------------------------------------------------------------------------------- Relax. To check that everything has worked point your web browser to and run the test suite. OS X ++++ If you get error when running Apache CouchDB that look like the following: -------------------------------------------------------------------------------- dyld: Library not loaded: libicuuc.38.dy -------------------------------------------------------------------------------- You should make sure that your `~/.profile' file contains the following line: -------------------------------------------------------------------------------- export DYLD_LIBRARY_PATH=/opt/local/lib:$DYLD_LIBRARY_PATH -------------------------------------------------------------------------------- This should have been added for you by MacPorts but may be missing. Running as a Daemon ^^^^^^^^^^^^^^^^^^^ Note: These instructions assume you have created the `couchdb' user. See the specific system information included below to learn how to reconfigure this. Note: If any of these methods report a failure you can run the `couchdb' command manually to see the error messages it is displaying. The `/usr/local/etc/logrotate.d/couchdb' file is provided as a logrotate configuration that you can use to rotate Apache CouchDB's logs. SysV/BSD-style Systems ++++++++++++++++++++++ Depending on your system the `couchdb' init script will be installed into a direcory called `init.d' (for SysV-style systems) or `rc.d' (for BSD-style systems). These examples use the `[init.d|rc.d]' notation to indicate this. You can control the Apache CouchDB daemon by running the following command: -------------------------------------------------------------------------------- /usr/local/etc/[init.d|rc.d]/couchdb [start|stop|restart|force-reload|status] -------------------------------------------------------------------------------- If you wish to configure how the init script works, such as which user to run Apache CouchDB as, you must edit the `/usr/local/etc/default/couchdb' file as appropriate. If you are running the init script as a non-superuser you need to remove the line with the `COUCHDB_USER' setting. If you wish the ApacheCouchDB daemon to run as a system service you need to copy the `/usr/local/etc/[init.d|rc.d]/couchdb' script into your system wide `/etc/[init.d|rc.d]' directory and update your system configuration as appropriate. Consult your system documentation for more information. If you are running a Debian GNU/Linux system (or a derivative such as Ubuntu GNU/Linux) you can configure your system using the following command: -------------------------------------------------------------------------------- sudo update-rc.d couchdb defaults -------------------------------------------------------------------------------- OS X ++++ You can use the `launchctl' command to control the Apache CouchDB daemon. To load the launchd configuration you must run the following command: -------------------------------------------------------------------------------- sudo launchctl load /usr/local/Library/LaunchDaemons/org.apache.couchdb -------------------------------------------------------------------------------- You can stop the Apache CouchDB daemon by running the following command: -------------------------------------------------------------------------------- sudo launchctl unload /usr/local/Library/LaunchDaemons/org.apache.couchdb -------------------------------------------------------------------------------- If you wish to change the launchd configuration, such as which user to run Apache CouchDB as, you must edit the `/usr/local/Library/LaunchDaemons/org.apache.couchdb.plist' file as appropriate. If you wish the Apache CouchDB daemon to run as a system service you need to copy the `/usr/local/Library/LaunchDaemons/org.apache.couchdb.plist' file into your system wide `/Library/LaunchDaemons' directory. Windows ~~~~~~~ Windows documentation is incomplete. Please submit suggestions. Development and Distribution ---------------------------- Reconfiguring the Build System ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you have edited any of the files used by the build system, such as the `Makefile.am' files, you will need to reconfigure your source. To reconfigure the source run the following command from the root directory: -------------------------------------------------------------------------------- autoreconf && ./confgure -------------------------------------------------------------------------------- Checking In Changes ~~~~~~~~~~~~~~~~~~~ If your source directory has been configured or built you will need to clean the generated files before checking into the repository by running the following command: -------------------------------------------------------------------------------- make local-clean -------------------------------------------------------------------------------- If everything was successful you should now have a pristine checkout. Preparing For Distribution ~~~~~~~~~~~~~~~~~~~~~~~~~~ To build the source for distribution you should then run the following command: -------------------------------------------------------------------------------- ./configure && make distcheck -------------------------------------------------------------------------------- If everything was successful you should see a `zip' file and/or a `tar.gz' file sitting in the root directory ready for distribution. Release Checklist ~~~~~~~~~~~~~~~~~ 1. Update this file with important information. 2. Update the `NEWS' file with change information. 3. Update the `acinclude.m4' file with version information.