我如何以编程方式重新启动一个系统服务(而不是apache)从Linux中的Apache?

我需要简单的方法来允许最终用户从同一个框中的apache服务的网页重新启动tomcat。

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

这只会用于内部的盒子。 有没有现有的解决scheme呢? 还是会更容易写一些快速的PHP应用程序来处理这个?

Solutions Collecting From Web of "我如何以编程方式重新启动一个系统服务(而不是apache)从Linux中的Apache?"

像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)。