Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for 
change notification.

The "Installing_on_Windows" page has been changed by DaveCottlehuber:
http://wiki.apache.org/couchdb/Installing_on_Windows?action=diff&rev1=25&rev2=26

Comment:
oops

  
  <<TableOfContents>>
  
- = Warning =
+ The CouchDB project includes GNU autotools based scripts to build from 
source, ,a self-extracting install package for Windows. However the project 
does not provide official binaries for its distributions, as the official 
release artefact is the signed tar.gz bundle accessible from Apache mirrors. We 
know this is not always the easiest solution for people, so community-provided 
binaries are available below.
  
- CouchDB 1.0.x crashes on Windows when a database or index file reaches 4Gb in 
Erlang/OTP versions previous to R14B01. This is due to a Erlang/OTP Windows bug 
related with appending to files with a size equal to 4Gb or larger. Erlang/OTP 
release R14B01 no longer has this bug.
+ Instructions on building from source are 
[[https://github.com/apache/couchdb/|available]], as well as annotations for 
[[Building_from_source_on_Windows|older releases]].
  
- This page describes how to build and install couchdb from source on Windows.  
See also the [[Windows_binary_installer]].
+ == Supported / Tested Platforms ==
  
- = Windows Installer =
+ This installer has been tested on 64 and 32 bit versions of:
+  
+  * Windows Server 2008 both RTM and R2
+  * Windows 7 and Vista
+  * Windows Server 2003 and Windows XP
  
+ It is likely to work on most Windows versions released this century.
- There is a [[Windows binary installer]] in "beta testing". See the wiki page 
for it for more instructions.
- 
- Other source of installers for Windows, including future CouchDB releases, 
are at
-   * https://github.com/juranki/couchdb/downloads
-   * https://github.com/dch/couchdb/downloads
- 
- = Building current couchdb versions =
- 
- As of couchdb 0.10, support for Windows is included in the standard build 
process.  View 
[[http://svn.apache.org/viewvc/couchdb/trunk/README?view=co|README]] in the 
root of the source tree for information about the dependencies and how to 
configure the build process.  In summary, you will need to:
- 
-  * Install the cygwin environment.
- 
-  * Install the MS C compiler.
- 
-  * Install and possibly build a number of pre-requisites, such as curl, icu, 
spidermonkey, etc.
- 
-  * get the sources to erlang and couch
- 
-  * configure and build erlang according to the instructions.
- 
-  * configure and build couch according to the 
[[http://svn.apache.org/viewvc/couchdb/trunk/README?view=co|README]] file in 
couch
- 
- After executing 'make install', you will find a couchdb directory structure 
inside your erlang directory - that is, the couch build process simply installs 
its libraries into the erlang binaries you previously build.  This directory 
structure should be ready to roll - it can be zipped up, packaged by an 
installer, etc.
- 
- = Older instructions =
- 
- These instructions are for couch versions pre 0.10
- 
- 
- CouchDB does not natively install on Windows but it is possible to install it 
by hand. '''Be aware that many unit tests fail due to IO-related features that 
aren't supported by Erlang on Windows.'''
- 
- Please update this guide as needed, we aim to collect feedback and roll the 
procedure into the official build.
- 
- These instructions currently refer to paths as they'd be set up in a default 
installation of Erlang OTP 5.7.1, with the couchDB distribution installed at
- 
- {{{
- C:\Program Files\erl5.7.1\lib\apache-couchdb-0.9.0
- }}}
  
  == Dependencies ==
  
- You will need the following software installed on your system:
+ None - the installer includes erlang, openssl, ICU, spidermonkey and 
everything else you need including Microsoft Visual C++ runtimes.
  
+ == Current Versions ==
-   * [[http://www.erlang.org/download.html|Erlang/OTP]]
-   * C Compiler/Linker (such as [[http://gcc.gnu.org/|GCC]] or 
[[http://msdn.microsoft.com/en-us/visualc/default.aspx|Visual C++]])
-   * Make (such as [[http://www.gnu.org/software/make/|GNU Make]] or 
[[http://msdn.microsoft.com/en-us/library/dd9y37ha(VS.71).aspx|nmake]])
-   * [[http://www.openssl.org/|OpenSSL]]
-   * [[http://www.icu-project.org/|ICU]] (Tested with 
[[http://www.icu-project.org/download/4.0.html|binary build of 4.2 release]].)
-   * [[http://www.mozilla.org/js/spidermonkey/|SpiderMonkey]]
  
- == Install CouchDB as an Erlang Library Directory ==
+  * '''couchdb-1.1.1''' - get an unofficial installer 
[[https://github.com/downloads/dch/couchdb/setup-couchdb-1.1.1_js185_otp_R14B03+fix-win32-crypto.exe|here]]
+  * '''couchdb-1.0.2''' - get an unofficial installer 
[[https://github.com/downloads/dch/couchdb/setup-couchdb-1.0.2+COUCHDB-963_otp_R14B01+OTP-9139.exe|here]]
+  * '''couchdb-master''' - snapshot builds rolled from "trunk" or "master" in 
git terms - [[https://github.com/dch/couchdb/downloads|noteworthy snapshots]] 
and [[https://www.dropbox.com/s/jeifcxpbtpo78ak/Snapshots#view:list|bleeding 
edge]].
  
- After installing Erlang you should having something similar to:
+ Other contributed versions for Windows are available at:
+   * http://people.apache.org/~mhammond/dist/
+   * https://github.com/juranki/couchdb/downloads/
+   * http://www.couchbase.org/get/couchbase-single/current
  
+ Use Firefox to run the CouchDB tests from Futon, to verify that your 
installation is successful, by pointing your web browser to
+ [[http://127.0.0.1:5984/_utils/index.html]] and run the test suite.
- {{{
- C:\Program Files\erl5.7.1
- }}}
  
- Copy the whole CouchDB source tree to:
+ If you encounter any troubles, in {{{local.ini}}}, set the [log]
+ {{{level=debug}}} and begin investigating. Bug reports and patches are 
welcomed!
  
+ == Known Issues ==
- {{{
- C:\Program Files\erl5.7.1\lib\apache-couchdb-0.9.0
- }}}
  
- Make the following empty directories:
+ === CouchDB 1.1.1 ===
  
+  * none known
- {{{
- C:\Program Files\erl5.7.1\lib\mochiweb-0.01\ebin
- }}}
  
+ === CouchDB 1.0.2 ===
- {{{
- C:\Program Files\erl5.7.1\lib\apache-couchdb-0.9.0\ebin
- }}}
  
- == Provide ICU to Erlang ==
+ Currently there are a number of non-critical issues in 1.0.2 that you need to 
be aware of; both have work-arounds documented in the JIRA comments. These are 
both resolved in CouchDB 1.1.1 and newer.
  
- From ICU copy `icu*.dll` (and `libeay32.dll` for older versions of ICU) to:
+  * [[https://issues.apache.org/jira/browse/COUCHDB-577|COUCHDB-577]] couchdb 
@ winxp: Simple RegExp's can not be executed
+  * [[https://issues.apache.org/jira/browse/COUCHDB-963|COUCHDB-963]] while 
running CouchDB as a service, the erlang erlsrv process dies periodically 
during restarting CouchDB (POST /_restart fails) - either use the .bat version 
only, or apply the workarounds noted within the ticket comments. An upstream 
fix will be in Erlang/OTP R14B03 and a work-around will be in CouchDB 1.0.3 & 
later.
  
+ === CouchDB 1.0.1 ===
- {{{
- C:\Program Files\erl5.7.1\erts-5.7.1\bin
- }}}
  
- == Build SpiderMonkey ==
+ Note that CouchDB versions prior to 1.0.2 should not be used due to:
  
- The SpiderMonkey distribution's Windows build stuff is broken. See 
[[http://blog.endflow.net/?p=55&lang=en|this blog post]] for a working js.mak 
file. Don't bother trying to import the project file into a contemporary Visual 
Studio; just use the Visual Studio command line tools with the js.mak file 
referred to above.
+  * 1 cross-site scripting security issue 
[[http://couchdb.apache.org/security.html|CVE-2010-3854]]
+  * 2 bugs that, in certain situations, could cause data loss 
[[https://issues.apache.org/jira/browse/COUCHDB-852|COUCHDB-852]] and 
[[https://issues.apache.org/jira/browse/COUCHDB-844|COUCHDB-844]].
+  * Only on Windows, CouchDB 1.0.1 crashes on Windows when a database or index 
file reaches 4Gb in Erlang/OTP versions previous to R14B01. This is due to a 
Erlang/OTP Windows bug related with appending to files with a size equal to 4Gb 
or larger. Erlang/OTP release R14B01 no longer has this bug.
+  * A significant stability bug was resolved in Erlang/OTP R13B04 which caused 
CouchDB to hang occasionally when run as a service.
  
- CouchDB uses a custom JavaScript driver, which provides unicode and buffering 
improvements. In the !SpiderMonkey distribution, rename src/js.c to 
src/js.c.bak, and copy {{{C:\Program 
Files\erl5.6.3\lib\couchdb-0.8.1\src\couchdb\couch_js.c}}} from the CouchDB 
distribution to src/js.c in the !SpiderMonkey distribution. Before running 
nmake, edit the new js.c and change {{{#include <jsapi.h>}}} to {{{#include 
"jsapi.h"}}}.
- 
- Once you've built js.exe and js32.dll, copy them both to
- 
- {{{
- C:\Program Files\erl5.7.1\erts-5.7.1\bin
- }}}
- 
- and rename js.exe to couch_js.exe.
- 
- ''Here are the binaries built according to the blog post: 
[[http://dl.getdropbox.com/u/118385/CouchDbBinaries/couchbd_spidermonkey_1.7_win32_32bit.zip|couchbd_spidermonkey_1.7_win32_32bit.zip]]
 . Just unzip the contents to the bin directory.''
- 
- == Build couchdb/couch_erl_driver.c ==
- 
- This is a wrapper to provide ICU features to CouchDB.
- 
- ''Here is a binary (no worry! MS bleeding-edge technology proved!) built 
against ICU 4.2 in 32-bit Windows: [[attachment:couch_erl_driver.dll]]''
- 
- The simplest way to build a DLL is to create a Win32 DLL project in an IDE, 
add `couch_erl_driver.c` into the project, and change project settings to 
include the Erlang ERTS and ICU4C header paths. 
- 
- You must also include the various ICU `*.lib` files to the MSVC linker as 
inputs. MSVC doesn't know how to create a DLL with unresolved names.  In Visual 
Studio 2008 this can be accomplished by right clicking on the project, choosing 
properties, expanding the Linker node in the left panel, selecting Input, and 
adding the following to the 'Additional Dependencies' field:
-  *icudt.lib 
-  *icuin.lib 
-  *icuio.lib 
-  *icule.lib 
-  *iculx.lib 
-  *icutu.lib 
-  *icuuc.lib 
- 
- The erlang include paths for this build for example were 
- 
- {{{
- C:\otp_src_R13B\erts\emulator\sys\win32 
- C:\otp_src_R13B\erts\emulator\beam
- }}}
- 
- Make the following empty directory:
- 
- {{{
- C:\Program Files\erl5.7.1\lib\apache-couchdb-0.9.0\priv
- }}}
- 
- Copy the DLL to:
- 
- {{{
- C:\Program Files\erl5.7.1\lib\apache-couchdb-0.9.0\priv\couch_erl_driver.dll
- }}}
- 
- == Erlang Compilation ==
- 
- Create a the following file:
- 
- {{{
- C:\Program Files\erl5.7.1\lib\apache-couchdb-0.9.0\src\Emakefile
- }}}
- 
- Add the following content:
- 
- {{{
- {'./couchdb/*', [{outdir,"../ebin"}]}.
- {'./mochiweb/*', [{outdir,"../../mochiweb-0.01/ebin"}]}.
- }}}
- 
- Launch `erl` (or `werl`) and execute the following command to change working 
directory:
- 
- {{{
- cd("C:/Program Files/erl5.7.1/lib/apache-couchdb-0.9.0/src").
- }}}
- 
- Execute this command to compile CouchDB:
- 
- {{{
- make:all().
- }}}
- 
- == Configuring ==
- 
- Copy the following file:
- 
- {{{
- C:\Program 
Files\erl5.7.1\lib\apache-couchdb-0.9.0\etc\couchdb\default.ini.tpl.in
- }}}
- 
- To this location:
- 
- {{{
- C:/Program Files/erl5.7.1/bin/default.ini
- }}}
- 
- or to this location:
- 
- {{{
- C:/Program Files/erl5.7.1/lib/couchdb-0.9.0/default.ini
- }}}
- 
- Edit the file to look something like this:
- 
- {{{
- [couchdb]
- database_dir = c:/data/couch
- view_index_dir = c:/data/couch
- util_driver_dir = C:/Program Files/erl5.7.1/lib/apache-couchdb-0.9.0/priv
- ConsoleStartupMsg=Apache CouchDB is starting.
- max_document_size = 4294967296 ; 4 GB
- max_attachment_chunk_size = 4294967296 ; 4GB
- os_process_timeout = 5000 ; 5 seconds. for view and external servers.
- max_dbs_open = 100
- 
- [httpd]
- port = 5984
- bind_address = 127.0.0.1
- authentication_handler = {couch_httpd, default_authentication_handler}
- WWW-Authenticate = Basic realm="administrator"
- 
- [log]
- file = c:/logs/couch.log
- level = info
- 
- [daemons]
- view_manager={couch_view, start_link, []}
- external_manager={couch_external_manager, start_link, []}
- db_update_notifier={couch_db_update_notifier_sup, start_link, []}
- query_servers={couch_query_servers, start_link, []}
- httpd={couch_httpd, start_link, []}
- stats_aggregator={couch_stats_aggregator, start, []}
- stats_collector={couch_stats_collector, start, []}
- 
- [httpd_global_handlers]
- / = {couch_httpd_misc_handlers, handle_welcome_req, <<"Welcome">>}
- favicon.ico = {couch_httpd_misc_handlers, handle_favicon_req, "C:/Program 
Files/erl5.7.1/lib/apache-couchdb-0.9.0/share/www"}
- 
- _utils = {couch_httpd_misc_handlers, handle_utils_dir_req, "C:/Program 
Files/erl5.7.1/lib/apache-couchdb-0.9.0/share/www"}
- _all_dbs = {couch_httpd_misc_handlers, handle_all_dbs_req}
- _active_tasks = {couch_httpd_misc_handlers, handle_task_status_req}
- _config = {couch_httpd_misc_handlers, handle_config_req}
- _replicate = {couch_httpd_misc_handlers, handle_replicate_req}
- _uuids = {couch_httpd_misc_handlers, handle_uuids_req}
- _restart = {couch_httpd_misc_handlers, handle_restart_req}
- _stats = {couch_httpd_stats_handlers, handle_stats_req}
- 
- [httpd_db_handlers]
- _design = {couch_httpd_db, handle_design_req}
- _temp_view = {couch_httpd_view, handle_temp_view_req}
- 
- [httpd_design_handlers]
- _view = {couch_httpd_view, handle_view_req}
- _show = {couch_httpd_show, handle_doc_show_req}
- _list = {couch_httpd_show, handle_view_list_req}
- 
- }}}
- 
- Make sure that the `database_dir` exists and that the `LogFile` can be 
created.
- 
- == Running ==
- 
- Launch `erl` (or `werl`) and execute the following command:
- 
- {{{
- couch_server:start().
- }}}
- 
- 
- If you encounter any trouble, set the log 'level' to 'debug' in default.ini
- 
- To check that everything has worked point your web browser to
- [[http://localhost:5984/_utils/index.html]] and run the test suite.
- 

Reply via email to