Skip to content

Instantly share code, notes, and snippets.

@natevw
Created June 17, 2017 00:06
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save natevw/538f70e058e3245c2c5baf03bd6872e9 to your computer and use it in GitHub Desktop.
Save natevw/538f70e058e3245c2c5baf03bd6872e9 to your computer and use it in GitHub Desktop.
Get CouchDB 2.0.0 working on Amazon Linux
## 2017 June 16 — build CouchDB
# via https://cwiki.apache.org/confluence/display/COUCHDB/Amazon+Linux
# and http://asaf.github.io/blog/2013/07/08/installing-couch-db-on-amazon-ami/
# and https://forums.aws.amazon.com/thread.jspa?threadID=185101 <------ mostly this, without yum java etc…
# also: http://andyfelong.com/2016/12/couchdb-2-0-on-raspberry-pi/
sudo yum --enablerepo=epel update
sudo yum groupinstall "Development Tools"
# various suggestions from tutorials, see below for what seemed to actually be needed (when building all of Erlang, MozJS, CouchDB from source)
#sudo yum --enablerepo=epel install perl-Test-Harness erlang-erts erlang-os_mon erlang-eunit libicu-devel autoconf-archive curl-devel erlang-etap erlang-asn1 erlang-xmerl js-devel
#sudo yum --enablerepo=epel install perl-Test-Harness erlang-erts erlang-os_mon erlang-eunit libicu-devel autoconf-archive curl-devel erlang-etap
#sudo yum --enablerepo=epel install libicu-devel curl-devel ncurses-devel libtool libxslt fop java-1.6.0-openjdk java-1.6.0-openjdk-devel unixODBC unixODBC-devel openssl-devel
curl -O https://ftp.mozilla.org/pub/js/js185-1.0.0.tar.gz
tar -xvf js185-1.0.0.tar.gz
cd js-1.8.5/js/src/
./configure
make
sudo make install
sudo yum install libicu-devel ncurses-devel openssl-devel
mkdir couch-compile && cd couch-compile
curl -O http://erlang.org/download/otp_src_19.3.tar.gz
tar -xvf otp_src_19.3.tar.gz
cd otp_src_19.3
./configure
make # warns of skipping ODBC, Java Interface, docs via fakefop
sudo make install
curl -O https://apache.cs.utah.edu/couchdb/source/2.0.0/apache-couchdb-2.0.0.tar.gz
md5sum apache-couchdb-2.0.0.tar.gz # 402fc02df28a5297a56cedebbae42524
tar -xvf apache-couchdb-2.0.0.tar.gz
cd apache-couchdb-2.0.0
# avoid "fatal error: jsapi.h: No such file or directory" by pointing build to default js185 prefix of /usr/local
# somewhat via https://github.com/apache/couchdb/issues/455#issuecomment-287523718 and https://stackoverflow.com/a/41273863/179583, though different approach taken
vi src/couch/rebar.config.script
#{"linux", CouchJSPath, CouchJSSrc, [{env, [{"CFLAGS", JS_CFLAGS ++ " -DXP_UNIX -I/usr/include/js"}, {"LDFLAGS", JS_LDFLAGS ++ " -lm"}]}]}
{"linux", CouchJSPath, CouchJSSrc, [{env, [{"CFLAGS", JS_CFLAGS ++ " -DXP_UNIX -I/usr/local/include/js"}, {"LDFLAGS", JS_LDFLAGS ++ " -L/usr/local/lib -lm"}]}]}
./configure
make release
# for couchjs to run, need to also:
# OPTION A
vi ~/.bash_profile
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"
export LD_LIBRARY_PATH
# OPTION B
sudo ln -s /usr/local/lib/libmozjs185.so.1.0 /usr/lib/
sudo ldconfig
# see http://docs.couchdb.org/en/2.0.0/install/index.html#single-node-setup via https://groups.google.com/forum/#!msg/couchdb-user-archive/c1crP48Eq7w/PCNi0NolDwAJ (database_does_not_exist,[{mem3_shards)
# from laptop, configure single node on 127.0.0.1
ssh ecc3 -L 5984:localhost:5984 -N
open http://127.0.0.1:5984/_utils/#setup
sudo adduser --system --create-home couchdb
sudo mv couch-compile/* ~couchdb/
sudo chown couchdb:couchdb -R ~couchdb
# via https://www.snip2code.com/Snippet/84394/CouchDB-upstart-script
# and https://stackoverflow.com/questions/11980900/how-to-get-custom-couchdb-to-run-as-upstart-job
# and https://gist.github.com/fredrick/1398746/b2eef8950f2c49c3c9e135d19538762c203ce691
# and https://gist.github.com/kowsik/1187638
sudo vi /etc/init/couchdb.conf
#start on (local-filesystems and net-device-up)
start on runlevel [345]
stop on runlevel [!345]
respawn
#setuid couchdb # bah, Amazon Linux still using upstart version 0.6.5!!!!
#exec /home/ec2-user/couch-compile/apache-couchdb-2.0.0/rel/couchdb/bin/couchdb
exec sudo -u couchdb /home/couchdb/apache-couchdb-2.0.0/rel/couchdb/bin/couchdb
sudo initctl reload-configuration
sudo initctl start couchdb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment