2008-12-08 67 views
5

我需要一种简单的方法来允许最终用户在同一个盒子上从apache提供的网页上重新启动tomcat。如何以编程方式从linux中的apache重新启动系统服务(而不是apache)?

我们试图让我们的QC部门轻松地将我们的webapp的新版本部署到apache。我们使用samba,但是我们需要一种简单的方法让他们在部署之前/之后停止/启动tomcat服务器。

这只适用于内部qc盒。有没有现成的解决方案?或者是否会更容易编写一些快速的PHP应用程序来处理这个问题?

回答

8

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上。

+0

这很完美。谢谢! – ScArcher2 2008-12-10 19:31:24

0

我会使用CGI脚本。将其设置为以root身份运行并调用'/etc/init.d/tomcat restart'(或者,您可以在您的机器上重新启动tomcat)。

相关问题