Search code examples
couchdbcloud9-idecloud9

Run CouchDB in the background on Cloud9


I want to create a cloud9 automated setup script for an application, which uses couchdb for database. Part of the script, is the setup of the application database, which needs couchdb running, in order to function properly.

The problem is that the only available solution about couchdb on cloud9 helps you instantiate couchdb as a foreground procedure. So if you want to test the correctness of the instantiation, or execute any other command you need to open a second terminal tab as documented in the above solution, but this is not functional in my case.

So how do I make couchdb run in the background?


Solution

  • Ok CouchDB can be executed in the background on Cloud9, if you pass the parameter -b to the executable, or by reconfiguring the executable to run in the background by default. But if you try to run couchdb like this, you will run into unexisting log files and permission errors when couchdb tries to create them.

    So following the bellow steps will get couchdb up and running smoothly.

    1. Create log files (and give proper permissions to couchdb user)

    sudo su couchdb -c 'touch /var/log/couchdb/couchdb.stdout'
    sudo su couchdb -c 'touch /var/log/couchdb/couchdb.stderr'
    sudo chown couchdb: /var/log/couchdb
    sudo chmod u+w /var/log/couchdb
    

    2. Create CouchDB pid storage dir

    sudo mkdir -p /var/run/couchdb
    sudo chown couchdb:couchdb /var/run/couchdb
    

    3.Reconfigure Executable

    sudo nano /usr/bin/couchdb
    

    Change STDERR_FILE:couchdb.stderr with STDERR_FILE:/var/log/couchdb/couchdb.stderr

    And STDERR_FILE:couchdb.stdout with STDERR_FILE:/var/log/couchdb/couchdb.stdout

    4.Run in background

    sudo su couchdb -c '/usr/bin/couchdb -b'
    

    5.Test

    curl http://127.0.0.1:5984
    

    +Bonus1

    If you want to run CouchDB on the background, without the -b parameter, like this: sudo su couchdb -c /usr/bin/couchdb then in step 3, when reconfiguring the couchdb executable, you should also change BACKGROUND=false with BACKGROUND=true

    +Bonus2

    bash script version: Create a .sh file, add the following commands and run it on cloud9 workspace to properly set up couchdb for background execution. After executing the script start CouchDB with sudo su couchdb -c /usr/bin/couchdb.

    sudo su couchdb -c 'touch /var/log/couchdb/couchdb.stdout'
    sudo su couchdb -c 'touch /var/log/couchdb/couchdb.stderr'
    sudo chown couchdb: /var/log/couchdb
    sudo chmod u+w /var/log/couchdb
    sudo mkdir -p /var/run/couchdb
    sudo chown couchdb:couchdb /var/run/couchdb
    sudo sed -i 's_couchdb.stderr_/var/log/couchdb/couchdb.stderr_g' /usr/bin/couchdb
    sudo sed -i 's_couchdb.stdout_/var/log/couchdb/couchdb.stdout_g' /usr/bin/couchdb
    sudo sed -i 's_BACKGROUND=false_BACKGROUND=true_g' /usr/bin/couchdb