オルタナティブ・ブログ > Cathedral Break in Action >

エンタープライズ(企業)向けのオープンソースとか育児とかについて考えていきます。

AWS に NemakiWare を構築

»

こんにちは。以前にも書きましたが、AWS で オープンソース軽量ECM NemakiWare を構築してみてました。

  1. CouchDBインストール
  2. Javaインストール
  3. NemakiWareインストール
  4. 各種設定

で簡単に動くようになります。SSL の設定もして、 HTTPS でも動くことを確認できました。

……と、簡単とか書いてますが実は土日を棒に振るくらい盛大にハマりました。その様子を簡単にお届けします。

NemakiWare は DB にCouchDB を使っている関係上、 AWS の提供するいろいろな DB を使うことが出来ません。また、ファイルを DB にそのまま保存する形式なので、ファイルのみを S3 待避することができません。 S3 をファイルシステムとしてマウントすることも出来なくはないですが、安定性に不安があります。したがって、 CouchDB のデータファイルはそのまま ELASTIC BLOCK STORE に保存する必要があります。メインのOSが入っているボリュームはデフォルトだと 8G しかありませんし、ここをあらかじめ多めに確保したところで拡張性に不安があるので、データファイルのみを置くボリュームを追加して、そちらを参照することにしました。

ここで、ハマってしまったんですが、 CouchDB のデータファイルは、データそのものと、そのビューを構成するファイルからなるようです。こちらのビューのほうなんですが、1階層ディレクトリをはさんであるんですね。これに気づいていなくて、ボリュームを移動したときにデータファイルの Owner が一部 root になってたのです。階層の深いところにあるファイルに権限がなく、 CouchDB がアクセスできずに落ちてたわけですね。二日ほど原因究明にかかってしまいました。この CouchDB ファイルの書き込み権限がない状態で、NemakiWare を起動すると、

INFO [ektorp-idle-connection-monitor-thread-1] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load [java.util.concurrent.ScheduledFuture]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.

こんなエラーが発生して起動しません。CouchDB 自体にうまく繋がらないというエラーが伝播してこうなってるのですが、 Tomcat 側の問題だと思い込んでしまい、なかなか原因がつかめなかったんですね。 CouchDB のログを見ればすぐに気がついたのかも知れませんが、Java レベルで見ていたので、そこまで追うことを怠っていました。しかし、この手のなんどやってもエラーが変わらないというのはホント徒労感しかなくてつらいものです。

実はまだプレビューが上手く動いていないのですが、今回のクラウドの実験ではプレビュー機能は使わないので、この状態でいちおう終わりにしました。

今回、ハマったおかげで Amazon Linux  と Ubuntu 14.04 の両方で試すことになりました。どちらも問題なく動くのですが、 Amazon Linux は CouchDB を動かしている erlang のバージョンがけっこう古いのはちょっと気になります。ただ起動するだけでは問題なさそうですが、もしかしたらレプリケーションなど複雑な機能を使い始めると影響が出てくるかも知れません。CentOS があまり好きではないので Ubuntu でも試しましたが、こちらはいろいろすんなり入ります。とくにポリシーがないのであれば、 Ubuntu で NemakiWare を構築するのはいい選択だと思います。

ではまた。

Comment(0)