Description of how to install the software needed for Lobber.
h1. Hosts
|| Hostname || Use ||
| * | Web application and tracker server |
| * | Database server |
| * | Storage Node |
All hosts are running Ubuntu (10.04) with the following extra packages and customizations.
h2. commonCommon to all
{code}
apt-get install git-core git-doc ssl-cert git-core virtualenv
{code}
{code}
apt-get install postfix
# local only configuration!
{code}
h2. Web application server
{code}
apt-get install apache2 libapache2-mod-wsgi libapache2-mod-shib2
{code}
You might need these:
{code}
python-egenix-mxdatetime python-egenix-mxtools python-pycurl python-openssl python-twisted
{code}
Set up a virtual python environment ([virtualenv|http://pypi.python.org/pypi/virtualenv]) and activate it.
{code}
virtualenv --no-site-packages /path/to/lobber_env
source /path/to/lobber_env/bin/activate
{code}
Install the needed python applications.
{code}
pip install django django-tagging django-form-utils orbited stomp.py psycopg2
{code}
You might need these:
{code}
pip install uuid django-evolution django-extensions werkzeug
{code}
Get Lobber from git.nordu.net and check out the latest stable version.
{code}
git clone git@git.nordu.net:lobber.git
cd lobber
git checkout bud-light
{code}
Create the a log directory and symlink the environment directory and Django admin media directory in to the lobber directory.
{code}
/path/to/lobber/
mkdir logs
cd src
ln -s /path/to/lobber_env env
ln -s env/lib/python2.6/site-packages/django/contrib/admin/media admin-media
{code}
Edit paths and other options in settings.py.
{code}
TRACKER_ADDR = 'localhost'
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 = '/dir/writable/by/apache/user/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'
)
{code}
Synchronize the database.
{code}
./dev-django-admin.sh syncdb
{code}
Setup [Orbited|http://orbited.org] by creating {{/etc/orbited.cfg}}:
{code|title=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
{code}
and make sure that orbited is started like this automatically at boot: {{echo "orbited -c /etc/orbited.cfg" >> /etc/rc.local}}
You might need:
{code}
pip install stompservice
{code}
Activate some Apache modules:
{code}
# a2enmod shib2
# a2enmod headers
# a2enmod rewrite
# a2enmod proxy
# a2enmod proxy_http
{code}
Set up cron jobs for expiring old torrents, keys and peers.
{code}
# 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
{code}
h2. Storage node
See [Running a storage node]
Note that app-dev is a storage node too nowadays -- that's how we do file upload.
h2. Database server
{code}
apt-get install postgresql-client-8.4
{code}
h2. Setting up your own sandbox
# apt-get install 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
# git clone git@git.nordu.net:lobber.git (alt. git pull)
# cd lobber
# git checkout embedded-tracker
# 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
|