我使用以下组合来使这变得相当轻松:
Cake https://github.com/ninjudd/cake(包括部署命令)
由 Lau Jensen 开发的用于网络项目的 Cake 模板。
Vagrant http://vagrantup.com/%20Vagrant(Ruby VM(Virtualbox)管理工具,依赖Chef或Puppet)
VPS(来自 Slicehost)
关键部分是Lau制作的webdev模板。 webdev 文件夹应放置在~/.cake/templates
。要基于它创建一个新项目,请使用:
cake new webdev *projectname*
请注意,该模板包括 log4j 和 Java 邮件,如果不需要,可以/应该排除它们。它还假设您正在使用 Enlive 和 Mustache,但如果这是您的毒药,则将其更改为 Compojure/Hiccup 是微不足道的。
该模板负责在开发过程中从 jetty 为应用程序提供服务(您只需评估 server.clj),并在 Tomcat 下运行时充当战争。如果在 Tomcat 下作为 ROOT.war 部署到服务器,则路由保持不变。所有静态文件应位于资源目录中。 Jetty 将从那里为他们提供服务(感谢 Ring 文件中间件)。在生产中,它们被移动到 web 应用程序的根目录,并由 Tomcat 从那里提供服务(web.xml 负责处理)。
devbox 文件夹包含创建安装了 Tomcat 的 Virtualbox VM 所需的 Vagrantfile 和说明书。我使用 cake 将 .war 文件部署到/home/vagrant
dir(这是由project.clj中的开发上下文的定义控制的)。 .war 文件被符号链接到 Tomcat 的 webapps 目录(/var/lib/tomcat6/webapps
)作为ROOT.war。有关如何使用 Vagrant 的更多信息,请参阅 Vagrantsite http://vagrantup.com/.
This gist https://gist.github.com/898524显示如何调整 project.clj 以使用 cake 部署命令的示例。该示例创建了两个上下文 @dev 和 @prod,您可以使用以下命令进行部署:
cake deploy @dev / cake delpoy @prod
我收集了 Cake webdev 模板和 Vagrant 文件.