Как мне программно перезапустить системную службу (не apache) из apache в Linux?

StackOverflow https://stackoverflow.com/questions/349884

Вопрос

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

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

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

Это было полезно?

Решение

Как сказал Скип, но не запускайте 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, если бы захотели.

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top