.war文件打包为JBOSS / Tomcat的RPM - 最佳实践?

时间:2012-01-27 10:51:41

标签: jboss war rpm

我计划将WAR文件打包为RPM。当前的部署过程对我们不起作用,我修复它的想法是在RHN Satellite中创建一个新的自定义频道,并通过该频道发布我的WAR文件。目前(因为我们试图赢得一些时间)我正在通过Satellite管理一些配置文件,因此配置不是一个大问题。我们不会因为很多原因将它们保留在WAR中,但这是不同的故事。

无论如何,是否有人将WAR打包为RPM?你做热部署还是强制JBOSS / Tomcat重启?是RPM安装后还是作为其一部分?您的SPEC文件是什么样的?我可以把它看作一个例子吗?您是否签入SPEC for JBOSS / Java / Oracle客户端或只安装WAR?有什么故事可讲吗?有什么大问题吗? 我应该考虑别的吗? 我可以构建RPM没问题但是我想听听使用WAR文件和JBOSS这样做的最好方法是什么(一些Tomcats仍在这里运行但是很快就会逐步淘汰 - 所以我不太担心它们)。

我确实适合任何输入。

提前致谢 亲切的问候 克里斯

2 个答案:

答案 0 :(得分:7)

我已将WAR文件及其配套配置文件打包为RPM。我的SPEC文件检查JBoss是否正在运行。如果是,则安装将退出并显示错误消息,请求在安装之前停止JBoss。

通常,杀死进程或通过RPM强制重启不是一个好主意。安装负责人应该有一个单独的程序来执行此操作。

其他考虑因素:

1。您的组织是否在同一台服务器上安装了其他安装程序?

如果是这样,您可能希望标准化服务器上​​所有安装的路径。 (例如,/ usr / local / bin / myorg /) 拥有自定义* nix用户和组也可能有所帮助,为服务器上的所有安装设置了文件属性。

2。你想要一个可重定位的RPM吗?

您是否有可能想要更改安装的默认路径?如果是这样,可重新定位的RPM将有所帮助。 在某些情况下,可重新定位的RPM可能无法正常运行,因此请在these things to consider处查看www.rpm.org

3。您想在RPM运行时备份现有部署吗?

如果是这样,您需要在SPEC文件中编写该代码。

这是我完整的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文件,抱歉。