CONTENTS
------------------
A. PREREQUISITES
B. INSTALLATION
   1. Settings file
   2. Database
   3. Running OSQA in the development server
   4. Installation under Apache/WSGI
   5. Email subscriptions
C. CONFIGURATION PARAMETERS (settings_local.py)
D. CUSTOMIZATION
A. PREREQUISITES
-----------------------------------------------
0. We recommend you to use python-setuptools to install pre-requirement libraries.
If you haven't installed it, please try to install it first.
e.g, sudo apt-get install python-setuptools
1. Python2.5/2.6, a rdbm (such as MySql or PostgreSql), Django v1.0/1.1
Note: email subscription sender job requires Django 1.1, everything else works with 1.0
Make sure you have the necessary support for python to communicate with your rdbm.
sudo easy_install mysql-python (for MySql)
sudo easy_install postgresql_psycopg2 (for PostgreSql)
2. html5lib
http://code.google.com/p/html5lib/
Used for HTML sanitizer
sudo easy_install html5lib
3. Markdown2
http://code.google.com/p/python-markdown2/
sudo easy_install markdown2
4. Optional, but highly recommended, you may want to install south from http://south.aeracode.org/ , it will make upgrades a lot easier.
5. Also optionally you may want to install Django Debug Toolbar for debugging.
This is not required and OSQA will just ignore it if you don't have it.
http://github.com/robhudson/django-debug-toolbar/tree/master
6. Depending on which modules you decide to enable (see bellow for more info on modules),
you may need to install some aditional dependencies. Here's a list of the dependencies of each bundled module if any:
    a) openidauth, depends on Python-openid
       http://openidenabled.com/python-openid/
    b) sphinxfulltext, depends on djangosphinx, and obviously you'll have to install the sphinx search engine
       http://sphinxsearch.com/downloads.html
       http://github.com/dcramer/django-sphinx/tree/master/djangosphinx
B. INSTALLATION
-----------------------------------------------
0. Make sure you have all above python libraries installed.
   make osqa installation server-readable on Linux command might be:
   chown -R yourlogin:apache /path/to/OSQA
   directories templates/upfiles and log must be server writable
   on Linux type chmod
   chmod -R g+w /path/to/OSQA/upfiles
   chmod -R g+w /path/to/log
   above it is assumed that webserver runs under group named "apache"
1. Settings file
Copy settings_local.py.dist to settings_local.py and
update all your settings. Check settings.py and update
it as well if necessory.
Section C explains configuration paramaters.
1b. Modules
Decide which modules you want to DISABLE. Each module adds a specific piece of functionality to OSQA, and
by default, all are enabled, you have to disable the ones you want. If any module doesn't meet the required dependencies it just
won't load.
Currently bundled modules are:
    localauth - provides local authentication and registration on your site, disable this if you want only external login
                through any external provider
    openidauth - adds support for open id on osqa and adds some openid providers to the signin page
    oauthauth - adds support for oauth authentication on osqa and adds twitter as a signin provider on the signin page
    facebookauth - adds facebook as an authentication provider
    pgfulltext - adds support to full text search functionality through postgresql if you're useing it as your rdbm
    sphinxfulltext - adds support for full text search with the sphinx search engine
                     (detailed instructions are in the module root folder)
    robotstxt - adds a robots file editable throug the admin interface
    recaptcha - adds support for recaptcha in the registration form
    default_badges - the default set of badges, others can be added or used instead
    books - don't really does anything, it's disabled by default, and you should keep it that way, you can delete it if you want to
