我需要一种简单的方法来允许最终用户从同一个盒子上的 apache 提供的网页重新启动 tomcat。
我们正在努力让我们的 QC 部门能够轻松地将新版本的 webapp 部署到 apache。我们正在使用 samba,但我们需要一种简单的方法让他们在部署之前/之后停止/启动 tomcat 服务器。
这仅适用于内部质量控制箱。有没有现成的解决方案?或者编写一些快速的 php 应用程序来处理这个会更容易吗?
就像 Skip 说的那样,但不要以 root 身份运行 CGI。相反,让 CGI 调用 sudo。您可以授予 Web 服务器/etc/init.d/tomcat restart
仅在 sudoers 文件中运行的权限。
我实际上已经在工作中做到了这一点。CGI 的相关部分如下所示:
#!/usr/bin/perl
use CGI;
use IPC::Run3;
my $CGI = new CGI;
my $output;
if (defined $CGI->param('go') && 'restart' eq $CGI->param('go')) {
run3 [ qw(sudo /etc/init.d/tomcat5.5 restart) ], \undef, \$output, \$output;
}
print <<EOF
Content-type: text/html
Blah, blah, blah, HTML form, displays $output at some point.
EOF
这是来自 /etc/sudoers 的示例行(当然,使用 visudo 进行编辑):
ALL ALL=(root) NOPASSWD: /etc/init.d/tomcat5.5 restart
这允许每个人重新启动tomcat。如果您愿意,您可以将其限制为 Apache。
我会使用 CGI 脚本。将其设置为以 root 身份运行并调用“/etc/init.d/tomcat restart”(或者在您的机器上重新启动 tomcat)。