我计划将WAR文件打包为RPM。当前的部署过程对我们不起作用,我修复它的想法是在RHN Satellite中创建一个新的自定义频道,并通过该频道发布我的WAR文件。目前(因为我们试图赢得一些时间)我正在通过Satellite管理一些配置文件,因此配置不是一个大问题。我们不会因为很多原因将它们保留在WAR中,但这是不同的故事。
无论如何,是否有人将WAR打包为RPM?你做热部署还是强制JBOSS / Tomcat重启?是RPM安装后还是作为其一部分?您的SPEC文件是什么样的?我可以把它看作一个例子吗?您是否签入SPEC for JBOSS / Java / Oracle客户端或只安装WAR?有什么故事可讲吗?有什么大问题吗? 我应该考虑别的吗? 我可以构建RPM没问题但是我想听听使用WAR文件和JBOSS这样做的最好方法是什么(一些Tomcats仍在这里运行但是很快就会逐步淘汰 - 所以我不太担心它们)。
我确实适合任何输入。
提前致谢 亲切的问候 克里斯
答案 0 :(得分:7)
我已将WAR文件及其配套配置文件打包为RPM。我的SPEC文件检查JBoss是否正在运行。如果是,则安装将退出并显示错误消息,请求在安装之前停止JBoss。
通常,杀死进程或通过RPM强制重启不是一个好主意。安装负责人应该有一个单独的程序来执行此操作。
如果是这样,您可能希望标准化服务器上所有安装的路径。 (例如,/ usr / local / bin / myorg /) 拥有自定义* nix用户和组也可能有所帮助,为服务器上的所有安装设置了文件属性。
您是否有可能想要更改安装的默认路径?如果是这样,可重新定位的RPM将有所帮助。 在某些情况下,可重新定位的RPM可能无法正常运行,因此请在these things to consider处查看www.rpm.org。
如果是这样,您需要在SPEC文件中编写该代码。
Summary: Summary for my Java project
Name: Name for my Java project
Version: 2.1.2
Release: 5
Requires: jboss >= 5.1
BuildArch: noarch
Group: Internet / Applications
Prefix: /usr/local/bin
License: (C) Copyright my organization
Vendor: my organization
%description
Description for my Java project
%prep
# Check if the WAR file has been created
%install
# Copy war file to buildroot's Jboss deployment directory
# Copy config file to buildroot's Jboss config directory
%files
# Set file permissions and ownership
%pre
# Check if JBoss deployment path exists on the web server.
# If not, exit with an error.
# Check if JBoss config file path exists on the web server.
# If not, exit with an error.
# Check if custom user 'myuser' exists. If not, exit with an error.
# Check if custom group 'mygroup' exists. If not, exit with an error
# Check if JBOSS is running. If yes, exit with an error.
# Take backup of existing deployment, if needed.
%post
# Perform post-installation steps, if needed.
echo "Installation complete."
答案 1 :(得分:1)
我们计划以某种方式标准化Fedora上的Java webapp安装,但还没有。 Debian家伙创建了一个相当不错的提案http://dep.debian.net/deps/dep7,您可能应该阅读该提案以了解您需要处理的内容或多或少。
至于JBoss / Tomcat重启,我会建议反对它。将其留给系统(网络服务器)管理员。他们应该知道他们正在更新什么以及为什么。强制重启web服务器一直在寻找IMO的麻烦(特别是如果一台服务器托管多个webapps)
我会把战争放在/ usr / share / webapps-java中。然后可能让JBoss / Tomcat使用该目录。也就是说,没有spec文件,抱歉。