You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 43 Next »

Work in progress

This page is a work in progress and the accuracy of the information can not be guaranteed (smile)

Description of how to install the software needed for Lobber.

Page index
  1. Common
  2. Web application and tracker server
  3. Storage node
  4. Database server

Common

All hosts are running Ubuntu (10.04) with the following extra packages and customizations.

apt-get install git-core git-doc ssl-cert git-core python-virtualenv
apt-get install postfix
# local only configuration!

Web application and tracker server

Install the following packages:

apt-get install apache2 libapache2-mod-wsgi libapache2-mod-shib2 libpq-dev python-dev python-twisted
pip install orbited

Orbited can not be installed in the lobber python environment because it requires python-twisted.

pip install orbited

You might need these:

python-egenix-mxdatetime python-egenix-mxtools python-pycurl python-openssl 

Set up a virtual python environment (virtualenv) and activate it.

virtualenv --no-site-packages /path/to/lobber_env
source /path/to/lobber_env/bin/activate

Install the needed python applications. (Yes, orbited again...needed as import in django)

pip install django django-tagging django-form-utils stomp.py psycopg2 orbited

You might need these:

pip install uuid django-evolution django-extensions werkzeug

Get Lobber from git.nordu.net and check out the latest stable version.

git clone git@git.nordu.net:lobber.git
cd lobber
git checkout bud-light

Create the a log, torrent and a dropbox directory in the lobber root directory. Make the writable by the Apache user.

cd /path/to/lobber/
mkdir logs
mkdir torrents
mkdir dropbox

Symlink the environment directory and Django admin media directory in to the src directory.

cd /path/to/lobber/src
ln -s /path/to/lobber_env env
ln -s env/lib/python2.6/site-packages/django/contrib/admin/media admin-media

Edit paths and other options in settings.py.

settings.py
BASE_DIR = '/path/to/lobber'

APP_ADDR = 'host_ip or FQDN'
TRACKER_ADDR = 'host_ip or FQDN'

ADMINS = (
    ('Your name', 'your@email.net'),

DATABASE_ENGINE = 'postgresql_psycopg2'
DATABASE_NAME = 'lobber'
DATABASE_USER = 'lobber'
DATABASE_PASSWORD = 'secret_password'
DATABASE_HOST = 'database host'
DATABASE_PORT = 'database port'

DROPBOX_DIR = '/path/to/lobber/dropbox'

# Make this unique, and don't share it with anybody.
SECRET_KEY = 'secret'

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',      # For the Permission model.
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
    'tagging',
    'lobber.extensions',
    'lobber.userprofile',
    'lobber.share',
    'lobber.links',
    'lobber.tracker',
    'lobber.auth'
)

If you are using Django 1.3 (standard from pip) then you need to change your database settings to:

settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'lobber'
        'USER': 'lobber'
        'HOST': 'database_server'
        'PORT': 'database_port'
    }
}

Synchronize the database.

./dev-django-admin.sh syncdb

Setup Orbited by creating /etc/orbited.cfg:

orbited.cfg
[listen]
http://:9001
stomp://:61613

[access]
* -> localhost:61613

[static]

[global]
session.ping_interval = 300
user=www-data

[logging]
debug=STDERR,debug.log
info=STDERR,info.log
access=STDERR,info.log
warn=STDERR,error.log
error=STDERR,error.log

#Don't enable debug by default
enabled.default=info,access,warn,error

and make sure that orbited is started like this automatically at boot:

echo "orbited -c /etc/orbited.cfg" >> /etc/rc.local

Then start orbited:

orbited -c /etc/orbited.cfg &

Activate some Apache modules:

a2enmod shib2
a2enmod headers
a2enmod rewrite
a2enmod proxy
a2enmod proxy_http

Restart Apache

/etc/init.d/apache2 restart

Edit lobber/src/lobber.wsgi:

lobber.wsgi
sys.path.append('/path/to/lobber/src')

Create /etc/apache2/conf.d/lobber:

lobber
WSGIPythonPath "/path/to/lobber:/path/to/lobber/src"
WSGIPythonHome "/path/to/lobber/src/env"
WSGIRestrictStdout Off
WSGIScriptAlias / /path/to/lobber/src/lobber.wsgi

Edit /etc/apache2/sites-available/default-ssl:

default
Alias /admin-media /path/to/lobber/admin-media
Alias /site-media /path/to/lobber/site-media

Missing documentation

Documentation on how to set up Apache to handle https is missing.

Perhaps useful links for Apache SSL configuration: http://www.tc.umn.edu/~brams006/selfsign.html http://www.tc.umn.edu/~brams006/selfsign_ubuntu.html

Usual problems:

  • /path/to/lobber/logs/web.log is not writable by www-data (apache user).
  • /path/to/lobber/torrents/ is not writable by www-data (apache user).
  • /path/to/lobber/dropbox/ is not writable by www-data (apache user).
  • /path/to/lobber/db/ (if you are using sqlite) is not writable by www-data (apache user).

Missing documentation

Documentation on how to set up federated login using mod_shib2 should be added or linked to.

Set up cron jobs for expiring old torrents, keys and peers.

PATH=/usr/bin:/usr/sbin:/path/to/lobber/src/env/bin
# m h dom mon dow command
*/5 * * * * cd /path/to/lobber/src/ && ./dev-django-admin.sh expire_peers 5
0 0 * * * cd /path/to/lobber/src/ && ./dev-django-admin.sh expire_torrents
5 0 * * * cd /path/to/lobber/src/ && ./dev-django-admin.sh expire_keys

To be able to accept file uploads in the Lobber web application you need to install a Lobber storage node on the web application and tracker server.

Storage node

See Running a storage node

Note that the web application and tracker server needs a storage node nowadays – that's how we do file upload.

Database server

apt-get install postgresql-client-8.4

Look at the official Django database documentation.

Setting up your own sandbox

  1. apt-get install python-virtualenv
  2. virtualenv /mina/envs/lobber
  3. . /mina/envs/lobber/bin/activate
  4. pip install django django-extensions django-tagging orbited uuid django-evolution stomp.py werkzeug psycopg2
  5. git clone git@git.nordu.net:lobber.git (alt. git pull)
  6. cd lobber
  7. git checkout <branch>
  8. mkdir db
  9. mkdir logs
  10. cd src
  11. ./dev-django-admin.sh syncdb
  12. ln -s /mina/envs/lobber env
  13. ln -s env/lib/python2.6/site-packages/django/contrib/admin/media admin-media
  14. Edit paths in settings.py
  15. ./dev-django-admin.sh runserver_plus
  • No labels