我刚刚开始为基于Play的应用程序设置防弹夜间构建环境。到目前为止,我还没有找到关于这个主题的好教程。您能否查看我正在设置的当前解决方案?感谢。
将Play Framework设置为Jenkins服务器并创建一个作业,该作业每隔24小时从git / svn存储库创建一个分发包。
play dist
以上命令创建app-1.0.zip文件。文件被复制并解压缩到多个节点。我们正在使用负载均衡器。最终将文件解压缩到/home/play/webapp/app-1.0文件夹。
解压后我更改了symlink / home / play / webapp / app => /home/play/webapp/app-1.0并重新加载项目。这个符号链接真的需要吗?我可以在旧文件上解压缩文件吗?我真的需要解压缩项目吗?我可以创建一个jar文件并在服务器上运行吗?
play reload
最后删除了旧应用。
rm -rf /home/play/webapp/app-0.9
版本app-0.9最初是通过运行以下脚本启动的。
/etc/init.d/play start
脚本是对以下脚本的修改:
http://monocaffe.blogspot.fr/2012/09/a-play-framework-server-setup.html
基本上脚本运行以下命令,我从app-xxx.zip文件中的启动文件中找到。
exec java $* -cp "`dirname $0`/lib/*" play.core.server.NettyServer `dirname $0`
我还考虑过创建一个重载脚本,它验证播放应用程序是否正在运行,如果没有,播放应用程序就会启动,而不是重新启动。
/etc/init.d/play reload
祝你好运, 马尔
答案 0 :(得分:1)
我创建了一个python script来从Jenkins连续部署一个播放应用程序。基本上脚本的作用如下:
重启策略目前是基本的,但你可以很容易地修改脚本来实现另一个。没有更多文档,但code和configuration file是可读和评论的。
答案 1 :(得分:1)
我是您发布的博客中的人。在那篇文章中,我建议你应该把所有Play游戏放在一个位置(/ home / play / libs / current - > play-2.0.4),所以没有必要做 play dist 。在我们的例子中,我们使用播放阶段,将我们的文件单独scp到webapps / foo / 0.1-SNAPSHOT-20121011 /,然后更改符号链接当前。
解压后我更改了symlink / home / play / webapp / app => /home/play/webapp/app-1.0并重新加载项目。这个符号链接真的吗? 需要?我可以将文件解压缩到旧文件吗?
这就是我喜欢我们的设置,使用符号链接,但这只是因为我想在某种程度上保留以前的版本,特别是如果这些是来自CI。
我可以创建一个jar文件并在服务器上运行吗?
从技术上讲,你可以创建一个包含所有Play和你的依赖项(包括Netty)的可运行JAR,但这将是一个巨大的文件(只有Play deps是33MB),你失去了轻松更改正在使用的Play版本的能力(我在最近两个月内改变了三次)最后,你需要使用比Play更多的东西,因为这个选项不受支持(即http://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html)
我还考虑过创建一个重新加载脚本来验证播放 应用程序正在运行,如果没有,则启动应用程序启动,而不是 重新启动。
这是博客条目中显示的部署脚本:
#!/bin/bash
#
# Script to automate CI deployments. Simply stop all
# servers, change the "current" symlinks to the given
# target folder and finally, start all servers
#
export JAVA_HOME="/usr/lib/jvm/default-java"
play_home="/home/play"
webapps_folder="${play_home}/webapps"
apps=( "foo" "bar" "api" )
for app in ${apps[@]}; do
echo "Stopping server ${app}"
${play_home}/bin/${app} stop
echo "Regenerate current symlink of ${app}"
rm ${webapps_folder}/${app}/current
ln -s ${webapps_folder}/${app}/${1} ${webapps_folder}/${app}/current
echo "Starting server ${app}"
${play_home}/bin/${app} nohup
done
exit 0
这个脚本的想法是使用SSH从Jenkins的ANT脚本调用,或者手动调用./deploy 0.1-SNAPSHOT-20121012