2. Database
Prepare your database by using the same database/account
configuration from above.
e.g,
create database osqa DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci;
grant all on osqa.* to 'osqa'@'localhost';
And then run "python manage.py syncdb" to synchronize your database.
If you're using south, then run "python manage.py migrate forum 0001 --fake".
When you're prompted to create a new superuser, answer "no". Once you get your site running, create a new user through the normal
OSQA account creation process and that will be your super user.
3. Running OSQA on the development server
Run "python manage.py runserver" to startup django
development environment.
(Under Linux you can use command "python manage.py runserver `hostname -i`:8000",
where you can use any other available number for the port)
4. Installation under Apache/WSGI
4.1 Prepare wsgi script
Make a file readable by your webserver with the following content:
---------
import os
import sys
sys.path.insert(0,'/one/level/above') #insert to make sure that forum will be found
sys.path.append('/one/level/above/OSQA') #maybe this is not necessary
os.environ['DJANGO_SETTINGS_MODULE'] = 'OSQA.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
-----------
insert method is used for path because if the forum directory name
is by accident the same as some other python module
you wull see strange errors - forum won't be found even though
it's in the python path. for example using name "test" is
not a good idea - as there is a module with such name
4.2 Configure webserver
Settings below are not perfect but may be a good starting point
---------
WSGISocketPrefix /path/to/socket/sock #must be readable and writable by apache
WSGIPythonHome /usr/local #must be readable by apache
WSGIPythonEggs /var/python/eggs #must be readable and writable by apache
#NOTE: all urs below will need to be adjusted if
#settings.FORUM_SCRIPT_ALIAS !='' (e.g. = 'forum/')
#this allows "rooting" forum at http://example.com/forum, if you like
    ServerAdmin forum@example.com
    DocumentRoot /path/to/osqa-site
    ServerName example.com
    #run mod_wsgi process for django in daemon mode
    #this allows avoiding confused timezone settings when
    #another application runs in the same virtual host
    WSGIDaemonProcess OSQA
    WSGIProcessGroup OSQA
    #force all content to be served as static files
    #otherwise django will be crunching images through itself wasting time
    Alias /m/ /path/to/osqa-site/forum/skins/
    Alias /upfiles/ /path/to/osqa-site/forum/upfiles/
    
        Order deny,allow
        Allow from all
    
    #this is your wsgi script described in the prev section
    WSGIScriptAlias / /path/to/osqa-site/osqa.wsgi
    #this will force admin interface to work only
    #through https (optional)
    #"nimda" is the secret spelling of "admin" ;)
    
        RewriteEngine on
        RewriteRule /nimda(.*)$ https://example.com/nimda$1 [L,R=301]
    
    CustomLog /var/log/httpd/OSQA/access_log common
    ErrorLog /var/log/httpd/OSQA/error_log
#(optional) run admin interface under https
    ServerAdmin forum@example.com
    DocumentRoot /path/to/osqa-site
    ServerName example.com
    SSLEngine on
    SSLCertificateFile /path/to/ssl-certificate/server.crt
    SSLCertificateKeyFile /path/to/ssl-certificate/server.key
    WSGIScriptAlias / /path/to/osqa-site/osqa.wsgi
    CustomLog /var/log/httpd/OSQA/access_log common
    ErrorLog /var/log/httpd/OSQA/error_log
    DirectoryIndex index.html
-------------
5. Email subscriptions
   edit paths in the file cron/send_email_alerts
   set up a cron job to call cron/send_email_alerts once or twice a day
   subscription sender may be tested manually in shell
   by calling cron/send_email_alerts
C. CONFIGURATION PARAMETERS
Most stuff can be configured through the admin interface,
but there are some important settings that need to live in the settings files:
#all forum parameters are set in file settings_local.py
DEBUG=False #set to True to enable debug mode
LOG_FILENAME = 'osqa.log' #where logging messages should go
DATABASE_NAME = 'osqa'    # Or path to database file if using sqlite3.
DATABASE_USER = ''          # Not used with sqlite3.
DATABASE_PASSWORD = ''      # Not used with sqlite3.
DATABASE_ENGINE = 'mysql'   #mysql, etc
SERVER_EMAIL = ''
DEFAULT_FROM_EMAIL = ''
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''    #not necessary if mailserver is run on local machine
EMAIL_SUBJECT_PREFIX = '[OSQA] '
EMAIL_HOST='osqa.com'
EMAIL_PORT='25'
EMAIL_USE_TLS=False
TIME_ZONE = 'America/Tijuana'
#if you set FORUM_SCRIPT_ALIAS= 'forum/'
#then OSQA will run at url http://example.com/forum
#FORUM_SCRIPT_ALIAS cannot have leading slash, otherwise it can be set to anything
FORUM_SCRIPT_ALIAS = '' #no leading slash, default = '' empty string
LANGUAGE_CODE = 'en' #forum language (see language instructions on the wiki)
EMAIL_VALIDATION = 'off' #string - on|off
MIN_USERNAME_LENGTH = 1
EMAIL_UNIQUE = False    #if True, email addresses must be unique in all accounts
APP_URL = 'http://osqa.com' #used by email notif system and RSS
WIKI_ON = True  #if False - community wiki feature is disabled
FEEDBACK_SITE_URL = None #None or url
LOGIN_URL = '/%s%s%s' % (FORUM_SCRIPT_ALIAS,'account/','signin/')
DJANGO_VERSION = 1.1 #must be either 1.0 or 1.1
RESOURCE_REVISION=4 #increment when you update media files - clients will be forced to load new version
D. Customization
Other than settings_local.py the following will most likely need customization:
* locale/*/django.po - language files that may also contain your site-specific messages
  if you want to start with english messages file - look for words like "forum" and
  "OSQA" in the msgstr lines
* templates/header.html and templates/footer.html may contain extra links
* templates/faq.html - put answers to users frequent questions
* templates/content/style/style.css - modify style sheet to add disctinctive look to your forum