やりたいこと
node.jsがインストールされたAmazonLinux/EC2にyeomanを使ってMEAN(MongoDB+Express+Angular+Node)環境を作成する。
やりかた
このページのやり方を少しだけ変えて実行。以下、変えた部分だけメモ。
※後述する通りこのページのソース生成のコマンド間違っています。
- rootユーザでnodeのモジュールインストール
npm -e generator-angular generator-angular-fullstack
- rootユーザでこのページを見てMongoDBをインストール。
ハマったこと/解決策
- npmでgenerator-angular-fullstackをインストールしても、generator-angularがないと怒られたので追加した。フルスタックなはずなんだけどなぜ?
- mongodb起動時に/data/dbがないと怒られたのでmkdirで作成。ハマったわけではない。
- grunt serverでweb serverが起動したはずが、ブラウザからアクセスできない現象発生。
対処1:EC2セキュリティグループのポートの穴をあける。
対処2:Gruntfile.jsのconnectにあるhostnameを"localhost"から"0.0.0.0"に変更。
- 参考にしたページのyoコマンドのパラメータにミスがあり、サーバ側で生成されない問題が発生。正しくは、
yo angular-fullstack [app-name]
ですね。 - grunt serveで起動したところopen:serverで以下のエラーとなりました。
Warning: Command failed: /home/ec2-user/prototype/node_modules/open/vendor/xdg-o
pen: line 584: xdg-mime: command not found
xdg-mimeのコマンドが見つからない。これはxdg-utilsに含まれるのでyumでインストールしようとしたところamazonのリポジトリになかったので、このページを見てcentosのリポジトリからyumインストールできました。とりあえずOK.
- mongodを自動起動にしようと思ったが、service startできなかったので調べたところ以下のエラーが出ていました。(/var/log/mongodb/mongod.log)
2014-04-16T23:27:42.302+0000 [initandlisten] Please make at least 3379MB available in /var/lib/mongo/journal or use --smallfiles
ので、/etc/mongod.confにsmallfiles=true
をつけて起動したら問題なし。chkconfigで自動起動設定できました。