| 1 |
sed "s/\"80\"/\"5984\"/;s/WWW (HTTP)/CouchDB/;/.*/d" /usr/lib/firewalld/services/http.xml > /etc/firewalld/services/couchdb.xml |
| 2 |
systemctl start firewalld |
| 3 |
systemctl enable firewalld |
| 4 |
firewall-cmd --permanent --zone=public --add-interface=eth0 |
| 5 |
firewall-cmd --reload |
| 6 |
firewall-cmd --permanent --add-service=couchdb --zone=public |
| 7 |
firewall-cmd --reload |
| 8 |
|
| 9 |
yum install epel-release -y |
| 10 |
yum install autoconf autoconf-archive automake curl-devel erlang-asn1 erlang-erts erlang-eunit erlang-os_mon erlang-xmerl help2man js-devel libicu-devel libtool perl-Test-Harness gcc-c++ -y |
| 11 |
|
| 12 |
dd if=/dev/zero of=/root/temp.img bs=1M count=100 |
| 13 |
mkfs.xfs /root/temp.img |
| 14 |
mkdir /mnt/tmp |
| 15 |
mount -o loop /root/temp.img /mnt/tmp |
| 16 |
|
| 17 |
curl -sSL http://www-us.apache.org/dist/couchdb/source/1.6.1/apache-couchdb-1.6.1.tar.gz -o /mnt/tmp/apache-couchdb-1.6.1.tar.gz |
| 18 |
|
| 19 |
cd /mnt/tmp |
| 20 |
tar -zxvf apache-couchdb-1.6.1.tar.gz |
| 21 |
|
| 22 |
cd apache-couchdb-1.6.1 |
| 23 |
|
| 24 |
./configure --with-erlang=/usr/lib64/erlang/usr/include |
| 25 |
|
| 26 |
make && make install |
| 27 |
|
| 28 |
# one file is quicker than rm -rf entire branch of nonsense |
| 29 |
cd |
| 30 |
umount /mnt/tmp |
| 31 |
rm -f /root/temp.img |
| 32 |
|
| 33 |
useradd --system --home /usr/local/var/lib/couchdb --no-create-home --shell /bin/bash -c "CouchDB Administrator" couchdb |
| 34 |
|
| 35 |
chown -R couchdb:couchdb /usr/local/etc/couchdb |
| 36 |
chown -R couchdb:couchdb /usr/local/var/lib/couchdb |
| 37 |
chown -R couchdb:couchdb /usr/local/var/log/couchdb |
| 38 |
chown -R couchdb:couchdb /usr/local/var/run/couchdb |
| 39 |
|
| 40 |
chmod 0770 /usr/local/etc/couchdb |
| 41 |
chmod 0770 /usr/local/var/lib/couchdb |
| 42 |
chmod 0770 /usr/local/var/log/couchdb |
| 43 |
chmod 0770 /usr/local/var/run/couchdb |
| 44 |
|
| 45 |
cat > /usr/lib/systemd/system/couchdb.service << EOF |
| 46 |
[Unit] |
| 47 |
Description=CouchDB |
| 48 |
Documentation=http://docs.couchdb.org/en/1.6.1/contents.html |
| 49 |
Wants=network-online.target |
| 50 |
After=network-online.target |
| 51 |
|
| 52 |
[Service] |
| 53 |
User=couchdb |
| 54 |
Group=couchdb |
| 55 |
Type=simple |
| 56 |
StandardOutput=journal |
| 57 |
StandardError=journal |
| 58 |
Restart=always |
| 59 |
StartLimitInterval=10 |
| 60 |
StartLimitBurst=5 |
| 61 |
PIDFile=/usr/local/var/run/couchdb/couchdb.pid |
| 62 |
ExecStart=/usr/local/bin/couchdb -p /usr/local/var/run/couchdb/couchdb.pid |
| 63 |
|
| 64 |
[Install] |
| 65 |
WantedBy=multi-user.target |
| 66 |
EOF |
| 67 |
|
| 68 |
sed -i.original "s/bind_address =.*/bind_address = $PUBLIC_IP/" /usr/local/etc/couchdb/default.ini |
| 69 |
|
| 70 |
systemctl start couchdb |
| 71 |
systemctl enable couchdb |
| 72 |
|
| 73 |
export PUBLIC_IP=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/') |
| 74 |
curl http://$PUBLIC_IP:5984 |
| 75 |
|