update readme, dont use __PREFIX__ in apache/nginx config

This commit is contained in:
j 2012-10-30 11:23:36 +01:00
parent 134d340790
commit d658da92c8
4 changed files with 125 additions and 95 deletions

186
README
View file

@ -1,20 +1,28 @@
pan.do/ra - open media archive pan.do/ra - open media archive
for more information on pan.do/ra visit our website at https://pan.do/ra
== SETUP == == SETUP ==
pan.do/ra is known to work with Ubuntu 12.04, older versions of pan.do/ra is known to work with Ubuntu 12.04,
Ubuntu or other distributions should also work. but other distributions should also work.
The instructions below are for Ubuntu 12.04.
All commans given expect that you are root.
To setup pan.do/ra, you need python, bazaar, pip and virtualenv To run pan.do/ra you need to install and setup:
and several other python modules: python
postgres
nginx (or apache2)
additinal video packages
* Packages
(add pandora ppa to get all packages in the required version) * Installing required packages
1) add pandora ppa to get all packages in the required version
apt-get install python-software-properties apt-get install python-software-properties
add-apt-repository ppa:j/pandora add-apt-repository ppa:j/pandora
apt-get update apt-get update
(install dependencies) 2) install all required packages
apt-get install bzr git subversion mercurial \ apt-get install bzr git subversion mercurial \
python-setuptools python-pip python-virtualenv ipython \ python-setuptools python-pip python-virtualenv ipython \
python-dev python-imaging python-numpy python-psycopg2 \ python-dev python-imaging python-numpy python-psycopg2 \
@ -24,8 +32,28 @@ and several other python modules:
ffmpeg2theora ffmpeg \ ffmpeg2theora ffmpeg \
python-ox oxframe python-ox oxframe
* Pan.do/ra
Get code from bazzar * Prepare Environment
1) add pandora user and set permissions
adduser pandora --disabled-login --disabled-password
2) Setup Database
su postgres
createuser pandora
createdb -T template0 --locale=C --encoding=UTF8 -O pandora pandora
echo "CREATE EXTENSION pg_trgm;" | psql pandora
exit
3) Setup RabbitMQ
Important: "use_your_own" is a password and you have to use the same value here and below for BROKER_PASSWORD
rabbitmqctl add_user pandora use_your_own
rabbitmqctl add_vhost /pandora
rabbitmqctl set_permissions -p /pandora pandora ".*" ".*" ".*"
* Install Pan.do/ra
1) Get code from bazzar
cd /srv/ cd /srv/
bzr branch http://code.0x2620.org/pandora pandora bzr branch http://code.0x2620.org/pandora pandora
cd pandora cd pandora
@ -35,94 +63,86 @@ Get code from bazzar
cd static cd static
bzr branch http://code.0x2620.org/oxjs bzr branch http://code.0x2620.org/oxjs
create local_settings.py and create config.jsonc in /srv/pandora/pandora cd /srv
do noy copy settings.py but only add your changes to local_settings.py chown -R pandora.pandora pandora
(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 2) create local_settings.py and config.jsonc
after that
create / update static files 1) create file /srv/pandora/pandora/local_settings.py with the following content:
./manage.py collectstatic -l --noinput
./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 = { DATABASES = {
'default': { 'default': {
'NAME': 'pandora', 'NAME': 'pandora',
'ENGINE': 'django.db.backends.postgresql_psycopg2', 'ENGINE': 'django.db.backends.postgresql_psycopg2',
'USER': 'pandora', 'USER': 'pandora',
'PASSWORD': '',
} }
} }
DB_GIN_TRGM = True
BROKER_PASSWORD = "use_your_own"
and run ./manage.py syncdb to populate the database. #with apache x-sendfile or lighttpd set this to True
XSENDFILE = False
Optionaly use pg_trgm to improve find speed (requires postgres 9.1 and postgresql-contrib) #with nginx X-Accel-Redirect set this to True
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 XACCELREDIRECT = True
setup nginx according to etc/nginx/vhost.in 2) create config.jsonc
config.jsonc holds the configuration for your site.
To start you can copy /srv/pandora/pandora/config.pandora.jsonc
to /srv/pandora/pandora/config.jsonc but have a look at
https://wiki.0x2620.org/wiki/pandora/configuration and
config.0xdb.jsonc config.padma.jsonc for configuration options.
* apache2 setup 3) initialize database
su pandora
cd /srv/pandora/pandora
./manage.py syncdb --noinput
./manage.py sqlfindindex | ./manage.py dbshell
./manage.py collectstatic -l --noinput
./manage.py update_static
./manage.py compile_pyc
4) install init scripts and start daemons
cp /srv/pandora/etc/init/*.conf /etc/init/
service pandora start
service pandora-encoding start
service pandora-task start
5) Setup Webserver
a) nginx (recommended)
apt-get install nginx
cp /srv/pandora/etc/nginx/pandora /etc/nginx/sites-available/pandora
cd /etc/nginx/sites-enabled
ln -s ../sites-available/pandora
#read comments in /etc/nginx/sites-available/pandora for setting
#your hostname and other required settings
#make sure XACCELREDIRECT = True in /srv/pandora/pandora/local_settings.py
service nginx reload
b) apache2 (if you need it for other sites on the same server)
apt-get install apache2-mpm-prefork libapache2-mod-xsendfile apt-get install apache2-mpm-prefork libapache2-mod-xsendfile
a2enmod xsendfile
cp /srv/pandora/etc/apache2/pandora.conf /etc/apache2/sites-available/pandora.conf
a2ensite pandora
add this to local_settings.py: #read comments in /etc/apache2/sites-available/pandora.conf for setting
XSENDFILE = True #your hostname and other required settings
#make sure XSENDFILE = True in /srv/pandora/pandora/local_settings.py
service apache2 reload
setup apache according to etc/apache2/vhost.in
now you can start pandora services: Now you can open pandora in your browser, the first user to sign up will become admin.
service pandora start
service pandora-tasks start
service pandora-encoding start * A note about providing H.264 versions
For H.264 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 H.264 derivatives add "mp4" to video.formats in your config.jsonc
=== Updating === === Updating ===
To update a pandora installation get the latest version from bzr by running To update a pandora installation get the latest version from bzr by running
@ -131,11 +151,14 @@ To update a pandora installation get the latest version from bzr by running
this will update pandora/oxjs/python-ox and list possible upgrades to the db this will update pandora/oxjs/python-ox and list possible upgrades to the db
to update your database tables, use to update your database tables, use
su pandora
cd /srv/pandora/pandora
./manage.py sqldiff -a ./manage.py sqldiff -a
to check if there are changes and to check if there are changes and
./manage.py sqldiff -a | ./manage.py dbshell ./manage.py sqldiff -a | ./manage.py dbshell
to apply them. to apply them.
=== Development === === Development ===
in one terminal: in one terminal:
./manage.py runserver ./manage.py runserver
@ -143,3 +166,8 @@ to apply them.
and background task in another: and background task in another:
./manage.py celeryd -B -Q celery,default,encoding ./manage.py celeryd -B -Q celery,default,encoding
now you can access your local pandora instace at http://127.0.0.1:8000/
we use virtual machines for development, you can get a vm from our site
or use the script in vm/build.sh to create one.

View file

@ -1,16 +1,18 @@
<VirtualHost *:80> <VirtualHost *:80>
#ServerName pandora.YOURDOMAIN.COM
<Location /> <Location />
Options -Indexes Options -Indexes
</Location> </Location>
<Directory __PREFIX__> <Directory /srv/pandora>
Order deny,allow Order deny,allow
Allow from all Allow from all
</Directory> </Directory>
<Location /> <Location />
XSendFile on XSendFile on
XSendFilePath __PREFIX__ XSendFilePath /srv/pandora
</Location> </Location>
AddType video/webm webm AddType video/webm webm
@ -26,11 +28,10 @@
ProxyPass /data ! ProxyPass /data !
ProxyPass /.bzr ! ProxyPass /.bzr !
Alias /.bzr /srv/pandora/.bzr
Alias /.bzr __PREFIX__/.bzr Alias /static /srv/pandora/static
Alias /static __PREFIX__/static Alias /favicon.ico /srv/pandora/static/favicon.ico
Alias /favicon.ico __PREFIX__/static/favicon.ico Alias /data /srv/pandora/data
Alias /data __PREFIX__/data
ProxyPreserveHost On ProxyPreserveHost On
ProxyPass / http://127.0.0.1:2620/ ProxyPass / http://127.0.0.1:2620/

View file

@ -13,24 +13,25 @@ server {
#gzip_types text/plain text/css application/json text/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js; #gzip_types text/plain text/css application/json text/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
#gzip_buffers 16 8k; #gzip_buffers 16 8k;
#gzip_disable "MSIE [1-6]\.(?!.*SV1)"; #gzip_disable "MSIE [1-6]\.(?!.*SV1)";
#server_name pandora.YOURDOMAIN.COM;
listen 80 default; listen 80 default;
#server_name pandora.example.com;
access_log /var/log/nginx/pandora.access.log; access_log /var/log/nginx/pandora.access.log;
error_log /var/log/nginx/pandora.error.log; error_log /var/log/nginx/pandora.error.log;
location /favicon.ico { location /favicon.ico {
root __PREFIX__/static; root /srv/pandora/static;
} }
location /static/ { location /static/ {
root __PREFIX__; root /srv/pandora;
autoindex on; autoindex off;
} }
location /data/ { location /data/ {
internal; internal;
root __PREFIX__; root /srv/pandora;
} }
location / { location / {
@ -40,7 +41,7 @@ server {
proxy_read_timeout 90; #should be in sync with gunicorn timeout proxy_read_timeout 90; #should be in sync with gunicorn timeout
proxy_connect_timeout 90; #should be in sync with gunicorn timeout proxy_connect_timeout 90; #should be in sync with gunicorn timeout
if (!-f $request_filename) { if (!-f $request_filename) {
proxy_pass http://127.0.0.1:2620; proxy_pass http:/127.0.0.1:2620;
break; break;
} }
client_max_body_size 32m; client_max_body_size 32m;
@ -48,12 +49,12 @@ server {
error_page 404 /404.html; error_page 404 /404.html;
location /404.html { location /404.html {
root __PREFIX__/static/html; root /srv/pandora/static/html;
} }
# redirect server error pages to the static page /50x.html # redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html; error_page 500 502 503 504 /50x.html;
location /50x.html { location /50x.html {
root __PREFIX__/static/html; root /srv/pandora/static/html;
} }
} }

View file

@ -64,7 +64,7 @@ service pandora-tasks start
service pandora start service pandora start
#nginx #nginx
sed "s/__PREFIX__/\/srv\/pandora/g" "/srv/pandora/etc/nginx/vhost.in" > "/etc/nginx/sites-available/default" cp "/srv/pandora/etc/nginx/pandora" "/etc/nginx/sites-available/default"
service nginx restart service nginx restart
cat > /usr/local/bin/fixtime <<EOF cat > /usr/local/bin/fixtime <<EOF