.. _deployment:
================
Deploying Askbot
================
Deploying askbot (assuming that it is already installed) entails:
* collecting static media files
* setting correct file access permissions
* configuring the webserver to work with your application
This document currently explains the configuration under Apache and mod_wsgi_.
Collecting static media files
-----------------------------
Static media must be collected into a single location with a command::
python manage.py collectstatic
There are several options on where to put the static files - the simplest is
a local directory, but it is also possible to use a dedicated static files
storage or a CDN, for more information see django documentation about
serving static files.
Setting up file access permissions
----------------------------------
Webserver process must be able to write to the following locations within your project::
log/
askbot/upfiles
If you know user name or the group name under which the webserver runs,
you can make those directories writable by setting the permissons
accordingly:
For example, if you are using Linux installation of apache webserver running under
group name 'apache' you could do the following::
cd /path/to/django-project
cd .. #go one level up
chown -R yourlogin:apache django-project
chmod -R g+w django-project/askbot/upfiles
chmod -R g+w django-project/log
If your account somehow limits you from running such commands - please consult your
system administrator.
Installation under Apache/mod\_wsgi
------------------------------------
Apache/mod\_wsgi combination is the only type of deployment described in this
document at the moment. mod_wsgi_ is currently the most resource efficient
apache handler for the Python web applications.
The main wsgi script is in the file django.wsgi_
it does not need to be modified
Configure webserver
~~~~~~~~~~~~~~~~~~~~
Settings below are not perfect but may be a good starting point::
#NOTE: the directory paths used here may be adjusted
#the following two directories must be both readable and writable by apache
WSGISocketPrefix /path/to/socket/sock
WSGIPythonEggs /var/python/eggs
#the following directory must be readable by apache
WSGIPythonHome /usr/local
#NOTE: all urs below will need to be adjusted if
#settings.FORUM_SCRIPT_ALIAS is anything other than empty string (e.g. = 'forum/')
#this allows "rooting" forum at http://example.com/forum, if you like
#replace with 127.0.0.1 with real IP address
ServerAdmin you@example.com
DocumentRoot /path/to/django-project
ServerName example.come
#aliases to serve static media directly
#will probably need adjustment
Alias /static/ /path/to/django-project/static/
Alias /upfiles/ /path/to/django-project/askbot/upfiles/
Order deny,allow
Allow from all
Order deny,allow
Allow from all
#must be a distinct name within your apache configuration
WSGIDaemonProcess askbot2
WSGIProcessGroup askbot2
WSGIScriptAlias / /path/to/django-project/django.wsgi
#make all admin stuff except media go through secure connection
RewriteEngine on
RewriteRule /admin(.*)$ https://example.com/admin$1 [L,R=301]
CustomLog /var/log/httpd/askbot/access_log common
ErrorLog /var/log/httpd/askbot/error_log
LogLevel debug
#again, replace the IP address
ServerAdmin you@example.com
DocumentRoot /path/to/django-project
ServerName example.com
RewriteEngine on
RewriteRule django.wsgi(.*)$ http://example.com$1 [L,R=301]
SSLEngine on
#your SSL keys
SSLCertificateFile /etc/httpd/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/ssl.key/server.key
Alias /admin/media/ /usr/local/lib/python2.6/site-packages/django/contrib/admin/media/
WSGIScriptAlias / /path/to/django-project/django.wsgi
CustomLog /var/log/httpd/askbot/access_log common
ErrorLog /var/log/httpd/askbot/error_log
.. _mod_wsgi: http://code.google.com/p/modwsgi/
.. _django.wsgi: http://github.com/ASKBOT/askbot-devel/blob/master/askbot/setup_templates/django.wsgi