Paradigm Shift Design

ISHITOYA Kentaro's blog.

OSXでperl実行環境を作ってyanchaを動かす。

ちょっと落ち着いたのでブログ。
もう10日経ったのか...!!!って感じです。

いまさらかよ!って感じですが、自社でチャットツールを作ろうとしています。
その参考として@uzullaさんたちがhachioji.pmのメンバで作っているyanchaをインストールしようかと思って。

yancha (旧名yairc) はログの保全、リアルタイム性、モバイル端末への対応を重視した、Perlで作成されたチャットシステムです。
サーバサイドはPerl、クライアントサイトはHTML+JSで作成され、PocketIOによりWebsocketで通信しています。
https://github.com/uzulla/yancha より

で、ほぼ生粋のぺちぱーであまのじゃくな僕は、mongerのみなさんにバカにされつつも、PHPにこだわってきた個人的な恨み経緯があるので、ちょろーっと触った事があるくらいなんですよね、perl

まぁ、そういうわけで、環境構築から頑張らなきゃいけないなーって気が重かったんだけど、マジで簡単っす。
世の中進歩してるもんだ。こういう地道な改善、大変だよな。頭が下がる。

あ、ちなみにOSXでやってます。

1, perlbrew

perlbrewは、perlのrvmみたいなもんで、pythonpython_selectですかね。
PHPってそんなんあったっけ?いつから、世の中こんなに便利になったんだろう。

インストールはperlbrew + cpanminus + local::lib で環境構築あたりを見てもらったりすればいいのではないかと。 で、インストールできたら、

perlbrew list

とタイプすると、perlbrew経由でインストールしたバージョンがでます。

perlbrew switch perl-5.16.1

とすればバージョンが切り替わります。
後でインストールするライブラリとか、OSX標準のperlだとエラーになったりするので、お気をつけ。

2, cpanminus

で、cpanmperlのパッケージマネジャ。gemとかpearみたいなもんだろうと。
cpanはよりもスリムアップして使いやすくなったからcpanmというらしい。

perlモジュールのinstallにcpanmを使うをみればインストールできます。

3, Plack

PlackPSGI(Perl Server Gateway Interface)のリファレンス実装だそうです。
JavaServlet APITomcatみたいなもんかな。

で、これをインストールするには

cpanm Task::Plack

でオッケー。Lionでエラーになるとかいうのがあったけど、もうパッチあたってて大丈夫だった。

4, MySQL

まぁ、適当に入れればいいと。僕はportsでインストールしました。

port install mysql55 +server

あと、workbenchをわすれずに。 workbench動かす時は、パスの設定が重要。
How to setup MySQL Workbench to work with MacPortsが詳しい。
ただしパスが/macportsになっているので、/opt/localにすべし。

sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

すると自動起動する。

5, DBD::mysql

あと、データベースの抽象化レイヤ入れる。

cpanm DBD::mysql

で終わり。ただし、実行前に、 PATHに

/opt/local/lib/mysql55/bin/

が入っていることを確認すること。mysql_configが見当たらなくておこられる。

6, Yancha

本題。githubのリポジトリから、適当な場所に

git clone https://github.com/uzulla/yancha/

して、yanchaディレクトリに移動し

cpanm --installdeps .

すればインストール終了。簡単過ぎる…何か罠があるのでは…

あとは、yanchaディレクトリにある、start.shを動かすか

twiggy -l :3000  chat.psgi 

ってして、http://localhost:3000にブラウザでアクセスすればOKです。
Twitter使う場合とかは、config.pl読んでね。

しょかん

perlのセットアップすると、「miyagawaさん、やべぇ…」ガクブルってなるねw