Installation OSQA

Nachdem ich vor kurzem bereits freie Frage und Antwort Skripte evaluiert habe und im Anschluß auch die „Gewinner-Software“ ausführlich getestet habe, möchte ich Euch heute eine Installationsanleitung von OSQA zur Verfügung stellen. Denn leider ist OSQA ein nicht ganz einfach zu installierendes Produkt.

Ich versuche immer, meine Anleitungen Schritt-für-Schritt zu dokumentieren. Manchmal vergisst man aber doch etwas, falls Ihr auf sowas stosst, bitte Bescheid sagen und ich passe die Anleitung für die nächsten Leser an!

Installation OSQA auf Ubuntu Server

Ich habe mich also für das System OSQA entschieden. Als Vorwarnung muß an der Stelle aber angemerkt werden, das das System möglicherweise auf Shared Hosting Systemen nicht laufen wird, solange kein Python/Django Support existiert. Die Installation ohne Shell Zugriff dürfte auch problematisch werden. Von meiner Seite würde ich dringend zu einem Virtual- oder Dedicated Server raten. Die Installation wurde von mir auf einem Ubuntu Karmic Koala (9.10) Desktop Rechner getestet, sie sollte also so oder sehr ähnlich auch auf anderen Debian basierten Distributionen laufen. Desweiteren nutze ich MySQL als DBMS.

Aber jetzt genug der Worte, los gehts mit der Installation:

Installation OSQA Abhängigkeiten

Leider gibt es zum jetzigen Zeitpunkt nocht kein fertiges Download Paket von OSQA (das wird ja in letzter Zeit immer mehr zur Mode), daher müssen wir selbst Hand anlegen.

Zuerst müssen wir das GIT Repository clonen, wofür der GIT Core installiert sein:

$ sudo apt-get install git-core 

Jetzt legen wir ein Verzeichnis an und clonen das Repository:

mkdir ~/OSQA
cd ~/OSQA/
git clone git://github.com/OSQA/osqa.git

Weiter gehts mit der Installation der Abhängigkeiten. Zuerst benötigen wir die Python SetupTools, um weitere Abhängigkeiten leicht ins System zu bekommen:

sudo apt-get install python-setuptools

… das Django Framework:

sudo apt-get install python-django

… dem Datenbankmodul (ich hab mich für MySQL entschieden):

sudo easy_install mysql-python

… oder alternativ, falls Ihr lieber PostgreSql verwendet:

sudo easy_install postgresql_psycopg2

Und noch ein paar:

sudo easy_install html5lib
sudo easy_install markdown2

Vorbereitungen abgeschlossen, jetzt wollen wir das System mal ins Webroot verfrachten.

Einrichtung des Webroot für OSQA

Ich nehme hier übrigens an, das das Webroot unter /var/www/ liegt (bei Euch also von hier aus gegebenenfalls ändern).

