Description of how to install the software needed for Lobber.
Hosts
...
Hostname
...
Use
Page index
...
...
db-dev.lobber.se
...
PgSQL server
...
tracker-dev.lobber.se
...
BT Tracker
Anchor | ||||
---|---|---|---|---|
|
Common
...
sn-dev.lobber.se
...
All hosts are running Ubuntu (9.10 from day 010.04) with the following extra packages and customizations.
common to all
Code Block |
---|
apt-get install git-core git-doc ssl-cert gitpython-corevirtualenv |
Code Block |
---|
apt-get install postfix # local only configuration! |
...
Anchor | ||||
---|---|---|---|---|
|
Web application and tracker server
Install the following packages:
Code Block |
---|
apt-get install apache2 python-django apache2libapache2-mod-wsgi libapache2-mod-shib2 libpq-dev python-libtorrent \ dev python-bittorrenttwisted python-django-doc python-egenix-mxdatetime python-egenix-mxtools \ python-psycopg2 python-pycurl python-openssl postgresql-client-8.4 python-twisted \ python-setuptools python-pysqlite2 libapache2-mod-python python-django-tagging \ python-werkzeug python-django-extensions python-django-evolution deluge-common |
python-setuptools gives us easy-install which we use for installing some stuff not packaged in Debian packages:
Code Block |
---|
# easy_install orbited
# easy_install stompservice
|
Get a 3.x version of stomp.py from http://code.google.com/p/stomppy/ and install:
pip
|
If you don't want to install libpq-dev and python-dev you can install psycopg2 with apt and later symlink it to your virtual python environment.
Code Block |
---|
ln -s /usr/lib/python2.6/dist-packages/psycopg2 /path/to/lobber_env/lib/python2.6/site-packages
ln -s /usr/lib/python2.6/dist-packages/mx /path/to/lobber_env/lib/python2.6/site-packages
ln -s /usr/lib/python2.6/dist-packages/psycopg2-2.0.13.egg-info /path/to/lobber_env/lib/python2.6/site-packages
|
Orbited can not be installed in the lobber python environment because it requires python-twisted.
Code Block |
---|
pip install orbited
|
Set up a virtual python environment (virtualenv) and activate it.
Code Block |
---|
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)
Code Block |
---|
pip install django django-tagging django-form-utils stomp.py psycopg2 orbited
|
You need these if you are setting up a development sandbox:
Code Block |
---|
pip install uuid django-evolution django-extensions werkzeug django-debug-toolbar
|
Get Lobber from git.nordu.net and check out the latest stable version.
Code Block |
---|
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.
Code Block |
---|
cd /path/to/lobber/
mkdir logs
mkdir torrents
mkdir dropbox
|
Symlink the environment directory and Django admin media directory in to the src directory.
Code Block |
---|
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.
Code Block | ||
---|---|---|
| ||
BASE_DIR = '/path/to/lobber'
APP_ADDR = 'host_ip or FQDN'
BASE_UI_URL = 'https://' + APP_ADDR
TRACKER_ADDR = 'host_ip or FQDN'
ANNOUNCE_BASE_URL = 'https://' + TRACKER_ADDR
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:
Code Block | ||
---|---|---|
| ||
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'lobber',
'USER': 'lobber',
'PASSWORD': 'secret',
'HOST': 'database_server',
'PORT': 'database_port'
}
}
|
Synchronize the database.
Code Block |
---|
./dev-django-admin.sh syncdb
|
Setup Orbited by creating Create /etc/orbited.cfg
:
Code Block | ||
---|---|---|
| ||
[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:
Code Block |
---|
echo "orbited -c |
...
/etc/orbited.cfg |
...
" >> /etc/rc.local |
...
|
Then start orbited:
Code Block |
---|
orbited -c |
...
/etc/orbited.cfg & |
Activate some Apache modules:
Code Block |
---|
# a2enmod shib2 # a2enmod headers # a2enmod rewrite # a2enmod proxy # a2enmod proxy_http |
Restart Apache
Code Block |
---|
/etc/init.d/apache2 restart
|
Edit lobber/src/lobber.wsgi:
Code Block | ||
---|---|---|
| ||
sys.path.append('/path/to/lobber/src')
|
Create /etc/apache2/conf.d/lobber:
Code Block | ||
---|---|---|
| ||
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:
Code Block | ||
---|---|---|
| ||
Alias /admin-media /path/to/lobber/admin-media
Alias /site-media /path/to/lobber/site-media
|
Documentation on how to set up Apache to handle https can be found here:
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).
Info | ||
---|---|---|
| ||
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.
Code Block |
---|
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 /dev/null 2>&1 0 0 * * * cd /path/..to/lobber/src/ && ./dev-django-admin.sh expire_torrents >/dev/null 2>&1 5 0 * * * cd /path/..to/lobber/src/ && ./dev-django-admin.sh expire_keys >/dev/null 2>&1 |
Finally, make sure that Lobber can send email. This is done via STOMP messages to a twisted. Run this (in the src directory):
Code Block |
---|
# env PYTHONPATH=`pwd`:$PYTHONPATH twistd -y sendmail.tac
|
|
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.
Anchor | ||||
---|---|---|---|---|
|
Storage node
...
See Running a storage node (bud light)
Note that app-dev is the web application and tracker server needs a storage node too nowadays – that's how we do file upload.
...
Anchor | ||||
---|---|---|---|---|
|
Database server
Code Block |
---|
apt-get install postgresql-client-8.4
|
Look at the official Django database documentation.
Anchor | ||||
---|---|---|---|---|
|
Setting up your own development sandbox
- apt-get install python-virtualenv
- virtualenv /mina/envs/lobber
- . /mina/envs/lobber/bin/activate
- pip install django django-extensions django-tagging orbited uuid django-evolution stomp.py werkzeug psycopg2
- apt-get deluge
- git clone git@git.nordu.net:lobber.git (alt. git pull)
- cd lobber
- git checkout embedded-tracker<branch>
- mkdir db
- mkdir logs
- cd src
- ./dev-django-admin.sh syncdb
- ln -s /mina/envs/lobber env
- ln -s env/lib/python2.6/site-packages/django/contrib/admin/media admin-media
- Edit paths in settings.py
- ./dev-django-admin.sh runserver_plus