SnopticをApacheで動かしてみた。

気になってはいたが動かし方が分からず、しばらく忘れてたソフトを動かしてみた。

Gmailをノート風に、がコンセプトの「Synoptic」

前準備

いろいろと周辺ライブラリが必要なのでeasy_installでいっぺんにインストールする。

easy_install synoptic

easy_installでインストールしておいてなんだけど、

http://pypi.python.org/pypi/synoptic

から、tar.gzでソースもダウンロードする。

単独起動

ダウンロードしたソースを展開してsampleを使用する。

synoptic-0.91.5/doc/sample.wsgi

をsample.pyとかに変名してデータベースのパスを変えて実行するとlocalhost:7331で起動する。

困ったことに他のマシンから接続できなかった。

Apacheで起動

Apacheで起動する方法。Apacheのことをよくわかってないから大変!

手順は以下。

  • Apacheのインストール
  • アプリケーションの配置
  • mod_wsgiのインストール
  • httpd.confの調整
  • Apacheの起動
Apacheのインストール

インストーラダウンロードしてきて実行した。たぶん一般的なインストール方法だと思う。

アプリケーションの配置

synopticのアーカイブに含まれていたsample.wsgiをsynoptic_wsgi.pyに変名してc:\temp\pythonにおいた。

データベースをc:\temp\pythonに作りたいので以下のように設定。

DATABASE_FILE = os.path.join(os.path.abspath(os.path.dirname(__file__)),'synoptics.sqlite3')
DATABASE_URL = 'sqlite:///%s' % DATABASE_FILE
URL_PREFIX = '/'
ADD_STARTUP_CONTENT = False

単独起動の時だったけど、ADD_STARTUP_CONTENT=Trueにしてみたら起動後に初期デー
タが増殖して大変なことになったので初期データを投入したい場合は手動で投入する。

正確なコマンドを忘れてしまったけど以下みたいな感じだったと思う。

from synoptic import Application
from synoptic import DBSessionInjector
from synoptic import import_file, get_static_file
app = Application(URL_PREFIX)
app = DBSessionInjector(app, DATABASE_URL)
import_file(dbinj.sessionmaker(), get_static_file("initial-content.txt")[0])

sample.wsgiの中身をトレースしただけ。

mod_wsgiのインストール

http://code.google.com/p/modwsgi/
からwindows用のmod_wsgi.soをダウンロードしてきてApacheのmodulesに配置。

httpd.confの調整

以下を追記した。

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias /wsgi "C:/temp/python/synoptic_wsgi.py"

    Order allow,deny
    Allow from all

Apacheを起動

ここまでで動作した。

IEではうまく動作しなかった。Chromeでもショートカットキーの動作がちょっと変。

さくさく動いて手軽にメモがとれていい感じだと思う。日本語検索できないのはちょっと残念。

2009-01-14追記

python2.5を使用している場合にはsqliteのバージョンが合わないのでpysqliteを追加でインストールする必要がある。