Amon2で遊びたい(実践編)
前回からの続き。amon2-setup.plからスタートです。
Amon2は6.00が入っています。
ググると過去バージョンと現在のバージョンとは動作が違うことが結構ありました。
今回は全面的に PerlのWAF,Amon2の使い方とサンプルアプリケーション - uzutaka's notes こちらの写経をしていく中での気付きを書いていきます。
amon2-setup.pl
前回、/usr/local/binに入れているので、コマンド的には
# amon2-setup.pl (プロジェクト名)
オプションにFlavorが選択出来るようですが、どんな差があるのか一旦置き。
とりあえずデフォ。
コマンドを叩くとプロジェクト名に指定した名前のディレクトリが作成されるので、以後はそちらにcdしてからの作業になる。
carton install
cpanfileが自動生成されているのでcarton installする。
前回plenvで環境を作っているので
plenv exec carton install
ということになる。
結構時間を要するのでしばし待つ。
hello world
ここまで来ると、一旦表示確認ができる。
サーバの起動コマンドは下記になる
plenv exec carton exec -- perl -Ilib script/(プロジェクト名)-server -host (awsのホスト名:5000)
plenvのcarton installを行ったので、perlコマンドを実行する時も明示的に指定する必要がある。
それと-hostで正しい名前を渡してあげないと表示確認ができなかった。
ここで数時間ハマり、amon2-setup.plを覗いてみてhost名が指定できることが判った。。。
localhostで動作させている分には困らない事なのだろうけど注意されたし。
ポート番号はデフォで5000番になるようだ。
mysql setup
いきなり感のあるDB setupだが、冒頭で紹介したblogの写経を進めていくとmysqlが必要になる。
AMIにはもちろん入っているはずも無いので、自前でsetupする必要がある。
my.cnf
とにかく動いてさえくれればいいのだけど、せっかくなので設定する。
とはいえデフォで用意されているものをコピーしてくるだけ。
デフォの設定ファイルは /usr/share/mysql/ に用意されている my-*.cnf だ。
メモリ使用量毎で選べるようになっている。
現在のインスタンスのメモリ量を見てみると・・
$ cat /proc/meminfo
MemTotal: 608292 kB
MemFree: 99044 kB
・・・以下略
600M詰んでいるがほぼ使ってしまっている状態なので64M以下で推奨される my-small.cnf を利用する
# sudo cp -ipu /etc/my.cnf /etc/my.cnf.bak # 念のためのバックアップ
# sudo cp /usr/share/mysql/my-small.cnf /etc/my.cnf
mysqld起動
起動コマンドを打ってみる
$ sudo service mysqld start
・・・。何故か起動しない。そしてエラーログにも何も出てこない?
まずはエラーの詳細を把握しないといけないのでmy.cnfに1行追加
log-error=/var/log/mysqld.log
すると、どうもmysql_install_dbがうまく動いていなかったらしい。
ということでコマンドを実行してみる
$ sudo mysql_install_db --datadir=/var/lib/mysql --user=mysql
そしてもう1度起動コマンド
$ sudo service mysqld start
Starting mysqld: [ OK ]
動いた!
DBD::mysql
Tengからmysqlに接続する部分でエラーが出る。
どうやらDBD::mysqlが無いようなので、cpanfileに
requires 'DBD::mysql';
と書いてplenv exec carton install するも、エラーで弾かれる。
エラーの内容はmysql.hを探しているが、無いよーというものだった。
これらはmysql-develを入れることで解決できた
その他
写経元と現在ではTengも書き変わっているようで、DB.pm の $self->search の結果はTeng::Iteratorになっている。
いきなりget_columnすると怒られるので $itr->next()してあげる必要がある。
一応ソースはpushした
https://github.com/harakachi/Amon2tutorial
まとめ
これでイケてるPerl環境を作りつつ、DBと連携するWebページを作るための一通りの流れができたのではないかと思う。
問題はここから先、何を作ればいいのか、なのだけど。