Author: Grupa Allegro Sp. z o.o. and Contributors




Selena requires Python 2.7 which is included in the latest Ubuntu Server 12.04 LTS systems::

  $ sudo apt-get install python-dev python-virtualenv

Message queue

Selena communicates with a central queue with `Redis <>`_ as the broker. Install redis::

  $ sudo apt-get install redis-server

Since lost tasks can always be resent, the durability guarantees that Redis
provides by default are not necessary. You can significantly speed up the queue
by commenting out the ``save`` lines from ``/etc/redis/redis.conf``.

We can check the status of the Redis server::

  $ redis-cli -h localhost -p 6379 -n 0 info

Virtual Environment

Let's create a virtual environment for Python in the user's home::

  $ virtualenv . --distribute --no-site-packages

System User

Unprivileged and not owned by a person::

  $ sudo adduser --home /home/selena selena
  $ sudo su - selena

In any shell the user can *activate* the virtual environment. As a result of
that, the default Python executable and helper scripts will point to those
within the virtualenv directory structure::

  $ which python
  $ . bin/activate
  (selena)$ which python


Selena uses and supports MySQL. To install MySQL invoke::

  $ sudo apt-get install mysql-server libmysqlclient-dev libmysqld-dev

You now have to create a database and a user for Selena system. You can find many tutorials for that on the Internet.


Selena requires some cache system like *memcached*. Install::

  $ sudo apt-get install memcached

Installing from pip

Simply invoke::

  (selena)$ pip install selena

Installing from sources

Alternatively, to live on the bleeding edge, you can clone the selena git
repository to ``project`` and install it manually::

  (selena)$ git clone git:// project
  (selena)$ cd project
  (selena)$ pip install -e .

Selena Agent

To function properly, Selena needs `Selena-agent <>`_ package installed and configured.


Create file /INSTALL_DIR/selena/ and fill in the appropriate

Fill MySQL connection data::

    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your database name',
        'USER': 'your database username',
        'PASSWORD': 'your database password',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': 'SET storage_engine=INNODB,character_set_connection=utf8,collation_connection=utf8_unicode_ci'

Generate new secret keys::

  SECRET_KEY = 'very_unique_string'
  AES_SECRET_KEY = b'sixteen byte key'

Set the number of minutes that will be displayed by the service errors, example 30::


Define RQ queues. The `default` queue is required. You have to also define one queue for main selena agent, for example `agent_1`::

      'default': {
          'HOST': '',  # Redis host
          'PORT': 6379,  # Redis port
          'DB': None,
          'PASSWORD': None,
      'agent_1': {
          'HOST': '',
          'PORT': 6379,
          'DB': None,
          'PASSWORD': None,

You can define additional queues: `planner`, `archiving`, `dispacher`, `monitors`, `stats`. They are used as follows:

    *planner* - enable or disable planned technical breaks

    *archiving* - create partitions, archive data

    *dispacher* - run monitoring tasks for services

    *monitors* - collect results from agents

    *stats* - calculate statistics

You also have to configure cache. Sample cache configuration (for default `memcached` configs)::

    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
            'LOCATION': '',