このBlogは移転しました。今後は aish.dev を御覧ください。

オープンソースQ&Aシステム OSQAのインストール方法

さて、 昨日紹介した オープンソースQ&Aシステム OSQAのインストール方法を解説する。

ここではUnuntu Linux 10.4 を対象に、インストール先ディレクトリは /home/osqa とした。

動作環境

Python 2.6以上

ソースの取得

まだ正式なリリースが出ていないので、SubVersionからソースを落としてこよう。

$ svn co http://svn.osqa.net/svnroot/osqa/trunk .

Pythonモジュールの取得

$ sudo apt-get install python-setuptools
$ sudo apt-get install python-django
$ sudo easy_install South django django-debug-toolbar \
	markdown html5lib python-openid

環境設定

cacheディレクトリを作成する

$ chdir /home/osqa
$ mkdir cache

settings_local.py.distファイルをコピーし、設定ファイルを作成する。

$ cp settings_local.py.dist settings_local.py

settings_local.pyファイルを、次のように編集する。ここでは、データベースとしてsqlite3を使用する。

# encoding:utf-8

...

DATABASE_NAME = '/home/osqa/osqa.db'  # Or path to database file if using sqlite3.
DATABASE_USER = ''               # Not used with sqlite3.
DATABASE_PASSWORD = ''               # Not used with sqlite3.
DATABASE_ENGINE = 'sqlite3'  #mysql, etc
DATABASE_HOST = ''
DATABASE_PORT = ''

...

APP_URL = 'http://my.host.name/'

#LOCALIZATIONS
TIME_ZONE = 'Asia/Tokyo'

#OTHER SETTINGS

USE_I18N = True
LANGUAGE_CODE = 'ja'

DJANGO_VERSION = 1.2

...

データベース設定

データベースを初期化する。

$ sudo python manage.py syncdb --all

この時、

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no):

というメッセージが表示されるが、ここでは No を選択する。ここではスーパユーザは登録せず、アプリケーション起動後、最初に登録したユーザがスーパユーザとなる。

次に、データベースにデータを登録する。

$ sudo python manage.py migrate forum --fake

OSQAを起動する

$ django-admin runserver --settings=settings

以上で、ブラウザから http://ホスト名:8000 でOSQAにアクセスできる。

MySQLを使う

MySQLを使用する場合は、まずMySQL関連のパッケージをインストールする。

$ sudo apt-get install mysql-server mysql-client python-mysqldb

次に、MySQLにユーザとデータベースを作成する。

sudo mysql -u root -p
Enter password:
mysql> CREATE USER 'osqa'@'localhost' IDENTIFIED BY 'your_osqa_password';
mysql> CREATE DATABASE osqa DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci;
mysql> GRANT ALL ON osqa.* to 'osqa'@'localhost';

settings_local.pyファイルを、次のように編集する。

DATABASE_NAME = 'osqa'
DATABASE_USER = 'osqa'
DATABASE_PASSWORD = 'パスワード'
DATABASE_ENGINE = 'mysql'

SQLiteの場合と同様に、データベースを初期設定する。

$ sudo python manage.py syncdb --all
$ sudo python manage.py migrate forum --fake

Apache+wsgiで接続する

Apache経由で接続する例として、mod_wsgiでの接続を紹介する。

まず、mod_wsgiモジュールをインストールする

$ sudo apt-get install libapache2-mod-wsgi

osqa.wsgi ファイルを /home/osqa に作成する。

import os, sys
sys.path.append('/home')
sys.path.append('/home/osqa')
os.environ['DJANGO_SETTINGS_MODULE'] = 'osqa.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Apacheの設定ファイル osqa.conf ファイルを /home/osqa に作成する。

WSGISocketPrefix /var/run/apache2

<VirtualHost *:80>
	ServerAdmin forum@example.com
	DocumentRoot /home/osqa/
	ServerName example.com

	WSGIDaemonProcess OSQA
	WSGIProcessGroup OSQA

	# スタティックファイルはApacheから直接アクセス
	Alias /m/ "/home/osqa/osqa-server/forum/skins/"
        <Directory "/home/osqa/forum/skins">
                Order allow,deny
                Allow from all
        </Directory>
	Alias /upfiles/ "/home/osqa/forum/upfiles/"
	<Directory "/home/osqa/forum/upfiles">
		Order deny,allow
		Allow from all
	</Directory>

	#this is your wsgi script described in the prev section
	WSGIScriptAlias / /home/osqa/osqa.wsgi

	CustomLog /var/log/apache2/osqa.access.log common
	ErrorLog /var/log/apache2/osqa.error.log
</VirtualHost>

osqa.confを、/etc/apache2/sites-enabled/に置く。

$ sudo ln -s /home/osqa/osqa.conf /etc/apache2/sites-enabled/osqa.conf

/home/osqaディレクトリを、Apacheから書き込み可能にする。

$ sudo chmod -R g+rw cache
$ sudo chmod -R g+rw forum/upfiles
$ sudo chmod -R g+rw log
$ sudo chown -R www-data *

Apacheを再起動する

$ sudo service apache2 restart