144 lines
4.1 KiB
Text
144 lines
4.1 KiB
Text
pan.do/ra - open media archive
|
|
|
|
== SETUP ==
|
|
pan.do/ra is known to work with Ubuntu 12.04, older versions of
|
|
Ubuntu or other distributions should work
|
|
if the dependencies are up to date.
|
|
|
|
To setup pan.do/ra, you need python, bazaar, pip and virtualenv
|
|
and several other python modules:
|
|
|
|
* Packages
|
|
(add pandora ppa to get all packages in the required version)
|
|
|
|
apt-get install python-software-properties
|
|
add-apt-repository ppa:j/pandora
|
|
apt-get update
|
|
|
|
(install dependencies)
|
|
apt-get install bzr git subversion mercurial \
|
|
python-setuptools python-pip python-virtualenv ipython \
|
|
python-dev python-imaging python-numpy python-psycopg2 \
|
|
python-geoip python-html5lib python-lxml \
|
|
postgresql postgresql-contrib rabbitmq-server \
|
|
ffmpeg2theora ffmpeg \
|
|
python-ox oxframe oxtimeline
|
|
|
|
* Pan.do/ra
|
|
Get code from bazzar
|
|
cd /srv/
|
|
bzr branch http://code.0x2620.org/pandora pandora
|
|
cd pandora
|
|
virtualenv --system-site-packages .
|
|
pip -E . install -r requirements.txt
|
|
|
|
cd static
|
|
bzr branch http://code.0x2620.org/oxjs
|
|
|
|
create local_settings.py and create config.jsonc in /srv/pandora/pandora
|
|
do noy copy settings.py but only add your changes to local_settings.py
|
|
(check https://wiki.0x2620.org/wiki/pandora/configuration
|
|
and use settings.py / config.jsonc / config.*.jsonc as example)
|
|
|
|
create and configure database as described below
|
|
after that
|
|
|
|
create / update static files
|
|
|
|
./manage.py update_static
|
|
./manage.py compile_pyc
|
|
|
|
* Database
|
|
We use postgresql but other databases might also work
|
|
(make sure you have the python bindings installed).
|
|
|
|
create a postgresql database
|
|
|
|
sudo -u postgres createdb -T template0 --locale=C --encoding=UTF8 -O pandora pandora
|
|
|
|
(setting locale to C is required to fix a bug in sort if set to UTF8)
|
|
|
|
now add settings to local_settings.py:
|
|
DATABASES = {
|
|
'default': {
|
|
'NAME': 'pandora',
|
|
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
|
'USER': 'pandora',
|
|
}
|
|
}
|
|
|
|
and run ./manage.py syncdb to populate the database.
|
|
|
|
Optionaly use pg_trgm to improve find speed (requires postgres 9.1 and postgresql-contrib)
|
|
|
|
echo "CREATE EXTENSION pg_trgm;" | sudo -u postgres psql pandora
|
|
./manage.py sqlfindindex | ./manage.py dbshell
|
|
echo "DB_GIN_TRGM = True" >> local_settings.py
|
|
|
|
|
|
|
|
* RabbitMQ
|
|
For background tasks RabbitMQ is required, to install rabbitmq:
|
|
|
|
sudo apt-get install rabbitmq-server
|
|
|
|
and create permissions according to BROKER_* in local_settings.py i.e.:
|
|
|
|
sudo rabbitmqctl add_user pandora box
|
|
sudo rabbitmqctl add_vhost /pandora
|
|
sudo rabbitmqctl set_permissions -p /pandora pandora ".*" ".*" ".*"
|
|
|
|
|
|
* H264
|
|
for h264 videos, you need ffmpeg with x264 and libfaac enabled,
|
|
you also need to install qt-faststart (from ffmpeg/tools)
|
|
(you can use medibuntu.org packages or compile ffmpeg yourself)
|
|
to enable h264 derivatives add "mp4" to video.formats in your config.jsonc
|
|
|
|
|
|
== Deployment ==
|
|
* Install upstart scripts
|
|
check etc/init for upstart scripts, adjust path and user and put into /etc/init
|
|
|
|
To run pan.do/ra in production, we use nginx, using apache2 is also possible.
|
|
|
|
* nginx setup
|
|
sudo apt-get install nginx
|
|
|
|
add this to local_settings.py:
|
|
XACCELREDIRECT = True
|
|
|
|
setup nginx according to etc/nginx/vhost.in
|
|
|
|
* apache2 setup
|
|
apt-get install apache2-mpm-prefork libapache2-mod-xsendfile
|
|
|
|
add this to local_settings.py:
|
|
XSENDFILE = True
|
|
|
|
setup apache according to etc/apache2/vhost.in
|
|
|
|
now you can start pandora services:
|
|
service pandora start
|
|
service pandora-tasks start
|
|
service pandora-encoding start
|
|
|
|
=== Updating ===
|
|
To update a pandora installation get the latest version from bzr by running
|
|
./update.sh
|
|
|
|
this will update pandora/oxjs/python-ox and list possible upgrades to the db
|
|
|
|
to update your database tables, use
|
|
./manage.py sqldiff -a
|
|
to check if there are changes and
|
|
./manage.py sqldiff -a | ./manage.py dbshell
|
|
to apply them.
|
|
|
|
=== Development ===
|
|
in one terminal:
|
|
./manage.py runserver
|
|
|
|
and background task in another:
|
|
./manage.py celeryd -B -Q default,encoding
|
|
|