2013年3月12日火曜日

マイクロブログStatusNetを立ち上げ

Twitterのようなメッセージと掲示板の合体したような仕組みをマイクロブログと呼ぶようだが、 オープンソースのマイクロブログのサーバーの一つにStatusNetというものがある。 TwitterというよりはYammerに近い感じであるが、今回Windows上に環境構築をしたのでそのメモ。

他にもオープンソースの有名どころとしてはSharetronixというのがありモバイル対応や機能が豊富そうであるが、ビジネスユースで使いにくそうな感じだったので今回はパス。

StatusNetはPHP+MySQLのWebアプリとして動作するため以下のものをセットアップする。 64bitのマシンを使っているので無謀にも64bitバイナリで揃えてみた。 (一応リンクを貼っておくが消える可能性もあるのでご注意)

インストール

ApacheとMySQLはインストーラーをつかいデフォルトの設定でインストールした。 PHPは展開し C:\Program Files\php-5.3.2-Win32-VC9-x64に移動。 StatusNetは展開してApacheのhtdocsフォルダ以下にstatusnetというフォルダとして配置した。

Apache設定

PHPを使えるようにする一般的な設定をすればよいと思う。 参考までにhttpd.confの以下を変更しセットアップした。 普通のやり方とちょっと違う点としては、一般的にはphp.iniはC:\Windowsに置くことが多いようだが、この環境ではPHPインストール先に置くこととした。
# LoadModuleを追加
LoadModule php5_module "C:/Program Files/php-5.3.2-Win32-VC9-x64/php5apache2_2.dll"
LoadModule php5_module "C:/Program Files/php-5.3.2-Win32-VC9-x64/php5ts.dll"

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">
    ...
    # .htaccessを使えるようオーバーライドを許可しておく
    AllowOverride All
    ...
</Directory>

# index.phpを追加
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

# 拡張子.phpのmime type追加
<IfModule mime_module>
    ...

    AddType application/x-httpd-php .php
</IfModule>

# PHP INIを置くフォルダ。
PHPIniDir "C:/Program Files/php-5.3.2-Win32-VC9-x64"

PHPの設定

PHPを展開した先にphp.iniを作成する。同じフォルダにphp.ini-developmentがあるのでそれをコピーして以下を変更した。
output_handler = mb_output_handler

; エラーレベル設定
error_reporting = E_ALL & ~E_NOTICE

default_charset = "UTF-8"

; includeのパス
include_path = ".;c:\Program Files\php-5.3.2-Win32-VC9-x64\includes"

; ApacheのDocumentRoot
doc_root = "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"

; extension のパス
extension_dir = "C:\Program Files\php-5.3.2-Win32-VC9-x64\ext"

; 有効にするextension
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysqli.dll

; mbstring関連設定
mbstring.language = Japanese
mbstring.internal_encoding = utf-8
mbstring.http_input = auto
mbstring.http_output = utf-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.func_overload = 0
エラーレベルは警告抑制のためである。既定のままだと "PHP Strict Standards: Non-static method PEAR::setErrorHandling() should not be called statically." のような警告が大量に出たため変更した。

MySQLデータベース作成

StatusNetのデータ記録用データベースを作成する。 データベース名はstatusnetとした。日本語を使いたいので文字セットはutf-8としておく。 MySQLのコンソールを立ち上げて次のコマンドで作成。
CREATE DATABASE statusnet CHARACTER SET utf8;
このデータベースのためのユーザーも作成。ユーザー名はstatusnet。パスワードはsql。
GRANT ALL PRIVILEGES ON statusnet.* TO statusnet@127.0.0.1 IDENTIFIED BY 'sql' WITH GRANT OPTION;

StatusNetの設定

展開したStatusNetのフォルダにあるhtaccess.sampleをコピーし.htaccessというファイルを作成する。 Windowsのエクスプローラーからは名前なしのファイルが作れないのでコマンドプロンプトからmoveコマンドなどでやるとよい。 このファイルの内容を一か所書き換える。以下の /mublog/となっているところを /statusnet/に書き換える。これをするとFancy URLsという機能が使えるようになる。
#RewriteBase /mublog/
RewriteBase /statusnet/

StatusNetのメインの設定はWeb画面より行う。 ApacheとMySQLが起動した状態でブラウザより http://localhost/statusnet/install.phpにアクセスすると設定画面が表示される。最低限以下の項目を入力しSubmitするとデータベースにテーブルが作成されセットアップが完了する。

Site settings - Site name
サイトの名前。何でもよい。
Database settings - Hostname
データベースサーバー名。localhostだとタイムアウトしてしまったので "127.0.0.1"を指定。
Database settings - Name
データベース名 "statusnet"
Database settings - DB username
データベースユーザー名 "statusnet"
Database settings - DB password
データベースパスワード "sql"
Administrator settings - Administrator nickname
StatusNet管理者のアカウント名
Administrator settings - Administrator nickname
StatusNet管理者のパスワード

Submit後に以下のようなデータベースのエラーで止まってしまうこともあるようである。


Adding notice source data to database...
ERROR (DB Error: unknown error) for SQL 'INSERT INTO notice_source (code, name, url, created) VALUES ('adium', 'Adium', ...
どうやらStatusNet1.1.0ではテーブルのセットアップスクリプトにバグがあるようである。 statusnet\db\notice_source.sql の内容をすべてコメントアウトすることでセットアップできるようである。 コメントアウトするとこのテーブルの初期データが入らないのだが実質は問題なく使用できるようである。 (たぶん通知関連のマスタデータかなにかではないかと思う) 一度このエラーが出てしまった場合には再実行の際に別のエラーが出るようなので、DBを一旦DROPし再作成してからするのが確実である。

とりあえず、ここまでできればStatusNetが使えるようになる…はず。 おつかれさまでした。

0 件のコメント:

コメントを投稿