我需要一种简单的方法来允许最终用户在同一个盒子上从apache提供的网页上重新启动tomcat。如何以编程方式从linux中的apache重新启动系统服务(而不是apache)?
我们试图让我们的QC部门轻松地将我们的webapp的新版本部署到apache。我们使用samba,但是我们需要一种简单的方法让他们在部署之前/之后停止/启动tomcat服务器。
这只适用于内部qc盒。有没有现成的解决方案?或者是否会更容易编写一些快速的PHP应用程序来处理这个问题?
我需要一种简单的方法来允许最终用户在同一个盒子上从apache提供的网页上重新启动tomcat。如何以编程方式从linux中的apache重新启动系统服务(而不是apache)?
我们试图让我们的QC部门轻松地将我们的webapp的新版本部署到apache。我们使用samba,但是我们需要一种简单的方法让他们在部署之前/之后停止/启动tomcat服务器。
这只适用于内部qc盒。有没有现成的解决方案?或者是否会更容易编写一些快速的PHP应用程序来处理这个问题?
Like Skip说,但不要以root身份运行CGI。相反,让CGI调用sudo。您只能在sudoers文件中为Web服务器授予运行/etc/init.d/tomcat restart
的权限。
我已经在工作中实际做到了这一点;在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)。
这很完美。谢谢! – ScArcher2 2008-12-10 19:31:24