【问题标题】:Tomcat deploy: make included scripts executableTomcat 部署:使包含的脚本可执行
【发布时间】:2012-02-12 13:08:17
【问题描述】:

我正在 Windows 7 上使用 netbeans 开发一个 Web 应用程序(用于 Tomcat)。要运行该 Web 应用程序,我需要运行一次 insall-script。

这个脚本(*.bat for windows 和 *.sh for linux 包含在我的战争文件 (WEB_INF) 中。

现在每次我部署 WAR 文件并想在 linux 上运行脚本时,我都必须调用

chmod +x install.sh

首先。

有没有办法让这个脚本默认可执行?我不想在部署后执行一些额外的命令来使脚本可执行。

为了澄清: 我对 Linux 并不陌生,我知道如何设置文件的可执行权限。那不是问题。我的问题是:我必须做什么,以便在 tomcat 部署我的 *.war 文件(解压缩它)后立即执行该脚本。如果我也使用 Linux 进行开发,我会尝试根据我的来源设置权限(也许我会在有更多空闲时间时尝试一下)。但我使用的是 Windows 和 netbeans。

是否可以设置任何属性来实现我的目标,或者是否可以使用 ant 来实现这一目标?

顺便问一下:这种方法是否存在与安全相关的问题?该脚本查找 java 可执行文件并调用基于 java 的 GUI 安装程序...

【问题讨论】:

    标签: linux tomcat ant


    【解决方案1】:

    在应用程序初始化期间更改权限,如下:

    String [] command = {"/bin/chmod","+x",full_path_to_install.sh};
    Runtime rt = Runtime.getRuntime();
    Process pr = rt.exec( command );
    pr.waitFor();
    

    允许您的应用程序在使用脚本之前设置可执行权限。在 tomcat 部署你的 war 文件之后,但在你的应用程序使用它之前,它是不可执行的。

    【讨论】:

    • 听起来不错。下周我会更仔细地研究它,因为我现在必须完成另一个项目。
    【解决方案2】:

    假设您每次都调用相同的“install.sh”,您只需设置一次执行位。此外,只需为用户设置可执行位(您提供的命令将为所有人设置)。

    chmod u+x install.sh

    【讨论】:

    • 对不起,我想你误解了我的问题。有关详细信息,请参阅我的编辑。
    • 关于为所有人设置可执行文件:您完全正确。当然,我应该只为需要/被允许执行此脚本的用户设置此权限,但我现在正在开发中;)当一切正常时,我会注意权限
    • 啊,所以您希望将 web-inf 中的 shell 脚本设置为可执行?唯一可行的方法是通过父脚本中的 chmod 命令。但是,我不得不说,我从未听说过将 shell 脚本放在 war 文件中。
    • 不幸的是,我现在没有父脚本。但可能我将不得不写一个。战争文件中的脚本的原因是为了简单。这样我就不必关心当前部署的应用程序的版本。该脚本总是合适的(而且我不必关心 CATALINA_BASE 在哪里,因为我已经在那里了......最重要的是:通过将这个脚本包含在我的战争文件中,共享应用程序变得更加容易,因为它只有一个文件。
    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 2014-11-10
    • 2011-04-27
    • 1970-01-01
    • 2019-07-20
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多