私は Clojure/ClojureScript で遊んでいて、Web アプリケーションを書いています。リングを開発サーバーとして使用している間は、すべて問題ありません。
問題は、生産にどのコンテナーを使用する必要があるかです。生産にもリングを使用する必要がありますか? Tomcat を使用する必要がありますか? Clojure アプリケーションをデプロイするための推奨される方法はありますか? この側面に関するドキュメントをいくつか教えてもらえますか?
ありがとう!
私は Clojure/ClojureScript で遊んでいて、Web アプリケーションを書いています。リングを開発サーバーとして使用している間は、すべて問題ありません。
問題は、生産にどのコンテナーを使用する必要があるかです。生産にもリングを使用する必要がありますか? Tomcat を使用する必要がありますか? Clojure アプリケーションをデプロイするための推奨される方法はありますか? この側面に関するドキュメントをいくつか教えてもらえますか?
ありがとう!
Java と Clojure で記述された Java サーブレットのデプロイに本質的な違いはなく、Clojure のすべての Web ライブラリとフレームワークは互換性のあるサーブレットを生成するため、多くのデプロイ オプションがあります。
システムサービスから「lein run」を実行するだけで、nettyを使用してリングベースの Web アプリケーションを実行し、実稼働環境で大きな効果を発揮します。他の多くの人は、lein uberwar を使用して war ファイルを生成し、それを tomcat でホストすることを選択しています。特定のホスティング メカニズムは、展開プロセスほど重要ではないようです。すべての JavaScript ファイルは CDN から提供されます。Immutantはまた、楽しく、非常に Clojure 指向の選択肢であり、強い「エンタープライズ」な雰囲気があります。
私が最も重要だと思うのは、展開を含め、繰り返し可能なビルドを構築することです。パレットは、学習曲線が少しありますが、行くのに最適な方法です。
いくつかのオプションがあります。
1 つ目は簡単です。Heroku です。デプロイとテストに十分な無料利用枠があります。これについてはこれ以上詳しく説明しませんが、Heroku はもう使用しないことにしました。
もう 1 つの一般的なオプションは、Amazon AWS です。AWS のほとんどのアプリはlein-beanstalk を使用しています[申し訳ありませんが、ここでは引用しません]。Lein-beanstalk はかなり長い間使用されておらず、手入れが行き届いているようです。また、Compojure を維持しているのと同じ人によって維持されています。
VPSを利用しています。Nginx で Linux ビルドをセットアップし、git でデプロイします。というわけで、基本的にはサイトを作ってコンパイルして lein uberjar にしてからデプロイするという流れです。アプリで leiningen の "lien ring server" カンテーションを使用し、Maven、Tomcat、Vagrant を使用した展開など、他の多くの構成を使用できる人もいることを知っていますが、私は java -jar myApp-xxxxx をサーバーであり、うまく機能します。
ドキュメントに関する限り、具体的に Clojure の展開に関するドキュメントが不足しているようです。頭を壁にぶつけて、初めてVPSルートに行きたいかどうかを理解する必要があります. 特に Clojure に関連する問題はほとんどないことがわかりました。
開発では、次を使用します。
lein ring server
: 次に、使用する war ファイルにコンパイルします。
lein ring uberwar
: 結果の jar ファイルを Webapps ディレクトリにドロップするだけで、正常に動作します。ちなみに私はJettyを使っています