Subscribed unsubscribe Subscribe Subscribe

さくらのレンタルサーバーでArk+CGIのTwitterアプリを作る練習

せっかくさくらのレンタルサーバーを借りてみてるのにあんまりマトモに使ってなくてもったいなく、
全裸bot的な何かを作ろうと思っていたのだけどmecabのインストールがうまく出来ずずっと放置していて、
でもふと調べてみたらなんかできそうだったのでやってみた、というカンジ。
http://sugyan.sakura.ne.jp/
Zenra/perl/Zenra at master · sugyan/Zenra · GitHub
さくらのレンタルサーバー環境ではmecabは標準で入っていて(0.97)、utf-8で使うためには辞書だけインストールすればできた。(何故かmecab本体を自分でソースからビルドすると文字化けしてしまうのが解決できなかった)
cgiは"~/www"ディレクトリの下に放り込むだけで実行される仕組みになっているらしい。
とりあえずArk最新版から適当なディレクトリにnewappを作成し、cgi.htaccesspsgi Appを実行するようにする。

#!/usr/bin/perl
my $path_to_app;
BEGIN {
    $path_to_app = 'path/to/app';
}

use lib ("/home/sugyan/local/lib/perl5", "$path_to_app/lib");
use Plack::Loader;
my $app = Plack::Util::load_psgi("$path_to_app/app.psgi");
Plack::Loader->auto->run($app);

local::lib環境に入れているモジュールをCGIからうまく使う方法がよくわからなかったのでこんな風に書いてみた。
上記cgiスクリプトを"~/www"直下においておき、また~/www/.htaccess

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/?app.cgi
RewriteRule ^(.*)$ app.cgi/$1 [PT,L]

とやっておくことで、一応動くようになったっぽい。まだ静的ファイルとかuri_forとかDBとか触っていないのでこの先まだハマるかも。
今のところただControllerでNet::Twitter::Liteを使って

  • get_authorization_urlでURLを発行してリダイレクト
  • callbackを受けてAPIアクセスして何かやる

というactionを作っただけ。内部で呟きを全裸にするのは以前にも作った形態素解析スクリプトをほぼそのまま利用している。せっかくだからそれだけをやるAPIでも用意しておけばいいのかしら。
もうちょっとWebアプリ作成の練習のために色々機能を作ったりしてみようと思います。root権限無しのレンサバCGIでどこまでやれるのかも試してみたい。
エラーが起こったときにログを得る方法が分からないのでどうにかしたい。