CouchDB on AWS 最速インストール

Facebook にシェア
このエントリーをはてなブックマークに追加
[`livedoor` not found]
Delicious にシェア

CouchDBをインストールをする際に何度かハマってしまったので、AWS上で動かすまでの最速インストール手順を残します。
以下の手順を実行する前に、EC2インスタンスをLaunchしておきます。なお、今回はAmazon Imageを対象としています。

ssh -i [your pem-file] ec2-user@[your ec2-instance]
sudo yum -y update
sudo yum -y install git expect
mkdir git
git clone https://gist.github.com/1171217.git
cd git

vi couchdb-ec2-install.sh
##  you need to change 2 lines for version of couchdb and erlang.
##  For checking CouchDB ver: https://github.com/apache/couchdb/tags
##  For checking Erlang ver: http://www.erlang.org/doc/apps/erts/notes.html

sudo sh couchdb-ec2-install.sh
sudo couchdb start -b
Apache CouchDB 1.2.1 (LogLevel=error) is starting.
Apache CouchDB has started. Time to relax.

Gitからcloneしたら、インストール用のshellスクリプト内のCouchDB, Erlangのバージョンだけ最新に変更して実行します。
(この実行は少し時間がかかる)
あとFutonにアクセスする時に使うAdminパスワードはスクリプト実行結果に出力されますが、
変更する場合は /usr/local/etc/couchdb/local.ini を変更します。事前にshellを変更しておいても良いです。
最後にFutonにアクセスして起動を確認して完了です。

編集後のcouchdb-ec2-install.sh はこのような感じです。(今回はCouchDB:1.2.1, Erlang: 5.9.3.1とした)

#!/bin/bash

#
# This script installs and configures couchdb on a fresh Amazon Linux AMI instance.
#
# Must be run with root privileges
# Tested with Amazon Linux AMI release 2011.02.1.1 (ami-8c1fece5)
#

export BUILD_DIR="$PWD"

# install gem dependencies
yum install gcc gcc-c++ libtool curl-devel ruby-rdoc zlib-devel openssl-devel make automake rubygems perl git-core
gem install rake --no-ri --no-rdoc

if [ ! -e "/usr/local/bin/couchdb" ]
then

  if [ ! -d "$BUILD_DIR/build-couchdb" ]
  then
    # get build-couch code
    git clone git://github.com/iriscouch/build-couchdb
    cd $BUILD_DIR/build-couchdb/
    git submodule init
    git submodule update
  fi

  # run build-couch
  cd $BUILD_DIR/build-couchdb/
  rake git="git://git.apache.org/couchdb.git tags/1.2.1" install=/usr/local
fi

# install our .ini
cat << 'EOF' > /usr/local/etc/couchdb/local.ini
[couchdb]
delayed_commits = false

[httpd]
port = 80
bind_address = 0.0.0.0
socket_options = [{recbuf, 262144}, {sndbuf, 262144}, {nodelay, true}]
WWW-Authenticate = Basic realm="administrator"
;WWW-Authenticate = bummer

[couch_httpd_auth]
require_valid_user = true

[log]
level = error

[admins]
EOF

# generate & set the initial password
export ADMIN_PASSWORD=`mkpasswd`
echo "admin = ${ADMIN_PASSWORD}" >> /usr/local/etc/couchdb/local.ini

# allow beam to bind to port 80 (not necessary if you make httpd.port >=1024)
setcap 'cap_net_bind_service=+ep' /usr/local/lib/erlang/erts-5.9.3.1/bin/beam

if [ ! -e "/etc/logrotate.d/couchdb" ]
then
  # add couch.log to logrotate
  ln -s /usr/local/etc/logrotate.d/couchdb /etc/logrotate.d/
  # change to daily rotation
  sed -e s/weekly/daily/g -i /usr/local/etc/logrotate.d/couchdb
  #logrotate -v -f /etc/logrotate.d/couchdb 
fi

# add couchdb user
adduser --system --home /usr/local/var/lib/couchdb -M --shell /bin/bash --comment "CouchDB" couchdb

# change file ownership
chown -R couchdb:couchdb /usr/local/etc/couchdb /usr/local/var/lib/couchdb /usr/local/var/log/couchdb /usr/local/var/run/couchdb

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

# done!
echo
echo
echo "Installation complete!"
echo "Couchdb admin password was set to: ${ADMIN_PASSWORD}"
echo
echo "Couchdb is ready to start. Run:"
echo "    sudo service couchdb start"