Web applications Tomcat应用程序的频繁更新
我有一个在Windows机器上的Tomcat7服务器上运行的应用程序。在其当前阶段,我必须经常更新和修复它。每当我需要更新应用程序时,我都会执行以下操作:Web applications Tomcat应用程序的频繁更新,web-applications,deployment,build-automation,tomcat7,Web Applications,Deployment,Build Automation,Tomcat7,我有一个在Windows机器上的Tomcat7服务器上运行的应用程序。在其当前阶段,我必须经常更新和修复它。每当我需要更新应用程序时,我都会执行以下操作: 在我的Linux开发计算机上构建一个新的war文件(使用ant) 转到Windows服务器,停止Tomcat服务 将文件从我的电脑下载到Windows电脑,并将其置于webapps下 删除webapps下的旧应用程序文件夹 删除work/Catalina/localhost下的旧应用程序文件夹(否则会缓存旧版本) 重新启动Tomcat服务 我
我相信有一种方法可以自动完成这一切。这是什么?总结:我会花一些时间建立一个构建和部署方案。这是一个前期工作,但一个通用的解决方案,可以根据需要在设置后增长 您可以使用Ant脚本完成步骤1。您首先要安装Ant,并编写一个简短的build.xml来包含以下内容。正确安装Ant后,只需切换到build.xml所在的目录并运行“Ant” 对于步骤2到步骤6,由于您需要清理目标、管理服务等,因此我将考虑生成MSI安装程序或可执行文件。我的MSI工具的第一选择是。您将看到,免费软件版本允许您在安装和卸载时控制(启动、停止、安装、卸载)Windows服务 (旁注:我们已经使用Advanced Installer Enterprise四年了。它不断改进,是一款非常高质量的产品。您不会失望的。) 您也可以通过Ant控制MSI的创建。下面是my build.xml中的一个片段,它调用两个宏来编译和部署我维护的一个产品:
<target name="myproduct-installer" depends="unzip-myproductdocs">
<build-ai-installer product.name="MyProduct" installer.path="setup/installs/MyProduct" project.file="MyProduct.aip" />
</target>
<target name="release-myproduct-installer">
<release-AI-installer product.name="MyProduct" installer.path="setup/installs/MyProduct" product.path="${some-predefined-target}" />
</target>
以下是上面使用的宏:
<macrodef name="build-ai-installer">
<attribute name="product.name" />
<attribute name="installer.path" />
<attribute name="project.file" />
<sequential>
<echo message="Making installer at @{installer.path}" />
<mkdir dir="@{installer.path}/newInstall" />
<exec dir="@{installer.path}" executable="${env.ADVANCEDINSTALLER}" failonerror="true">
<arg line="/edit @{project.file} /SetVersion ${product.version}" />
</exec>
<exec dir="@{installer.path}" executable="${env.ADVANCEDINSTALLER}" failonerror="true">
<arg line="/build @{project.file}" />
</exec>
</sequential>
</macrodef>
<macrodef name="release-AI-installer">
<attribute name="product.name" />
<attribute name="installer.path" />
<attribute name="product.path" />
<sequential>
<copy todir="@{product.path}">
<fileset dir="@{installer.path}/newInstall" />
</copy>
</sequential>
</macrodef>
可能会有帮助。总结:我会花一些时间建立一个构建和部署方案。这是一个前期工作,但一个通用的解决方案,可以根据需要在设置后增长
您可以使用Ant脚本完成步骤1。您首先要安装Ant,并编写一个简短的build.xml来包含以下内容。正确安装Ant后,只需切换到build.xml所在的目录并运行“Ant”
对于步骤2到步骤6,由于您需要清理目标、管理服务等,因此我将考虑生成MSI安装程序或可执行文件。我的MSI工具的第一选择是。您将看到,免费软件版本允许您在安装和卸载时控制(启动、停止、安装、卸载)Windows服务
(旁注:我们已经使用Advanced Installer Enterprise四年了。它不断改进,是一款非常高质量的产品。您不会失望的。)
您也可以通过Ant控制MSI的创建。下面是my build.xml中的一个片段,它调用两个宏来编译和部署我维护的一个产品:
<target name="myproduct-installer" depends="unzip-myproductdocs">
<build-ai-installer product.name="MyProduct" installer.path="setup/installs/MyProduct" project.file="MyProduct.aip" />
</target>
<target name="release-myproduct-installer">
<release-AI-installer product.name="MyProduct" installer.path="setup/installs/MyProduct" product.path="${some-predefined-target}" />
</target>
以下是上面使用的宏:
<macrodef name="build-ai-installer">
<attribute name="product.name" />
<attribute name="installer.path" />
<attribute name="project.file" />
<sequential>
<echo message="Making installer at @{installer.path}" />
<mkdir dir="@{installer.path}/newInstall" />
<exec dir="@{installer.path}" executable="${env.ADVANCEDINSTALLER}" failonerror="true">
<arg line="/edit @{project.file} /SetVersion ${product.version}" />
</exec>
<exec dir="@{installer.path}" executable="${env.ADVANCEDINSTALLER}" failonerror="true">
<arg line="/build @{project.file}" />
</exec>
</sequential>
</macrodef>
<macrodef name="release-AI-installer">
<attribute name="product.name" />
<attribute name="installer.path" />
<attribute name="product.path" />
<sequential>
<copy todir="@{product.path}">
<fileset dir="@{installer.path}/newInstall" />
</copy>
</sequential>
</macrodef>
可能会有帮助。使用(我是开发人员),您可以在短短几分钟内将webapps的自动部署配置到tomcat(请参阅)。然后,您可以通过简单的web界面按需触发部署,也可以使用kwatee ant任务或kwatee maven插件自动触发部署。哦,它也是免费的。有了(我是开发人员)您可以在短短几分钟内将webapps自动部署到tomcat(请参阅)。然后,您可以通过简单的web界面按需触发部署,也可以使用kwatee ant任务或kwatee maven插件自动触发部署。哦,它也是免费的。有很多方法
例如,一种方法是使用连续集成系统。它可以让您定期或在每次提交到源存储库之后构建war
然后是Jenkins,它可以用于在构建运行的Tomcat实例后将war部署到该实例中。它使用Tomcat的标准ManagerWebApp,因此必须在Tomcat中安装它,并设置用户和密码
请注意,不幸的是,频繁地重新部署到运行中的Tomcat很容易发现您的webapp在取消部署时泄漏内存。
Tomcat wiki上的文章都是有用的读物。自动Tomcat重启可能是一种有用的权宜之计。有很多方法可以做到这一点
例如,一种方法是使用连续集成系统。它可以让您定期或在每次提交到源存储库之后构建war
然后是Jenkins,它可以用于在构建运行的Tomcat实例后将war部署到该实例中。它使用Tomcat的标准ManagerWebApp,因此必须在Tomcat中安装它,并设置用户和密码
请注意,不幸的是,频繁地重新部署到运行中的Tomcat很容易发现您的webapp在取消部署时泄漏内存。
Tomcat wiki上的文章都是有用的读物。自动重新启动Tomcat可能是一个有用的权宜之计。这是一个优秀的软件,谢谢!但是,我没有找到实现我的确切用例的方法:*Windows服务器处于脱机状态-我没有ftp/telnet/ssh访问权。*我手动将war下载到Windows服务器。*war文件始终具有相同的名称,因此服务器端脚本可能会自动部署它,只要我知道如何构建此类脚本即可。您可以使用kwatee生成CLI脱机安装程序。将安装程序复制到windows box后,只需启动它,它就会执行所有必要的操作。您只需要修改教程的配置,将curl替换为curl.exe,您可以从curl.haxx.se下载它。这是一个非常好的软件,谢谢!但是,我没有找到实现我的确切用例的方法:*Windows服务器处于脱机状态-我没有ftp/telnet/ssh访问权。*我手动将war下载到Windows服务器。*war文件始终具有相同的名称,因此服务器端