This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
bistro/INSTALL

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