278 lines
9.1 KiB
Plaintext
278 lines
9.1 KiB
Plaintext
CONTENTS
|
|
------------------
|
|
A. PREREQUISITES
|
|
B. INSTALLATION
|
|
1. Settings file
|
|
2. Database
|
|
3. Running Askbot in the development server
|
|
4. Installation under Apache/WSGI
|
|
5. Full text search
|
|
6. Email subscriptions
|
|
7. Sitemap
|
|
8. Miscellaneous
|
|
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, MySQL, Django v1.0/1.1
|
|
Note: email subscription sender job requires Django 1.1, everything else works with 1.0
|
|
Make sure mysql for python provider has been installed.
|
|
sudo easy_install mysql-python
|
|
|
|
2. Python-openid v2.2
|
|
http://openidenabled.com/python-openid/
|
|
sudo easy_install python-openid
|
|
|
|
4. html5lib
|
|
http://code.google.com/p/html5lib/
|
|
Used for HTML sanitizer
|
|
sudo easy_install html5lib
|
|
|
|
5. Markdown2
|
|
http://code.google.com/p/python-markdown2/
|
|
sudo easy_install markdown2
|
|
|
|
6. Django Debug Toolbar
|
|
http://github.com/robhudson/django-debug-toolbar/tree/master
|
|
|
|
7. djangosphinx (optional - for full text questions+answer+tag)
|
|
http://github.com/dcramer/django-sphinx/tree/master/djangosphinx
|
|
|
|
8. sphinx search engine (optional, works together with djangosphinx)
|
|
http://sphinxsearch.com/downloads.html
|
|
|
|
9. recaptcha_django
|
|
http://code.google.com/p/recaptcha-django/
|
|
|
|
10. python recaptcha module
|
|
http://code.google.com/p/recaptcha/
|
|
Notice that you will need to register with recaptcha.net and receive
|
|
recaptcha public and private keys that need to be saved in your
|
|
settings_local.py file
|
|
|
|
NOTES: django_authopenid is included into Askbot code
|
|
and is significantly modified. http://code.google.com/p/django-authopenid/
|
|
no need to install this library
|
|
|
|
B. INSTALLATION
|
|
-----------------------------------------------
|
|
0. Make sure you have all above python libraries installed.
|
|
|
|
DO NOT name the main directory 'askbot' - this name is reserved
|
|
for the future name of the app file itself.
|
|
|
|
make askbot installation server-readable on Linux command might be:
|
|
chown -R yourlogin:apache /path/to/askbot-site
|
|
|
|
directories:
|
|
/path/to/askbot-site/forum/upfiles
|
|
/path/to/askbot-site/log
|
|
must be server writable
|
|
|
|
on Linux type chmod
|
|
chmod -R g+w /path/to/askbot-site/forum/upfiles
|
|
chmod -R g+w /path/to/askbot-site/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.
|
|
|
|
Minimally required modification of settings_local.py are
|
|
DATABASE_NAME
|
|
DATABASE_USER
|
|
DATABASE_PASSWORD
|
|
DATABASE_ENGINE
|
|
|
|
If you set these up, and your database is ready (see section 2),
|
|
run:
|
|
|
|
python manage.py syncdb
|
|
python manage.py runserver `hostname -i`:8000
|
|
(choose another port number if you wish)
|
|
|
|
and askbot should be running - if you have any issues at this point (or later:)
|
|
please post them at http://askbot.org/meta
|
|
|
|
2. Database
|
|
|
|
Prepare your database by using the same database/account
|
|
configuration from above.
|
|
e.g,
|
|
create database askbot DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci;
|
|
grant all on askbot.* to 'askbot'@'localhost';
|
|
And then run "python manage.py syncdb" to synchronize your database.
|
|
|
|
3. Running Askbot 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)
|
|
|
|
you might want to have DEBUG=True in the beginning of settings.py
|
|
when using the test server
|
|
|
|
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/askbot-site') #maybe this is not necessary
|
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'askbot-site.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
|
|
<VirtualHost ...your ip...:80>
|
|
ServerAdmin forum@example.com
|
|
DocumentRoot /path/to/askbot-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 askbot
|
|
WSGIProcessGroup askbot
|
|
|
|
#force all content to be served as static files
|
|
#otherwise django will be crunching images through itself wasting time
|
|
Alias /m/ /path/to/askbot-site/forum/skins/
|
|
Alias /upfiles/ /path/to/askbot-site/forum/upfiles/
|
|
<Directory /path/to/askbot-site/forum/skins>
|
|
Order deny,allow
|
|
Allow from all
|
|
</Directory>
|
|
|
|
#this is your wsgi script described in the prev section
|
|
WSGIScriptAlias / /path/to/askbot-site/askbot.wsgi
|
|
|
|
#this will force admin interface to work only
|
|
#through https (optional)
|
|
#"nimda" is the secret spelling of "admin" ;)
|
|
<Location "/nimda">
|
|
RewriteEngine on
|
|
RewriteRule /nimda(.*)$ https://example.com/nimda$1 [L,R=301]
|
|
</Location>
|
|
CustomLog /var/log/httpd/askbot/access_log common
|
|
ErrorLog /var/log/httpd/askbot/error_log
|
|
</VirtualHost>
|
|
#(optional) run admin interface under https
|
|
<VirtualHost ..your ip..:443>
|
|
ServerAdmin forum@example.com
|
|
DocumentRoot /path/to/askbot-site
|
|
ServerName example.com
|
|
SSLEngine on
|
|
SSLCertificateFile /path/to/ssl-certificate/server.crt
|
|
SSLCertificateKeyFile /path/to/ssl-certificate/server.key
|
|
WSGIScriptAlias / /path/to/askbot-site/askbot.wsgi
|
|
CustomLog /var/log/httpd/askbot/access_log common
|
|
ErrorLog /var/log/httpd/askbot/error_log
|
|
DirectoryIndex index.html
|
|
</VirtualHost>
|
|
-------------
|
|
|
|
5. Full text search (using sphinx search)
|
|
|
|
Currently full text search works only with sphinx search engine
|
|
And builtin PostgreSQL (postgres only >= 8.3???)
|
|
|
|
5.1 Instructions for Sphinx search setup
|
|
Sphinx at this time supports only MySQL and PostgreSQL databases
|
|
to enable this, install sphinx search engine and djangosphinx
|
|
|
|
configure sphinx, sample configuration can be found in
|
|
sphinx/sphinx.conf file usually goes somewhere in /etc tree
|
|
|
|
build askbot index first time manually
|
|
|
|
% indexer --config /path/to/sphinx.conf --index askbot
|
|
|
|
setup cron job to rebuild index periodically with command
|
|
your crontab entry may be something like
|
|
|
|
0 9,15,21 * * * /usr/local/bin/indexer --config /etc/sphinx/sphinx.conf --all --rotate >/dev/null 2>&1
|
|
adjust it as necessary this one will reindex three times a day at 9am 3pm and 9pm
|
|
|
|
if your forum grows very big ( good luck with that :) you'll
|
|
need to two search indices one diff index and one main
|
|
please refer to online sphinx search documentation for the information
|
|
on the subject http://sphinxsearch.com/docs/
|
|
|
|
in settings_local.py set
|
|
USE_SPHINX_SEARCH=True
|
|
adjust other settings that have SPHINX_* prefix accordingly
|
|
remember that there must be trailing comma in parentheses for
|
|
SHPINX_SEARCH_INDICES tuple - particlarly with just one item!
|
|
|
|
in settings.py look for INSTALLED_APPS
|
|
and uncomment #'djangosphinx',
|
|
|
|
|
|
6. Email subscriptions
|
|
|
|
This function at the moment requires Django 1.1
|
|
|
|
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
|
|
|
|
7. Sitemap
|
|
Sitemap will be available at /<settings_local.FORUM_SCRIPT_ALIAS>sitemap.xml
|
|
e.g yoursite.com/forum/sitemap.xml
|
|
|
|
google will be pinged each time question, answer or
|
|
comment is saved or a question deleted
|
|
|
|
for this to be useful - do register you sitemap with Google at
|
|
https://www.google.com/webmasters/tools/
|
|
|
|
8. Miscellaneous
|
|
|
|
There are some demo scripts under sql_scripts folder,
|
|
including badges and test accounts for CNProg.com. You
|
|
don't need them to run your sample.
|
|
|
|
C. 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
|
|
"Askbot" in the msgstr lines
|
|
* skins
|