Installation
============

Django-orchestra ships with a set of management commands for automating some of the installation steps.

These commands are meant to be run within a **clean** Debian-like distribution, you should be specially careful while following this guide on a customized system.

Django-orchestra can be installed on any Linux system, however it is **strongly recommended** to chose the reference platform for your deployment (Debian 8.0 jessie and Python 3.4).


1. Create a system user for running Orchestra
    ```bash
    adduser orchestra
    # not required but it will be very handy
    sudo adduser orchestra sudo
    su - orchestra
    ```

2. Install django-orchestra's source code
    ```bash
    sudo apt-get install python3-pip
    sudo pip3 install django-orchestra==dev \
        --allow-external django-orchestra \
        --allow-unverified django-orchestra
    ```

3. Install requirements
    ```bash
    sudo orchestra-admin install_requirements
    ```

4. Create a new project
    ```bash
    cd ~orchestra
    orchestra-admin startproject <project_name> # e.g. panel
    cd <project_name>
    ```

5. Create and configure a Postgres database
    ```bash
    sudo apt-get install python3-psycopg2 postgresql
    sudo python3 manage.py setuppostgres --db_password <password>
    python3 manage.py migrate
    ```

6. Configure periodic execution of tasks (choose one)
    1. Use cron (recommended)
        ```bash
        python3 manage.py setupcronbeat
        python3 manage.py syncperiodictasks
        ```

    2. Use celeryd
        ```bash
        sudo apt-get install rabbitmq-server
        sudo python3 manage.py setupcelery --username orchestra
        ```

7. (Optional) Configure logging
    ```bash
    sudo python3 manage.py setuplog
    ```

8. Configure the web server:
    ```bash
    python3 manage.py collectstatic --noinput
    sudo apt-get install nginx-full uwsgi uwsgi-plugin-python3
    sudo python3 manage.py setupnginx --user orchestra
    ```

6. See the Django deployment checklist
    ```bash
    python3 manage.py check --deploy
    ```

9. Start all services:
    ```bash
    sudo python manage.py startservices
    ```


Upgrade
=======
To upgrade your Orchestra installation to the last release you can use `upgradeorchestra` management command. Before rolling the upgrade it is strongly recommended to check the [release notes](http://django-orchestra.readthedocs.org/en/latest/).
```bash
sudo python3 manage.py upgradeorchestra
```

Current in *development* version (master branch) can be installed by
```bash
sudo python3 manage.py upgradeorchestra dev
```

Additionally the following command can be used in order to determine the currently installed version:
```bash
python3 manage.py orchestraversion
```


Extra
=====

1. Generate a passwordless ssh key for orchestra user
ssh-keygen

2. Copy this key to all servers orchestra will manage, including itself is neccessary
ssh-copy-id root@<server-address>

