Как программно перезапустить системный сервис (не apache) из apache в linux? - PullRequest
5 голосов
/ 08 декабря 2008

Мне нужен простой способ разрешить конечному пользователю перезапускать tomcat с веб-страницы, обслуживаемой apache в том же окне.

Мы пытаемся упростить развертывание новой версии нашего веб-приложения для apache в нашем отделе контроля качества. Мы используем samba, но нам нужен простой способ остановить / запустить сервер Tomcat до / после развертывания.

Это будет только для внутренних блоков qc. Есть ли существующее решение для этого? или было бы проще написать несколько быстрых php-приложений для этого?

Ответы [ 2 ]

8 голосов
/ 09 декабря 2008

Как сказал Пропустить, но не запускайте CGI от имени пользователя root. Вместо этого пусть CGI вызывает sudo. Вы можете дать своему веб-серверу разрешение на запуск /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, если хотите.

0 голосов
/ 08 декабря 2008

Я бы использовал скрипт CGI. Настройте его на запуск с правами root и вызовите «/etc/init.d/tomcat restart» (или, тем не менее, перезапустите tomcat на своем компьютере).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...