如何将Clojure Web应用部署到Amazon EC2(AWS Elastic Beanstalk + Leiningen + Compojure + Ring + Tomcat)

7
作为标题, 我的IDE是IntelliJ IDEA 12.1.4, 我需要什么工具包或插件才能将Clojure Web应用程序部署到Amazon EC2?
是否有任何链接、参考资料或逐步解决方案? 谢谢。

2
你可能想看一下Pallet,它支持AWS EC2。 “Pallet是一个平台,用于在云中、服务器机架上或直接在虚拟机上进行基础设施的敏捷和程序化自动化。” - juan.facorro
另外,您还需要查看 https://github.com/weavejester/lein-beanstalk。这是一个很棒的库,如果您正在使用 AWS Elastic Beanstalk,则可以为您提供一键部署过程。 - hsestupin
1个回答

13
如果您只是部署一个没有其他定制基础设施的war文件,那么直接使用EC2会过度复杂,而elastic beanstalk可以更轻松地满足您的需求。如果您想要发展成规模更大的项目,并且希望进行一键式部署,则pallet是一个很好的工具。
Pallet有很多内容,是用于编写非常小的程序以执行此类任务(以及更多)的优秀库。花些时间去了解“节点”、“群组”、“收敛”等概念,并给自己充分的耐心。一旦开始使用pallet,它会让你感到像魔法一样。
入门的起点是pallet入门指南。通过“hello world”示例,确保已设置好您的aws账户并将密钥放在正确位置。然后,您可以编写一些clojure代码,创建带有最新版本webapp的实例。
您需要:
- pallet 0.8+ - pallet java箱 - 安装java并复制war文件的群组规范。 - pallet lein插件很好,但不是必需的。 - 需要很多耐心才能使事情运行起来。
用于此的群组规范的大致轮廓如下:
(def java-server
  (java/server-spec
   {:vendor :oracle
    :components #{:jdk}
    :version [7]})) 

(def webserver
 (node-spec
   :image {:os-family :ubuntu} 
   :hardware {:min-cores 1 :min-ram (* 2 1024)}
   :phases {:configure
            (plan-fn
               (package-manager :update)
               (package "tomcat7")
            (remote-file "/var/lib/tomcat7/webapps/myapp.war"
               :local-file "target/myApp.war"
               :owner "tomcat7"
               :group "tomcat7"
               :mode 755))

(def web-group
 (group-spec
   "my-websertvers"
   webserver
   :extends [java-server]))

接着,您将使用web-group调用converge来创建或更新您的服务器。

同时,请登录Freenode上的#pallet频道,那里有友好的人(包括本人,在美国西部时间10:00至18:00之间)热情地提供帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接