Skip to main content

Installing CouchDB for Mac OS X. Nuances.

Our project will have a new architecture changes in future. We've chosen from different tech. But now we 're experimenting with CouchDB a bit. It may become a part of our new architectural Changes. I'll try to cover most of newbies observations with CouchDB for Python(Django) programmer, planning to use it in your project.

First article will be, unsurprisingly, installing CouchDB under Mac OS X. It, sure, has some inches that you need to scratch. So let's roll...

CouchDB is not a simple SQL database like you used to install before. It has own server to accept connections. And, in fact, you can work with database from your browser GUI (without other server proxy, like Django or ...). Anyway it will not be our target. Building JS UI is quite easier with CouchDB and changes your logic dramatically. To build UI with Python we need some proxy parts. Anyway, again, CouchDB is a standalone server, that runs on your server's port and talks to your APP/Browser/whatever... through JSON API. It's quite a bad thing, because it's a bit slow, but a good thing, because it's extremely easy to implement. Most programming languages have adaptors to JSON.  CouchDB is quite a new tech. And it is highly developed and "pushed through" tech for now...

Ok enough preface... Actual install is described in official DOCS HERE. I'm using "mac ports" for my project already. So it's my choice of install method by all means. I'll cover docs here in brief to be consistent:

1. Install it through mac ports.

$ sudo port install couchdb

Will start huge and massive install of required ports for this DB.

2. Good idea would be to update Mac ports. If you have some ports installed already, like I do:

$ sudo port upgrade couchdb

Will upgrade only ports required by "couchdb" port.
It's also a good idea to selfupdate ports if you already have them installed:

$ sudo port selfupdate

This must be sufficient for all of our needs.

At this point you must be able to run CouchDB from command line running:

$ couchdb

command in Terminal. If it runs with error, no worries. Read on. There is a known issue!

3.  Bug occurs in MacPorts itself with "couchdb" package. It does not create some paths in required dir. You need to manually create those paths and give CouchDB permissions to write there. Mac Ports Track has the solution. Or you can manually (better IMHO) make sure all your permissions and directories exist.
You need to make sure those directories exist, and create them if they don't:

/opt/local/var/lib/couchdb/
/opt/local/var/log/couchdb/
/opt/local/etc/couchdb/

and have permission to work with CouchDB:

$ sudo chown -R couchdb:couchdb /opt/local/var/lib/couchdb/
$ sudo chown -R couchdb:couchdb /opt/local/var/log/couchdb/
$ sudo chown -R couchdb:couchdb /opt/local/etc/couchdb/

(Those paths are ok for a standart "mac ports" install.. If your directories differ... than change those paths accordingly)
After those actions, running couchdb from console should led to normal startup sequence output:

$ couchdb
Apache CouchDB 1.1.1-incubating (LogLevel=info)
Apache CouchDB is starting.
Apache CouchDB has started. Time to relax.

This will signal that your CouchDB install is almost OK and you may check that it is running:

http://127.0.0.1:5984/

In your browser. It must Show output JSON. Something like:

{"couchdb":"Welcome","version":"1.1.1"}

You may also examine it's web admin UI, typing in browser:

http://127.0.0.1:5984/_utils/index.html

Should show handy Admin UI. You may examine/edit DB by hand there... (Something similar to PHP MyAdmin or whatever you used to use on SQL DB's)

4. Add autorun command (optionally). It's good to run every time you need it for experiments, etc... But if you plan to Debug test apps on that platform it's good idea to make it start with system every toime it runs. To make that you need to type this command into console:

$ sudo launchctl load -w /opt/local/Library/LaunchDaemons/org.apache.couchdb.plist


THE END.

Comments and suggestions are welcome!
In future I plan to make some articles on actual befriending CouchDB with Python. Stay tuned and thanks for reading that far.

Comments

Popular posts from this blog

Pretty git Log

SO you dislike git log output in console like me and do not use it... Because it looks like so: How about this one? It's quite easy... Just type: git log - - graph - - pretty = format : '%Cred%h%Creset -%C ( yellow ) %d%Creset %s %Cgreen ( %cr) %C ( bold blue ) <%an>%Creset' - - abbrev - commit - - It may be hard to enter such an easy command every time. Let's make an alias instead... Copypaste this to your terminal: git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --" And use simple command to see this pretty log instead: git lg Now in case you want to see lines that changed use: git lg - p In order for this command to work remove  the -- from the end of the alias. May the code be with you! NOTE: this article is a rewritten copy of  http://coderwall.com/p/euwpig?i=3&p=1&t=git   and have b

Django: Resetting Passwords (with internal tools)

I have had a task recently. It was about adding a forms/mechanism for resetting a password in our Django based project. We have had our own registration system ongoing... It's a corporate sector project. So you can not go and register yourself. Admins (probably via LDAP sync) will register your email/login in system. So you have to go there and only set yourself a password. For security reasons you can not register. One word. First I've tried to find standart decision. From reviewed by me were: django-registration and django password-reset . These are nice tools to install and give it a go. But I've needed a more complex decision. And the idea was that own bicycle is always better. So I've thought of django admin and that it has all the things you need to do this yourself in no time. (Actually it's django.contrib.auth part of django, but used out of the box in Admin UI) You can find views you need for this in there. they are: password_reset password_reset_

Time Capsule for $25

The real article name might be something like:  Configuring Raspbery Pi to serve like a Time Capsule with Netatalk 3.0 for Mountain Lion.  But it's too long ;) Here I will describe the process of using Raspberry Pi like a Time Machine in my network. To be able to backup your MAC's remotely (Like it would be NAS of some kind). It assumes you have a Raspberry Pi and have installed a Raspbian there and have a ssh connection, or somehow having access to it's console. Refer to my previous article for details . Now that we have a Pi that is ready for action let's animate it. So to make it suit you as a Time Capsule (NAS) for your MAC's you need to do those basic steps: - connect and configure USB hard drive(s) - install support of HFS+ filesystem to be able to use MAC's native filesystem - make mount (auto-mount on boot) of your hard drive - install Avahi and Netatalk demons - configure Netatalk daemon to make it all serve as a Time Machine - configure