Mac OS Xで #isucon2 環境(Perl)を再現してみる ※アプリケーションの起動まで
YAPC::Asia 2014やISUCON4予選の影響もあり、Mac上でISUCON2の課題を再現してみることにした。ISUCON3のファイル一式は公開されてない??
環境はMac OS X 10.9.5。
git clone
しようとしたがうまくいかなかったので、Download ZIP
でDLし、ホームディレクトリ上にZIPを展開、isucon2
とディレクトリ名を変更した。
※git clone
は会社のPC&ネット環境で行って失敗したのだけど、自宅PCで試したらすんなりDLできた。
$ cd ~/isucon2
MySQLでスキーマの設定をする。ローカルのMySQLにパスワードを設定している場合はmysql -u root -p
と-p
オプションをつける。
$ mysql -u root < webapp/config/database/isucon2.sql
必要なモジュールをインストール。./cpanm
の./
は誤字?
$ cd webapp/perl $ cpanm -n -Lextlib --installdeps .
Perlでアプリケーションを起動させるところで、DBIのconnectエラーが発生。これは、MacにインストールしてあるMySQLのユーザ名とパスワードが、配布されたISUCON2の設定ファイルと異なっていたため。
$ perl -Mlib=extlib/lib/perl5 extlib/bin/plackup -s Starman -E production --preload-app app.psgi 2014/09/29-21:46:01 Starman::Server (type Net::Server::PreFork) starting! pid(48123) Resolved [*]:5000 to [0.0.0.0]:5000, IPv4 Binding to TCP port 5000 on host 0.0.0.0 with IPv4 Setting gid to "20 20 20 401 12 61 79 80 81 98 33 100 204 398 399” DBIx::Sunny connect('database=isucon2;host=127.0.0.1;port=3306','isucon2app',...) failed: Access denied for user 'isucon2app'@'localhost' (using password: YES) at /Users/user_name/isucon2/webapp/perl/lib/Isucon2.pm line 29.
エラーが発生したのはIsucon2.pm
の29行目。
24 sub dbh { 25 my ($self) = @_; 26 $self->{_dbh} ||= do { 27 my $dbconf = $self->load_config->{database}; 28 DBIx::Sunny->connect( 29 "dbi:mysql:database=${$dbconf}{dbname};host=${$dbconf}{host};port=${$dbconf}{port}", $dbconf->{username}, $dbconf->{password}, { 30 RaiseError => 1, 31 PrintError => 0, 32 ShowErrorStatement => 1, 33 AutoInactiveDestroy => 1, 34 mysql_enable_utf8 => 1, 35 mysql_auto_reconnect => 1, 36 }, 37 ); 38 };
common.local.json
ファイルのusername
とpassword
を自分のMySQLの設定に書き換える。
$ vi /Users/a_aoyama/isucon2/webapp//config/common.local.json
http://localhost:5000/ にアクセスし、アプリケーション画面が表示されることが確認できた。
その他
会社のPCだと http://localhost:5000/ への接続に失敗する。