cd /var/www/
sudo mkdir OSQA
sudo chmod a+w OSQA
cd OSQA
cp -R ~/OSQA/osqa/* .

Beim nächsten Schritt müsst Ihr Eure konkreten Benutzer- und Gruppendaten angeben, also statt „username“ Euren Benutzernamen (rausfinden z.B. mit whoami) und statt „www-data“ könnte auch z.B. „apache“ möglich sein.

sudo chown -R username:www-data .

Rechte vergeben:

chmod -R g+w log

Datenbank vorbereiten

Wie immer bei einer neuen Webapp mit DB Anschluß erstellen wir erstmal eine neue Datenbank, einen Benutzer und gewähren diesem alle Rechte auf die neue Datenbank. Am einfachsten geht das wohl über phpMyAdmin über den Reiter „Rechte“ auf der Startseite und dann „Neuen Benutzer anlegen“ + „Erstelle neue Datenbank mit gleichem Namen und gewähre alle Rechte“. Die Zugangsdaten merken, da wir die im nächsten Schritt benötigen.

Konfiguration von OSQA

Erstmal die Konfigurationsdatei erstellen:

cp settings_local.py.dist settings_local.py

… und entsprechend anpassen:

vim settings_local.py

Jo, sieht anders aus als man das von PHP gewohnt ist 😉 wir interessieren uns aber erstmal nur für die Datenbankverbindung (Werte aus dem Schritt vorher verwenden!) und ein paar andere Punkte:

  • DATABASE_NAME = ‘osqa’
  • DATABASE_USER = ‘osqa’
  • DATABASE_PASSWORD = ‘password’
  • DATABASE_HOST = ‘localhost’
  • DATABASE_ENGINE = ‘mysql’
  • TIME_ZONE = ‘Europe/Berlin’
  • FORUM_SCRIPT_ALIAS = “

Datenbank füllen

Als nächstes wollen wir also die Datenbank mit der Struktur vorfüllen:

python manage.py syncdb

Nur als Hinweis, solltet Ihr an der Stelle so einen Fehler sehen …

Traceback (most recent call last):
  File "manage.py", line 2, in <module>
    from django.core.management import execute_manager
ImportError: No module named django.core.management

… deutet das darauf hin, das Python Django nicht finden kann bzw. der PYTHONPATH nicht korrekt gesetzt ist (bitte googlen). Ihr werdet noch gefragt ob Ihr einen SuperUser anlegen wollt, das könnt erstmal mit „no“ ablehnen und nachher über die normale Webseiten Funktion „Benutzer registrieren“ nachholen (der erste registrierte Benutzer wird automatisch zum SuperUser).

Erster Start des Servers

Um jetzt zu überprüfen ob alles korrekt funktioniert, könnt Ihr den Server erstmal von der Konsole aus starten:

python manage.py runserver

Jetzt solltet Ihr im Browser unter http://127.0.0.1:8000/ die Basisversion des Open Source Question & Answer Scripts sehen. Herzlichen Glückwunsch zum ersten erfolgreichen Zwischenschritt!

Sollte der Port 8000 belegt sein, könnt Ihr den Server auch wie folgt starten und den Port selber wählen:

python manage.py runserver localhost:8001

Als nächstes wollen wir aber natürlich das ganze als normale Webapplikation im Webserver (hier Apache) laufen lassen.

Python Support für Apache einrichten

Wir haben 2 Möglichkeiten Python in Apache zu installieren:

  • mit dem WSGI Modul – libapache2-mod-wsgi
  • oder dem „klassischen Python Modul“ – libapache2-mod-python

Wir wählen das WSGI Modul (bei Interesse warum, dem Link oben folgen) und installieren es über:

sudo apt-get install libapache2-mod-wsgi

Und nun richten wir OSQA als VirtualHost ein:

sudo vim /etc/apache2/sites-available/osqa

… mit dem Inhalt:

<VirtualHost *:80>
    ServerAdmin osqa@keleo.de
    DocumentRoot /var/www/osqa
    ServerName test-osqa.com

    WSGIDaemonProcess OSQA
    WSGIProcessGroup OSQA

    CustomLog /var/log/apache2/osqa_access common
    ErrorLog /var/log/apache2/osqa_error

    Alias /m/ /var/www/osqa/forum/skins/
    Alias /upfiles/ /var/www/osqa/forum/upfiles/
    <Directory /var/www/osqa/forum/skins>
        Order deny,allow
        Allow from all
    </Directory>

    WSGIScriptAlias / /var/www/osqa/osqa.wsgi
</VirtualHost>

… diese noch verlinken:

sudo ln -s /etc/apache2/sites-available/osqa /etc/apache2/sites-enabled/osqa

Da es den Server test-osqa.com natürlich nicht gibt, tragen wir diesen noch schnell in unserer hosts Datei ein:

sudo vim /etc/hosts

Dazu eine Zeile an das Ende der Datei hinzufügen:

127.0.0.1 test-osqa.com

… und jetzt noch die Apache Config neu laden:

sudo service apache2 reload

Aber halt! Bevor Ihr jetzt http://test-osqa.com im Browser aufrufen könnt, müssen wir noch als letzen Schritt die Einstiegsdatei (vergleichbar mit der index.php) anlegen:

vim osqa.wsgi

Und folgendes reinkopieren:

import os
import sys
sys.path.insert(0,'/var/www')
sys.path.append('/var/www/osqa')
os.environ['PYTHON_EGG_CACHE'] = '/tmp/python-egg/'
os.environ['DJANGO_SETTINGS_MODULE'] = 'osqa.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Voilà, jetzt solltet Ihr unter http://test-osqa.com Eure Q&A Webseite finden!

Sollte Euch die Anleitung weitergeholfen haben, freue ich mich über Euer Feedback.