Quick start

Installation

This document describes the process of setting up the environment. At the end of it there is an attachement with a quick list of commands that you need to run on some systems to get started even faster.

Pre-requirements

Altough most requirements will be installed for you automatically using PIP, there are some pre-requirements:

Enabling HStore

To enable HStore in Postgresql type:

$ psql -d template1 -c 'create extension hstore;'

From now on all created databases would have HStore installed. You can also run this command only for one database, after creating it.

Setting up virtual environment

It is recommended to use virtual environments to decouple Python packages. For example, using venv (included in Python >= 3.3):

$ pyvenv /path/to/environment        #  create virtual environment
$ cd /path/to/environment            #  cd to its directory
$ source bin/activate                #  activate virtual environment

From now you can use only packages installed in this virtual environment. additionally, copies of python and pip binaries were created.

Take a look at virtualenvwrapper to make those commands even simpler.

Downloading project

Clone it using git:

$ git clone https://bitbucket.org/zeroos/drigan.git

Installing requirements

All requirements are in requirements.txt. You can install it with (don’t forget about activating virtual environment!):

$ pip install -r requirements.txt

Hooray! Everything is installed, time to configure it and run.

Setup

Like in every Django application, you have to provide a settings.py file. There is a template for it in drigan/settings_example.py, just copy it and edit with your favourite editor:

$ cp drigan/settings_example.py drigan/settings.py
$ vim drigan/settings.py

Creating database

Now it’s time to create a database. If you are doing it on your own just for development purposes you can for example use the following command. You have to issue it as a user with permissions to create PostgreSQL databases on your system (usually postgres).

postgres $ createdb drigan     # or other database name

If you ever need to reset your database to initial state you can ofcourse use Django management command (reset) or just recreate the database (probably more reliable):

postgres $ dropdb drigan     # drop the database
postgres $ createdb drigan     # and create it again

Before first stable version is released we are not going to use migrations, so you will have to reset the database after each model change.

settings.py

Every setting in the copied settings_example.py file is documented, so you can just go through them and adjust them.

If you are just trying to run it in developing mode, you don’t have to change much – just adjust your database credentials if needed and everything should work.

However, if you’d like to set up a production environment, you should look over each setting. And don’t forget to set DEBUG = False!

Database

$ python ./manage.py syncdb

Collecting static files

Note

You don’t have to do it when DEBUG = False, i.e. in a development environmennt. In this case static files are served automatically by Django.

Before doing it make sure STATIC_ROOT is set correctly in settings.py.

$ python manage.py collectstatic

That’s it!

And that’s everything. If you’re just running development instance you can run the server with

$ python manage.py runserver

and start coding!

If you are setting up a production environment you can use any technique that’s used to deploy Django.

Testing

Django is recreating test database prior to each test run. This has unfortunate side-effect that hstore extension is missing. Until someone fixes this error you’ll need to create hstore extension in template1 database. If you do this all future databases created in this system will contain this extension.

psql template1 -c 'create extension hstore;'

List of commands needed to configure environment on some systems

Debian/Ubuntu

1. sudo apt-get install python3.4-dev
2. sudo apt-get install python-pip
3. sudo pip install -U pip
4. sudo apt-get install postgresql-9.3
5. sudo apt-get install postgresql-contrib-9.3
6. sudo apt-get install postgresql-server-dev-9.3
7. sudo su - postgres
8. psql -d template1 -c 'create extension hstore;'
<ctrl+D> to logout from postgres
9. sudo apt-get install mercurial
10. sudo apt-get install git
11. git config --global user.name "FIRST_NAME LAST_NAME"
12. git config --global user.email "MY_NAME@example.com"
13. sudo apt-get install python-virtualenv
14. mkdir ~/Drigan
15. cd ~/Drigan
16. virtualenv --python=/usr/bin/python3.4 environment
17. cd ~/Drigan/environment/
18. source bin/activate
You can skip 19 and 20 point and optionally clone repo over HTTPS:
git clone https://zeroos@bitbucket.org/zeroos/drigan.git
19. Set up SSH Key. Tutorial here: https://confluence.atlassian.com/pages/viewpage.action?pageId=270827678
20. git clone git@bitbucket.org:zeroos/drigan.git
21. cd drigan
22. cp drigan/settings_example.py drigan/settings.py
23. vim drigan/settings.py
24. pip install -r requirements.txt
25. sudo su - postgres
26. createdb drigan
27. sudo vim /etc/postgresql/9.3/main/pg_hba.conf
Change
        local   all             postgres                                peer
to
        local   all             postgres                                trust
28. sudo service postgresql restart
29. python ./manage.py syncdb
30. python manage.py collectstatic
31. python manage.py runserver