【问题标题】:How to deploy a clojure web application to Amazon EC2 (AWS Elastic Beanstalk + Leiningen + Compojure + Ring + Tomcat)如何将 clojure Web 应用程序部署到 Amazon EC2(AWS Elastic Beanstalk + Leiningen + Compojure + Ring + Tomcat)
【发布时间】:2013-06-06 09:03:06
【问题描述】:
AS 标题,
我的 IDE 是 intellij idea 12.1.4,
我需要什么工具包或插件才能
将 clojure Web 应用程序部署到 Amazon EC2?
是否有任何链接或参考或逐步解决方案?
谢谢
【问题讨论】:
标签:
deployment
clojure
amazon-ec2
compojure
amazon-elastic-beanstalk
【解决方案1】:
如果您只是在没有其他自定义基础架构的情况下部署一个 war 文件,那么直接使用 EC2 就太过分了,而弹性 beanstalk 将更轻松地满足您的需求。如果您正在发展更大的东西,并且想要一键部署,那么托盘是一个很好的工具。
Pallet 有很多功能,它是一个很棒的库,可以编写非常小的程序来完成这类事情(以及更多)。花一些时间来理解 'node' 'group' 'converge' 等的托盘概念,并给自己足够的耐心。一旦你开始使用托盘,感觉就像魔术一样。
从托盘入门指南开始。浏览 hello world 示例,该示例将确保您的 aws 帐户已设置并且密钥在需要的位置。然后,您可以编写一些 clojure 代码来创建一个实例,其中包含最新版本的 webapp。
你需要:
- 托盘 0.8+
- 托盘 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 之间)都渴望提供帮助。